FFmpeg命令行参数详解:音视频封装格式转换与参数设置
FFmpeg命令行参数详解:音视频封装格式转换与参数设置
FFmpeg是一个强大的开源多媒体处理工具,广泛应用于音视频的编码、解码、转换等场景。本文将详细介绍如何使用FFmpeg进行音视频封装格式转换,并对视频帧率、码率、分辨率以及音频码率、采样率等关键参数进行设置。
一、音视频封装过程
音视频文件从采样到最终封装的过程可以分为以下几个步骤:
- 采样
- 处理
- 得到原始数据帧队列
- 音视频编码
- 音视频包队列
- 格式封装
封装格式的详细分析可以参考相关博客。
二、保持编码格式转封装
1. 设置音视频编解码器参数
在FFmpeg命令中,可以使用以下参数设置音视频编解码器:
- 使用
-vcodec
参数设置视频编解码器 - 使用
-acodec
参数设置音频编解码器 - 使用
-codec
参数同时设置音视频编解码器
如果为-codec
、-vcodec
、-acodec
参数设置copy
参数值,FFmpeg会保持原始数据流的编码格式不变,直接将数据流复制到新的容器中。
2. 使用vcodec
/acodec
参数
执行以下命令,将输入文件保持音频和视频的封装格式不变,输出到TS封装容器中:
ffmpeg -i input.mp4 -vcodec copy -acodec copy output.ts
TS(Transport Stream)是一种传输流封装格式,主要用于数字广播系统。
执行以下命令播放输出文件:
ffplay output.ts
3. 使用codec
参数
执行以下命令,也可以将MP4封装格式转换为TS封装格式:
ffmpeg -i input.mp4 -codec copy output.ts
执行以下命令播放输出文件:
ffplay output.ts
三、改变编码格式转封装 - 重新进行编码
1. 使用vcodec
/acodec
参数
执行以下命令,将视频使用libx265编解码器重新编码,将音频使用libmp3lame编解码器重新编码:
ffmpeg -i input.mp4 -vcodec libx265 -acodec libmp3lame output.mkv
由于重新进行了编码,该命令执行时间可能较长。
2. 使用ffprobe查看视频封装信息
执行以下命令查看输出文件的封装信息:
ffprobe output.mkv
3. 查询可用的音视频编解码器
执行以下命令查询FFmpeg支持的编解码器:
ffmpeg -codecs
每个编解码器前面都有类型标识,具体含义如下:
- D:支持解码
- E:支持编码
- V:视频编解码器
- A:音频编解码器
- S:字幕编解码器
- I:内部帧编码器
- L:有损压缩
- S:无损压缩
四、改变封装格式的视频参数
1. 修改视频帧率
执行以下命令将视频帧率修改为15fps:
ffmpeg -i input.mp4 -r 15 output.mp4
注意:改变帧率需要重新编码,不能使用-codec copy
参数。
执行以下命令查看输出文件的详细信息:
ffprobe output.mp4
2. 修改视频码率
执行以下命令将视频码率修改为400kbps:
ffmpeg -i input.mp4 -b 400k output.mp4
也可以使用-b:v 400k
参数设置码率。
执行以下命令查看输出文件的详细信息:
ffprobe output.mp4
3. 修改视频分辨率
执行以下命令将视频分辨率修改为200x200像素:
ffmpeg -i input.mp4 -s 200x200 output.mp4
执行以下命令查看输出文件的详细信息:
ffprobe output.mp4
五、改变封装格式的音频参数
1. 修改音频码率
执行以下命令将音频码率修改为192kbps:
ffmpeg -i input.mp4 -b:a 192k output.mp4
其中:
-b:a 192k
参数设置音频数据流码率为192kbps-b:v 192k
参数设置视频数据流码率为192kbps
执行以下命令查看输出文件的详细信息:
ffprobe output.mp4
2. 修改音频采样率
执行以下命令将音频采样率修改为44100Hz:
ffmpeg -i input.mp4 -ar 44100 output.mp4
执行以下命令查看输出文件的详细信息:
ffprobe output.mp4