一、音视频封装过程
音视频 文件 从 采样 -> 处理 -> 得到原始数据帧队列 -> 音视频编码 -> 音视频包队列 -> 格式封装 的过程如下 :
封装格式 参考 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装播放流程 ) 博客 ;
二、保持编码格式转封装
1、设置音视频编解码器参数
在 ffmpeg 命令中 ,
- 使用
-vcodec
参数 设置 视频编解码器 , 使用-acodec
参数 设置 音频编解码器 , - 使用
-codec
参数 设置 音视频编解码器 ,
使用 -codec
参数 相当于 同时设置 -vcodec
参数 和 -acodec
参数 ;
为 -codec
参数 , -vcodec
参数 , -acodec
参数 , 设置 copy
参数值 , 该参数告诉 ffmpeg 保持 原始数据流 的 编码格式不变 , 直接将 数据流 复制到新的容器中 ;
2、设置音视频编解码器参数 - 使用 vcodec / acodec 参数
执行
ffmpeg -i input.mp4 -vcodec copy -acodec copy output.ts
命令 , 将输入文件 保持 音频 和 视频 的 封装格式 不变 , 输出到 ts 封装容器中 , 也就是将 mp4 封装格式 转为 ts 封装格式 , ts 是高清格式 是 " Transport Stream " 的缩写 , 全称 MPEG2-TS , 是一种 传输流封装格式 , 主要应用于数字广播系统 ;
执行
ffplay output.ts
命令 , 播放上述 output.ts 输出文件 ;
3、设置音视频编解码器参数 - 使用 codec 参数
执行
ffmpeg -i input.mp4 -codec copy output.ts
命令 , 也可以将 input.mp4 转封装为 output.ts , 使用 -codec
参数 , 可以同时设置 音频编解码器 和 视频 编解码器 ;
然后执行
ffplay output.ts
命令 , 播放该 输出文件 ;
三、改变编码格式转封装 - 重新进行编码
1、设置音视频编解码器参数 - 使用 vcodec / acodec 参数
执行
ffmpeg -i input.mp4 -vcodec libx265 -acodec libmp3lame output.mkv
命令 , 将 视频 使用 libx265 编解码器 重新进行 编码 , 将 音频 使用 libmp3lame 编解码器 重新进行 编码 , 最终将 重新编码的 音视频数据 存储到 output.mkv 输出文件中 ;
由于重新进行了编码 , 该命令执行时间比较长 ;
2、使用 ffprobe 查看视频封装信息
执行
ffprobe output.mkv
命令 , 可以查看 output.mkv 视频的封装信息 , 其中列举了 视频流 和 音频流 的编码信息等 ;
3、查询可用的音视频编解码器
ffmpeg 中提供了大量的 音视频编解码器 , 可以使用如下命令查询 可用的 编解码器 ;
执行
ffmpeg -codecs
命令 , 可以查询出 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、修改视频帧率
执行
ffmpeg -i input.mp4 -r 15 output.mp4
命令 , 将 输入文件 input.mp4 的 视频流数据 重新编码 , 帧率改为 15 fps , 输出到 output.mp4 输出文件中 ;
注意 : 改变 帧率 的操作 需要 重新进行编码 , 不能使用 -codec copy
参数 , 否则帧率设置无效 ;
执行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 详细信息 , 其 视频流信息 显示该视频流帧率是 15 fps ;
2、修改视频码率
执行
ffmpeg -i input.mp4 -b 400k output.mp4
命令 , 将 输入文件 input.mp4 的 视频流数据 重新编码 , 码率修改为 400kbps , 输出到 output.mp4 输出文件中 ;
除了使用 -b 400k
参数外 , 还可以使用 -b:v 400k
参数 设置 码率 ;
执行
ffprobe output.mp4
命令 , 查看 outp.mp4 文件的 视频流信息 , 其码率为 405 kb/s ;
3、修改视频分辨率
执行
ffmpeg -i input.mp4 -s 200x200 output.mp4
命令 , 将 输入文件 input.mp4 的 视频分辨率修改为 200 x 200 像素 , 输出到 output.mp4 输出文件中 ;
执行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 视频流信息 , 其分辨率为 200 x 200 像素 ;
五、改变 封装格式 的 音频 码率 / 采样率
1、修改音频码率
执行
ffmpeg -i input.mp4 -b:a 192k output.mp4
命令 , 将 输入文件 input.mp4 的 音频流数据 重新编码 , 码率改为 192 kbps , 输出到 output.mp4 输出文件中 ;
-
-b:a 192k
参数是 设置 音频数据流 码率为 192kbps ; -
-b:v 192k
参数是 设置 视频数据流 码率为 192kbps ;
执行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 详细信息 , 其 音频流信息 显示该音频的码率为 192 kb/s ;
2、修改音频采样率
执行
ffmpeg -i input.mp4 -ar 44100 output.mp4
命令 , 将 输入文件 input.mp4 的 音频流数据 重新编码 , 采样率改为 44100 hz , 输出到 output.mp4 输出文件中 ;
执行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 详细信息 , 其 音频流信息 显示该音频的 采样率为 44100 Hz ;文章来源:https://www.toymoban.com/news/detail-854027.html
文章来源地址https://www.toymoban.com/news/detail-854027.html
到了这里,关于【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!