赞
踩
音视频 文件 从 采样 -> 处理 -> 得到原始数据帧队列 -> 音视频编码 -> 音视频包队列 -> 格式封装 的过程如下 :
封装格式 参考 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装播放流程 ) 博客 ;
在 ffmpeg 命令中 ,
-vcodec
参数 设置 视频编解码器 , 使用 -acodec
参数 设置 音频编解码器 ,-codec
参数 设置 音视频编解码器 ,使用 -codec
参数 相当于 同时设置 -vcodec
参数 和 -acodec
参数 ;
为 -codec
参数 , -vcodec
参数 , -acodec
参数 , 设置 copy
参数值 , 该参数告诉 ffmpeg 保持 原始数据流 的 编码格式不变 , 直接将 数据流 复制到新的容器中 ;
执行
ffmpeg -i input.mp4 -vcodec copy -acodec copy output.ts
命令 , 将输入文件 保持 音频 和 视频 的 封装格式 不变 , 输出到 ts 封装容器中 , 也就是将 mp4 封装格式 转为 ts 封装格式 , ts 是高清格式 是 " Transport Stream " 的缩写 , 全称 MPEG2-TS , 是一种 传输流封装格式 , 主要应用于数字广播系统 ;
执行
ffplay output.ts
命令 , 播放上述 output.ts 输出文件 ;
执行
ffmpeg -i input.mp4 -codec copy output.ts
命令 , 也可以将 input.mp4 转封装为 output.ts , 使用 -codec
参数 , 可以同时设置 音频编解码器 和 视频 编解码器 ;
然后执行
ffplay output.ts
命令 , 播放该 输出文件 ;
执行
ffmpeg -i input.mp4 -vcodec libx265 -acodec libmp3lame output.mkv
命令 , 将 视频 使用 libx265 编解码器 重新进行 编码 , 将 音频 使用 libmp3lame 编解码器 重新进行 编码 , 最终将 重新编码的 音视频数据 存储到 output.mkv 输出文件中 ;
由于重新进行了编码 , 该命令执行时间比较长 ;
执行
ffprobe output.mkv
命令 , 可以查看 output.mkv 视频的封装信息 , 其中列举了 视频流 和 音频流 的编码信息等 ;
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 无损压缩
执行
ffmpeg -i input.mp4 -r 15 output.mp4
命令 , 将 输入文件 input.mp4 的 视频流数据 重新编码 , 帧率改为 15 fps , 输出到 output.mp4 输出文件中 ;
注意 : 改变 帧率 的操作 需要 重新进行编码 , 不能使用 -codec copy
参数 , 否则帧率设置无效 ;
执行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 详细信息 , 其 视频流信息 显示该视频流帧率是 15 fps ;
执行
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 ;
执行
ffmpeg -i input.mp4 -s 200x200 output.mp4
命令 , 将 输入文件 input.mp4 的 视频分辨率修改为 200 x 200 像素 , 输出到 output.mp4 输出文件中 ;
执行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 视频流信息 , 其分辨率为 200 x 200 像素 ;
执行
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 ;
执行
ffmpeg -i input.mp4 -ar 44100 output.mp4
命令 , 将 输入文件 input.mp4 的 音频流数据 重新编码 , 采样率改为 44100 hz , 输出到 output.mp4 输出文件中 ;
执行
ffprobe output.mp4
命令 , 查看 output.mp4 文件的 详细信息 , 其 音频流信息 显示该音频的 采样率为 44100 Hz ;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。