【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )





一、音视频封装过程



音视频 文件 从 采样 -> 处理 -> 得到原始数据帧队列 -> 音视频编码 -> 音视频包队列 -> 格式封装 的过程如下 :

在这里插入图片描述

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





二、保持编码格式转封装




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 ;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/137217723