【音视频开发】第三章 FFmpeg 命令实战
文章目录
- [【音视频开发】第三章 FFmpeg 命令实战](#【音视频开发】第三章 FFmpeg 命令实战)
- [一、FFmpeg 查看帮助文档](#一、FFmpeg 查看帮助文档)
-
- [1.ffmpeg、ffplay、ffprobe 区别](#1.ffmpeg、ffplay、ffprobe 区别)
- [2.ffmpeg 命令查看帮助文档](#2.ffmpeg 命令查看帮助文档)
- [3.ffplay 命令查看帮助文档](#3.ffplay 命令查看帮助文档)
- [4.ffprobe 命令查看帮助文档](#4.ffprobe 命令查看帮助文档)
- [二、FFmpeg 音视频处理基础流程](#二、FFmpeg 音视频处理基础流程)
- [三、FFmpeg 命令分类查询](#三、FFmpeg 命令分类查询)
- [四、ffplay 命令](#四、ffplay 命令)
- [五、FFmpeg 命令](#五、FFmpeg 命令)
一、FFmpeg 查看帮助文档
1.ffmpeg、ffplay、ffprobe 区别
- ffmpeg:Hyper fast Audio and Video encoder 超快音视频编码器
- ffplay:Simple media player 简单媒体播放器
- ffprobe:Simple mutimedia streams analyzer 简单多媒体流分析器
2.ffmpeg 命令查看帮助文档
- 基本信息:ffmpeg -h
- 高级信息:ffmpeg -h long
- 所有信息:ffmpeg -h full,使用 ffmpeg -h full > ffmpeg_h_full.log,将信息打印到文件内查看
usage:
ffmpeg [options] [[infile options] -i infile] ... {[outfile options] outfile}...
3.ffplay 命令查看帮助文档
- 所有信息:ffplay -h
usage:
ffplay [options] input_file
4.ffprobe 命令查看帮助文档
- 所有信息:ffprobe -h
usage:
ffprobe [OPTIONS] [INPUT_FILE]
二、FFmpeg 音视频处理基础流程
ffmpeg -i test_1920x1080.mp4 -acodec copy -vcodec libx264 -s 1280x720 test_1280x720.flv
- 输入文件:-i test_1920x1080.mp4
- 音频处理:-acodec copy,直接拷贝,不做处理
- 帧处理:1280x720
- 视频编码:-vcodec libx264
- 输出文件:test_1280x720.flv
三、FFmpeg 命令分类查询

查看具体分类所支持的参数:
ffmpeg -h type=name
例如:
ffmpeg -h muxer=flv
ffmpeg -h filter=atempo
ffmpeg -h encoder=libx264
四、ffplay 命令
播放控制:
ffplay 命令文档:https://www.ffmpeg.org/ffplay.html
播放本地文件:
ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4
ffplay test.mp3
播放网络流:
ffplay -window-title "rtmp stream" rtmp://202.69.69.180:443/webcast/bshdlive-pc
强制解码器:
mpeg4 解码器:ffplay -vcodec mpeg4 test.mp4
h264 解码器:ffplay -vcodev h264 test.mp4
禁用音频或视频:
禁用音频:ffplay test.mp4 -an
禁用视频:ffplay test.mp4 -vn
播放 YUV 数据:
ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv
播放 RGB 数据:
ffplay -pixel_format rgb24 -video_size 320x240 -i rgb24_320x240.rgb
ffplay -pixel_format rgb24 -video_size 320x240 -framerate 5 -i rgb24_320x240.rgb
播放 PCM 数据:
ffplay -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm
简单过滤器:
ffplay -i test.mp4 -vf transpose=1
视频反转:
ffplay test.mp4 -vf hflip
ffplay test.mp4 -vf vflip
视频旋转和反转:
ffplay test.mp4 -vf hflip,transpose=1
音视频变速播放:
ffplay -i test.mp4 -af atempo=2
视频变速播放:
ffplay -i test.mp4 -vf setpts=PTS/2
音视频同时变速:
ffplay -i test.mp4 -vf setpts=PTS/2 -af atempo=2
五、FFmpeg 命令
1.参数说明
主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
-t 时间长度
音频参数:
-aframes 设置要输出的音频帧数
-b:a 音频码率
-ar 设定采样率
-ac 设定声音的 Channel 数
-acodec 设定声音编解码器
-an 不处理音频
-af 音频过滤器
视频参数:
-vframes 设置要输出的视频帧数
-b 设定视频码率
-b:v 视频码率
-r 设定帧速率
-s 设定画面的宽与高
-vn 不处理视频
-aspect 设置横纵比
-vodec 设定视频编解码器
-vf 视频过滤器
2.提取音视频数据
保留封装格式:
ffmpeg -i test.mp4 -acodec copy -vn audio.mp4
ffmpeg -i test.mp4 -vcodev copy -an video.mp4
提取视频:
保留编码格式:ffmpeg -i test.mp4 -vcodec copy -an test_copy.h264
强制格式:ffmpeg -i test.mp4 -vcodec libx264 -an test.h264
提取音频:
保留编码格式:ffmpeg -i test.mp4 -acodec copy -vn test.aac
强制格式:ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp3
3.提取像素格式
提取 YUV:
提取 3 秒数据,分辨率和源视频一致
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p yuv 420p_orig.yuv
提取 3 秒数据,分辨率转为 320x240
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv
提取 RGB:
提取 3 秒数据,分辨率转为 320x240
ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb
RGB 和 YUV 之间的转换
ffmpeg -s 320x240 -pix_fmt yuv420p -i yuv420p_320x240.yuv -pix_fmt rgb24 rgb24_320x240_2.rgb
4.提取 PCM 数据
提取 PCM:
ffmpeg -i test.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le
ffmpeg -i test.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wav
ffmpeg -i test.mp3 -ar 48000 -ac 2 -codec:a pcm_s16le out2_s16le.wav
ffmpeg -i test.mp3 -ar 48000 -ac 2 -f f32le 48000_2_f32le
ffmpeg -i test.mp4 -t 10 -vn -ar 48000 -ac 2 -f f32le 48000_2_f32le_2
5.转封装
保持编码格式:
ffmpeg -i test.mp4 -vcodec copy -acodec copy test_copy.ts
ffmpeg -i test.mp4 codec copy test_copy2.ts
改变编码格式:
ffmpeg -i test.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv
修改帧率:
ffmpeg -i test.mp4 -r 15 output.mp4
修改视频码率
ffmpeg -i test.mp4 -b:v 400k output_b.mkv
修改音频码率:
ffmpeg -i test.mp4 -b:a 192k output_ba.mp4
修改音视频码率:
ffmpeg -i test.mp4 -b:v 400k -b:a 192k output_bva.mp4
修改视频分辨率:
ffmpeg -i test.mp4 -s 480x270 output_480x270.mp4
修改音频采样率:
ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp4