FFmpeg命令行参数详解:音视频封装格式转换与参数设置
FFmpeg命令行参数详解:音视频封装格式转换与参数设置
一、音视频封装过程
音视频文件从采样到处理,再到得到原始数据帧队列,经过音视频编码生成音视频包队列,最后进行格式封装的过程如下:
封装格式参考【音视频原理】音视频“采样-编码-封装过程”和“解封装-解码-播放过程”分析(视频采集处理流程|音频采集处理流程|音视频文件解封装播放流程)博客。
二、保持编码格式转封装
1. 设置音视频编解码器参数
在FFmpeg命令中:
- 使用
-vcodec
参数设置视频编解码器 - 使用
-acodec
参数设置音频编解码器 - 使用
-codec
参数设置音视频编解码器,相当于同时设置-vcodec
和-acodec
为-codec
、-vcodec
、-acodec
参数设置copy
值,告诉FFmpeg保持原始数据流的编码格式不变,直接复制到新的容器中。
2. 设置音视频编解码器参数 - 使用vcodec
/acodec
参数
执行以下命令,将输入文件保持音频和视频的封装格式不变,输出到TS封装容器中:
ffmpeg -i input.mp4 -vcodec copy -acodec copy output.ts
TS是高清格式,全称MPEG2-TS,是一种传输流封装格式,主要用于数字广播系统。
使用ffplay
命令播放输出文件:
ffplay output.ts
3. 设置音视频编解码器参数 - 使用codec
参数
执行以下命令,将input.mp4转封装为output.ts:
ffmpeg -i input.mp4 -codec copy output.ts
使用-codec
参数可以同时设置音频编解码器和视频编解码器。
三、改变编码格式转封装 - 重新进行编码
1. 设置音视频编解码器参数 - 使用vcodec
/acodec
参数
执行以下命令,将视频使用libx265编解码器重新编码,音频使用libmp3lame编解码器重新编码:
ffmpeg -i input.mp4 -vcodec libx265 -acodec libmp3lame output.mkv
由于重新进行了编码,该命令执行时间较长。
2. 使用ffprobe
查看视频封装信息
执行以下命令查看output.mkv视频的封装信息:
ffprobe output.mkv
3. 查询可用的音视频编解码器
执行以下命令查询FFmpeg中可用的编解码器:
ffmpeg -codecs
每个编解码器前面都有编解码器的类型,包括:
- D..... = Decoding supported(支持解码)
- .E.... = Encoding supported(支持编码)
- ..V... = Video codec(视频编解码器)
- ..A... = Audio codec(音频编解码器)
- ..S... = Subtitle codec(字幕编解码器)
- ...I.. = Intra frame-only codec(内部帧编码器,每帧都独立编码,不需要参考其它帧)
- ....L. = Lossy compression(有损压缩)
- .....S = Lossless compression(无损压缩)
四、改变封装格式的视频帧率/码率/分辨率
1. 修改视频帧率
执行以下命令将输入文件的视频流数据重新编码,帧率改为15fps:
ffmpeg -i input.mp4 -r 15 output.mp4
注意:改变帧率的操作需要重新进行编码,不能使用-codec copy
参数,否则帧率设置无效。
使用ffprobe
查看output.mp4文件的详细信息:
ffprobe output.mp4
2. 修改视频码率
执行以下命令将输入文件的视频流数据重新编码,码率修改为400kbps:
ffmpeg -i input.mp4 -b 400k output.mp4
除了使用-b 400k
参数外,还可以使用-b:v 400k
参数设置码率。
3. 修改视频分辨率
执行以下命令将输入文件的视频分辨率修改为200x200像素:
ffmpeg -i input.mp4 -s 200x200 output.mp4
五、改变封装格式的音频码率/采样率
1. 修改音频码率
执行以下命令将输入文件的音频流数据重新编码,码率改为192kbps:
ffmpeg -i input.mp4 -b:a 192k output.mp4
-b:a 192k
参数是设置音频数据流码率为192kbps-b:v 192k
参数是设置视频数据流码率为192kbps
2. 修改音频采样率
执行以下命令将输入文件的音频流数据重新编码,采样率改为44100Hz:
ffmpeg -i input.mp4 -ar 44100 output.mp4
使用ffprobe
查看output.mp4文件的详细信息:
ffprobe output.mp4