问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

FFmpeg命令行参数详解:音视频封装格式转换与参数设置

创作时间:
作者:
@小白创作中心

FFmpeg命令行参数详解:音视频封装格式转换与参数设置

引用
1
来源
1.
https://cloud.tencent.com/developer/article/2404067

一、音视频封装过程

音视频文件从采样到处理,再到得到原始数据帧队列,经过音视频编码生成音视频包队列,最后进行格式封装的过程如下:

封装格式参考【音视频原理】音视频“采样-编码-封装过程”和“解封装-解码-播放过程”分析(视频采集处理流程|音频采集处理流程|音视频文件解封装播放流程)博客。

二、保持编码格式转封装

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
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号