前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )

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

作者头像
韩曙亮
发布2024-04-02 10:00:08
2890
发布2024-04-02 10:00:08
举报

一、音视频封装过程

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

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

二、保持编码格式转封装


1、设置音视频编解码器参数

在 ffmpeg 命令中 ,

  • 使用 -vcodec 参数 设置 视频编解码器 , 使用 -acodec 参数 设置 音频编解码器 ,
  • 使用 -codec 参数 设置 音视频编解码器 ,

使用 -codec 参数 相当于 同时设置 -vcodec 参数 和 -acodec 参数 ;

-codec 参数 , -vcodec 参数 , -acodec 参数 , 设置 copy 参数值 , 该参数告诉 ffmpeg 保持 原始数据流 的 编码格式不变 , 直接将 数据流 复制到新的容器中 ;

2、设置音视频编解码器参数 - 使用 vcodec / acodec 参数

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -vcodec copy -acodec copy output.ts

命令 , 将输入文件 保持 音频 和 视频 的 封装格式 不变 , 输出到 ts 封装容器中 , 也就是将 mp4 封装格式 转为 ts 封装格式 , ts 是高清格式 是 " Transport Stream " 的缩写 , 全称 MPEG2-TS , 是一种 传输流封装格式 , 主要应用于数字广播系统 ;

执行

代码语言:javascript
复制
ffplay output.ts

命令 , 播放上述 output.ts 输出文件 ;

3、设置音视频编解码器参数 - 使用 codec 参数

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -codec copy output.ts

命令 , 也可以将 input.mp4 转封装为 output.ts , 使用 -codec 参数 , 可以同时设置 音频编解码器 和 视频 编解码器 ;

然后执行

代码语言:javascript
复制
ffplay output.ts

命令 , 播放该 输出文件 ;

三、改变编码格式转封装 - 重新进行编码


1、设置音视频编解码器参数 - 使用 vcodec / acodec 参数

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -vcodec libx265 -acodec libmp3lame output.mkv

命令 , 将 视频 使用 libx265 编解码器 重新进行 编码 , 将 音频 使用 libmp3lame 编解码器 重新进行 编码 , 最终将 重新编码的 音视频数据 存储到 output.mkv 输出文件中 ;

由于重新进行了编码 , 该命令执行时间比较长 ;

2、使用 ffprobe 查看视频封装信息

执行

代码语言:javascript
复制
ffprobe output.mkv

命令 , 可以查看 output.mkv 视频的封装信息 , 其中列举了 视频流 和 音频流 的编码信息等 ;

3、查询可用的音视频编解码器

ffmpeg 中提供了大量的 音视频编解码器 , 可以使用如下命令查询 可用的 编解码器 ;

执行

代码语言:javascript
复制
ffmpeg -codecs

命令 , 可以查询出 ffmpeg 的可用的 编解码器 ;

每个编解码器 前面都有 编解码器 的 类型 , 下面的注释中就是 编解码器 类型解析 ;

代码语言:javascript
复制
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、修改视频帧率

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -r 15 output.mp4

命令 , 将 输入文件 input.mp4 的 视频流数据 重新编码 , 帧率改为 15 fps , 输出到 output.mp4 输出文件中 ;

注意 : 改变 帧率 的操作 需要 重新进行编码 , 不能使用 -codec copy 参数 , 否则帧率设置无效 ;

执行

代码语言:javascript
复制
ffprobe output.mp4

命令 , 查看 output.mp4 文件的 详细信息 , 其 视频流信息 显示该视频流帧率是 15 fps ;

2、修改视频码率

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -b 400k output.mp4

命令 , 将 输入文件 input.mp4 的 视频流数据 重新编码 , 码率修改为 400kbps , 输出到 output.mp4 输出文件中 ;

除了使用 -b 400k 参数外 , 还可以使用 -b:v 400k 参数 设置 码率 ;

执行

代码语言:javascript
复制
ffprobe output.mp4

命令 , 查看 outp.mp4 文件的 视频流信息 , 其码率为 405 kb/s ;

3、修改视频分辨率

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -s 200x200 output.mp4

命令 , 将 输入文件 input.mp4 的 视频分辨率修改为 200 x 200 像素 , 输出到 output.mp4 输出文件中 ;

执行

代码语言:javascript
复制
ffprobe output.mp4

命令 , 查看 output.mp4 文件的 视频流信息 , 其分辨率为 200 x 200 像素 ;

五、改变 封装格式 的 音频 码率 / 采样率


1、修改音频码率

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -b:a 192k output.mp4

命令 , 将 输入文件 input.mp4 的 音频流数据 重新编码 , 码率改为 192 kbps , 输出到 output.mp4 输出文件中 ;

  • -b:a 192k 参数是 设置 音频数据流 码率为 192kbps ;
  • -b:v 192k 参数是 设置 视频数据流 码率为 192kbps ;

执行

代码语言:javascript
复制
ffprobe output.mp4

命令 , 查看 output.mp4 文件的 详细信息 , 其 音频流信息 显示该音频的码率为 192 kb/s ;

2、修改音频采样率

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -ar 44100 output.mp4

命令 , 将 输入文件 input.mp4 的 音频流数据 重新编码 , 采样率改为 44100 hz , 输出到 output.mp4 输出文件中 ;

执行

代码语言:javascript
复制
ffprobe output.mp4

命令 , 查看 output.mp4 文件的 详细信息 , 其 音频流信息 显示该音频的 采样率为 44100 Hz ;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、音视频封装过程
  • 二、保持编码格式转封装
    • 1、设置音视频编解码器参数
      • 2、设置音视频编解码器参数 - 使用 vcodec / acodec 参数
        • 3、设置音视频编解码器参数 - 使用 codec 参数
        • 三、改变编码格式转封装 - 重新进行编码
          • 1、设置音视频编解码器参数 - 使用 vcodec / acodec 参数
            • 2、使用 ffprobe 查看视频封装信息
              • 3、查询可用的音视频编解码器
              • 四、改变 封装格式 的 视频 帧率 / 码率 / 分辨率
                • 1、修改视频帧率
                  • 2、修改视频码率
                    • 3、修改视频分辨率
                    • 五、改变 封装格式 的 音频 码率 / 采样率
                      • 1、修改音频码率
                        • 2、修改音频采样率
                        相关产品与服务
                        容器服务
                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档