FFmpeg三大常用工具及应用选项详解

发布时间:2024-04-03 17:04:41浏览次数:34
第3章FFmpeg三大常用工具及应用选项详解多媒 体 库 支 持 的 命 令 行 调 用 分 为个 模 块其 中模块常用于音视频剪切转码滤镜拼接混音截图等模块用于播放视频模块用于检测多 媒 体流 格式详 情可 查 阅的 官 方文 档网 址 为󰁒注意本章的知识侧重于讲解命 令行选项的 使用读者在 学习过程中 可能会感 觉比 较抽象可以先对这些 选项 大体 上 有个 印 象后 续 章节 笔 者 准 备了 大 量 的 案例 来 应 用 这些选项3.1ffmpeg工具简介工具主要用于编解码主要工作流程相对比较简单如图󰁒所示图󰁒工具的编解码流程读取输入源进行音视频的解封装解码每帧音视频数据编码每帧音视频数据进行音视频的重写封装输出到目标工具首先读取输 入源然后 通过 解封装 器将音 视频 包进行 解封 装这个动作通过调用中的 接口 实现接下 来通 过解码 器进行 解码将音视频通过解包为或者这样的音视频裸数据通过中的接 口 实 现然 后 通 过 编 码 器将 对 应 的 数 据 进 行 编 码编 码 可 以 通 过5min 45该页面会显示刚才选择的本地视频文件然后单击下一步按钮如图󰁒所示图󰁒流媒体服务器之文件来源在该页面单击添加按钮选择具体的流协议例如这里选择然后单击下一步按钮如图󰁒所示图󰁒流媒体服务器之选择协议在该页面的下拉列表框列表中选择󰁒然后单击下一步按钮如图󰁒所示注意一定要选中激活转码并且需要是流格式在该页面 可 以 看 到生 成 的所 有 串 流 输出 参 数然 后 单击流按 钮 即 可如图󰁒所示 46图󰁒流媒体服务器之图󰁒流媒体服务器之串流输出字符串 473.3ffprobe工具简介工具主要用于检测多媒体信息包括时长视频分辨率帧率音频采样率声道数每个流信息等支持的 显示形式包 括和例如󰁒指定用方式输出信息命令如下如果要显示 每帧 数据信 息则可 使用󰁒可 以显 示等信息命令如下如果只显示视频流则可使用󰁒其中代表代表代表命令如下常用参数比较多可以通过󰁒󰁒命令来查看详细的信息3.3.1show_packets查看的多媒体包信息使用标签包括起来其中包含的信息主要如下多媒体类型例如视频包音频包等多媒体的流索引多媒体的显示时间值根据不同格式计算过后的多媒体的显示时间多媒体解码时间值根据不同格式计算过后的多媒体解码时间多媒体包占用的时间值根据不同格式计算过后的多媒体包占用的时间值多媒体包的大小多媒体包所在的文件偏移位置多媒体包标记关键包与非关键包的标记3.3.2show_format还可以分析多媒体 的 封装 格式通 过󰁒参 数可 以查 看 多媒 体的 封 48装格式封装可以使用标签括起来显示命令如下通过读取信息可以看到这个视频文件有两个流通道包括视频流和音频流这个文件的起始时间是长度为文 件 大小 为码 率 为该 文 件的 封 装 格 式可 能 为之所 以会这 么 输出是 因为 这几 种 封装 格式 在中所识别的标签基本相同所以才会有这么多种显示方式完整的输出信息代码如下以开头的部分是笔者的注释信息   输入文件的封装格式这里为封装格式''第路流视频流编码格式第路流音频流编码格式 49标签格式的输出信息格式为3.3.3show_frames通过的参数 可以 查看视 频文 件中的 帧信 息输出 的帧 信息使 用标签括起来能够看到每帧的信息命令如下下面介绍重要的属性说明如表󰁒所示表3-2show_frames的属性说明属性 值 属性 值帧的类型视频音频字幕等帧所在的索引区域是否是关键帧 包的 包的的时间显示 包的 包的的时间显示 包的时长 包的时长时间显示 包所在文件的偏移位置帧显示的宽度帧显示的高度帧的图像色彩格式等帧类型从该案例中的部分输出信息可以看出音视频 帧是交错输 出的一般情 况是一帧视 频 50然后是多帧音频以此交错类推输出信息如下以开头的部分是笔者的注释信息完整的输出的帧信息   ''音频帧 51音频帧音频帧 52音频帧音频帧 53视频帧3.3.4show_streams通过的参 数 可 以 查 看 多 媒 体 文 件 中 的 流 信 息流 信 息 使 用标签括起来命令如下 54下面介绍重要的属性说明如表󰁒所示表3-3show_streams的属性说明属性 值 属性 值流所在的索引区域编码名编码全名编码的能力编码的层级包含帧信息编码类型编码的时间戳的基础单位图像显示的图像色彩格式图像的宽度图像的高度编码的标签数据该案例中的部分输出信息如下以开头的部分是笔者的注释信息视频流 37中的接口实现接下来将编码后的音视频数据包通过封装器进行封装封装可以通过中的接口实现最终的输出称为输出流命令行工具是一个快速的音视频转换工具使用方法及格式如下全局选项输入文件选项' 输入文件 '输出文件选项' 输出文件 '全局选项一对方括号代表这些选项是可选的输入文件选项󰁒' 输入文件 '一对花括号代表可以读取任 意数量的输入文件这里的文件可以是常规文件管道网络流抓取设备等输入文件前必须带有󰁒选项也可以带有其他的输入文件选项输出文件选项' 输 出文件 '一对 花括 号代表 可以 写入任 意数 量的输出 文件可以带有相关的输出文件选项任何不能被解释 为选项的字 符串都被认 为是一个输 出文件或者称为是多媒体领域应 用最 广 泛的 一个 开 源框 架包 含了 传 输 协议视 频 格式编 解码图像滤镜语音处理等功能并可以与等其他软 件对接几乎是 事实上的音视频标准库它的架构清晰简洁大体上分为以下几部分传输协议包括等常见的协议本地文件也被实现为一个协议视频封装格式包括等市 面上 常见的 格 式几 乎没 有解析不了的编解码协议包括视频 的等音频 的等大概支持几十种编解码协议常见的不常见的都有目前最流行的还是和图像滤镜和语音滤镜在里都通 过实现它是提供 的对 解码后的图像和语音进行处理的一个框架模块化设计足以与和内核相媲美添加第三方模块或者自定义模块都非常方便它自带的各个功能也是以模块的形式进行管理的可以在编译之前灵活地配置3.2ffplay工具简介在编译源代码时如果系统中包含了库则会默认编译生成工具如果不包含时无法生成工具所以如果想使用进行流媒体播放测试则需要安装库通常使用作为播放器其实不但可以作为播放器同样可以作为很多图像化音视频数据的分析工具通过可以看到视频图像的运动估计方向音频数据的波形等在本节将会对更多的参数进行介绍并举例 55音频流声道 563.3.5print_format使用前面的参数可以获得到对应的󰁒但是阅读起来因 个人习惯不 同所以有的人认为方便而有的人认为不方便这样就 需要用到的参数进行相应的格式输出包括下面举几种输出的例子󰀸格式的部分输出信息如下 57格式的部分输出信息如下 58     格式的部分输出信息如下 593.3.6select_streams如果只查看音频流或视频流则可使用󰁒参数例如只查看视频流的信息命令如下命令行执行后可以看到输出信息全部为视频的内容如下 60 613.4通用选项通用选项是指对音频视频都能使用的命令参数这里介绍几个重要的选项󰁒强制输入 或输出 文件 格式通常输入 文件 的格式 是自 动检测的输出文件的格式是通过文件扩展名进行推断的󰁒输入文件名󰁒如果存在同名的输出文件则直接强制覆盖󰁒不覆盖输出文件如果一个给定的输出文件已经存在则立即退出󰁒󰁒编解 码器 选项例如󰁒代表视频编码器󰁒代表音频编码 器󰁒代表音 视频编码格 式都复制 原来 的也可以写成󰁒󰁒为一个或多个流选择一个编码器当使用在 一 个输 出文 件 之前 时或 者一 个解 码 器当 使用 在 一 个 输入 文 件 之 前时是一个编码器解码器名称例如等或者一 个特定值只适用输出󰁒当到达时停止写输出可以是一个数 字单位为秒或者使用形式󰁒在处停止写输出可以是一个数字单位为秒或者使用形式选项󰁒和󰁒是互斥的󰁒的优先级更高󰁒设置文件大小限制以字节表示󰁒当作为输入选项时在󰁒之前在输入 文件中跳转 到需要注意的是在大多数格 式中不太 可能 精确地 跳转因此将跳 转到之前最接近的位置当进行转码并且󰁒打开时默认会打开位于跳转点和之间的额外部分将 被解码并且 丢弃当进 行流 复制或 者使 用󰁒时它将被保留下来当作 为输 出选项 时在输 出文 件名前会解 码但是 丢弃 输入直到时间戳到达可 以 是 一 个 数 字单 位 为 秒或 者形式󰁒设置输入时间偏移将被添加到输入文件的 时间戳指定一个正偏移意味着相应的流将被延时指定时间󰁒在容器中设置录音时间戳󰁒󰁒设 置的󰁒对󰁒指 定 目 标 文 件 类 型和可以带有󰁒󰁒或󰁒前缀以使 用相 应的标 准所有 的格 式选项将自动设定 62󰁒设置要录制数据帧的个数这是󰁒的别名󰁒󰁒帧以后停止写流󰁒󰁒指定音视 频质量如󰁒其中代表保存为高质量或者写成󰁒󰁒可以使 用固定质量范围󰁒󰁒创建指定的过滤图并使用它过滤流󰁒󰁒该 选项 与󰁒相似唯一的不同是它的参数是一个存放过滤图的文件的名称󰁒󰁒指定匹配流的预设󰁒打印编码进程统计信息默认打开可以使用󰁒禁用󰁒开启标准 输入 交互默认 打开除非 标准 输入作 为一 个输入可 以使 用󰁒禁止󰁒打印时间戳信息默认关闭󰁒将一个附件添加到输出文件中󰁒󰁒将匹配的附件流提取到指定的文件中3.5视频选项主要应用于视频的选项列举如下󰁒设置录制视频帧的个数它是󰁒的别名󰁒󰁒设置帧率󰁒󰁒设置帧 大小格式为默认与原始的宽和高相同例如注意中间是小写的󰁒󰁒设置视频显示的宽高比󰁒禁止视频录制󰁒设 置 视 频它 是󰁒的 别 名例 如󰁒代表用进行视 频编码󰁒代表不 用重新编码 而直接复制 原始 视频流󰁒󰁒选择用来进行双行程视频编码󰁒󰁒设置󰁒日志文件名前缀默认为 63󰁒创建指定的过滤图并使用它来过滤流󰁒󰁒设置像素格式󰁒设置软缩放标志󰁒丢弃阈值󰁒用于计算压缩帧的即峰值信噪比是一种评价图像的客观标准󰁒将视频编码统计信息复制到󰁒将视频编码统计信息复制到指定的󰁒󰁒强制关键帧󰁒󰁒在指定的时间戳强制关键帧󰁒󰁒当进行流复制时同时复制开头的非关键帧󰁒󰁒使用 硬件 加 速来 解码匹配的流󰁒󰁒选择硬件加速所使用的设备该选项只有󰁒同时指定时才有意义3.6音频选项主要应用于音频的选项列举如下󰁒设置录制音频帧的个数是󰁒的别名󰁒󰁒设置音频采样率󰁒设置音频质量是󰁒的别名󰁒󰁒设置音频通道数󰁒禁止音频录制󰁒设 置 音 频是󰁒的 别 名例 如󰁒代表使用进行音频编码󰁒󰁒设置音频采样格式󰁒创建所指定的过滤图并使用它来过滤流3.7字幕选项主要应用于字幕的选项列举如下 64󰁒设置框架大小或缩写󰁒禁用字幕󰁒编解码器强制字幕编解码器󰁒字幕标签󰁒修复字幕持续时间󰁒设置画布大小󰁒预设将字幕选项设置为指示的预设3.8高级选项󰁒󰁒指定一个或多个流作为输出文件的源󰁒以本地视频文件的帧率来读取数据主要用来模拟一个采集设备例如可以读取一个本地文件来模拟实时输入流󰁒󰁒设置下一个输出文件的信息󰁒从索 引号 为的输 入文件中将章节复制到下一个输出文件中󰁒运行秒后退出󰁒将每个输入包复制到标准输出󰁒复制包时同时复制负载󰁒视频同步方法󰁒音频同步方法󰁒当最短的输入流结束时终止编码󰁒设置最大解封装解码延时󰁒设置初始解封装解码延时󰁒󰁒󰁒󰁒为一个输出流分配一个新的󰁒󰁒󰁒为匹配 的流设置比特流滤镜󰁒定义一个复杂的过滤图󰁒定义一个复杂的过滤图相当于󰁒󰁒该选项类似于󰁒唯一的不同是它的参数是一个定义过滤图的文件的文件名󰁒打开或禁止在输入文件中的精确跳转默认打开 383.2.1ffplay常用参数不仅是播放器同时也是测试的引擎引擎及引擎的工具并且也可以作为可视化的媒体参数分析 工具可以通 过󰁒命令查 看这些参数常见参数读者可以手动进行测试举例如下如果希望从视频的第开始播放播放命令如下视频播放时播放器的窗口可以显示自定义标题显示效果如图󰁒所示命令如下图󰁒自定义窗口标题图󰁒播放网络直播流并自定义窗口标题使用还可以打开网络直播流实时网络直播视频流的播放效果如图󰁒所示命令如下 653.9map详解的󰁒选项用于指定一个或多个流作为输出文件的源语法如下该命令行中的第个󰁒选项用于指定输出流的源第个󰁒选项用 于指定输出流的源以此类推以下是一些特别流符号的说明󰁒表示选择第个文件的所有流󰁒表示从文件序号中获取所有视频流󰁒表示获取所有音频流󰁒表示获取所有字幕流等特殊参数󰁒󰁒󰁒表示分别排除所有的音频流视频流字幕流注意如果文件索引号前带有减号则表示 排除指定文 件中的指定 流例如󰁒󰁒表示排除第个输入文件中的第路视频流󰁒的通常用 法是󰁒即󰁒文件索引号流类型流索引号下面列举几个案例如图󰁒所示图󰁒用法及案例在用法中文件流包括音频流视频流字幕流的索引号都是从开始的例如第个文件的第路视频流的标识符为第个文件的第路视频流的标识符为第个文件的第路字幕流的标识符为在上述案例中有两个输入文件和一个输出文件命令行语法如下 66其中列举几种可用的情况从所有输入文件中选择所有流代码如下表示从第个文件中获取所有流包括音频流视频流和字幕流表示从第个文件中获取所有流包括音频流视频流和字幕流从第个输入文件中获取第路字幕流从第个文件中获取第路视频流 和第路音频流代码如下表示从第个文件中获取第路字幕流表示从第个文件中获取第路视频流表示从第个文件中获取第路音频流从第个输入文件中获取第路视频流从第个文件中获取第路字幕流然后屏蔽所有的音频流代码如下表示从第个文件中获取第路视频流表示从第个文件中获取第路字幕流表示屏蔽所有的音频流从所有输入文件中选择所有流但需要排除第个输入文件中的第路视频流和第路音频流代码如下表示从第个文件中获取所有流包括音频流视频流和字幕流表示从第个文件中获取所有流包括音频流视频流和字幕流注意文件索引号前边有一个减号表示从第个文件中排除第路视频流注意文件索引号前边有一个减号表示从第个文件中排除第路音频流3.10ffmpeg-h详解打开命令行窗口输入󰁒命令会打印出的帮助信息输出内容如下注释说明的语法格式 67的获取帮助的参数包括和由于内容比较多读者可以自己测试和显示授权信息显示帮助信息显示帮助信息显示版本信息显示编译配置信息显示可用的格式显示可用的封装器显示可用的解封装器显示可用的设备显示可用的编解码器显示可用的解码器显示可用的编码器显示可用的位流滤镜显示可用的协议显示可用的滤镜显示可用的像素格式 显示可用的声道模式 显示可用的采样格式 显示可用的颜色名称 显示可用的输入设备 显示可用的输出设备 显示可用的硬件加速方法全局选项 68文件主要选项强制规定文件格式''视频选项'' 69音频选项''字幕选项''3.11FFmpeg其他选项提供了非常多的编码器解码器封装器协议硬件 加速 等功能这里 重点 介绍以下几项可用的比特流󰁒可用的编解码器󰁒可用的解码器󰁒可用的编码器󰁒可用的滤镜󰁒可用的视频格式󰁒可用的声道布局󰁒可用的许可证󰁒可用的像素格式󰁒可用的协议󰁒 703.11.1-formats支持的文件格式󰁒用于列举所有可用的文件格式代表解封装支持的格式代表封装支持的格式代表封装解封装都支持的格式由于内容太多笔者删除了 一些不常用 的格式输出信息如下文件格式 解封装支持 封装支持格式格式格式用于数字视频格式包括和属于格式格式包含视频流信息格式包含视频音频字幕等音频格式音频格式 71视频格式视频格式视频格式视频格式即视频格式包含视频流信息视频格式音频格式音频格式视频格式 72 3.11.2-muxers支持的封装器格式󰁒用于列举所有可用的封装器格式代表解封装支持的格 式代表封 装支持的格式代表封装解封装都支持的格式󰁒属于封装格式所以只包含类型的格式具体输出信息如下 73 74 39播放测试注意这里的 网络 直播流 的网 址为///直 播流 是用模拟出来的直播流具体的 操作步骤可 参考本节的作为流媒 体服务器3.2.2ffplay高级参数通过󰁒命令可以看到 的帮 助信 息 比较 多在 帮助 信息 中 包含 了许 多 高级 参数这里列举几个重要的参数选项如表󰁒所示表3-1ffplay的参数选项及说明信息参数 说明 参数 说明强制设置视频显示窗口的宽度强制设置视频显示窗口的高度设置视频显示的宽和高强制全屏显示屏蔽音频屏蔽视频屏蔽字幕根据 设 置 的 时 间单 位 为 秒进行定位拖动设置播放视频音频长度设置定位 拖 动 的 策 略为 不 可拖动为可拖动为自动关闭图形化显示窗口强制使用设置的格式进行解析设置显示窗口的标题设置音频的滤镜强制使用设置的进行解码自动旋转视频设置将要播放的音频流设置将要播放的视频流设置将要播放的字幕流输出多媒体播放状态非标 准 化 规 范 的 多 媒 体 兼 容优化音视频 同 步 设 置可 根 据 音 频视频进 行 参 考可 根 据 视 频 时间参考也 可 根 据 外 部 扩 展 时间进行参考多媒体播放完毕自动退出默 认 播 放 完 毕 不 退 出 播放器当有 按 键 按 下 事 件 产 生 时 退出当有 鼠 标 按 键 事 件 产 生 时 退出设置多媒体文件循环播放次数当资源占用 过 高 时自 动丢帧设 置 无 极 限 的 播 放 器这个选 项常见于 实时流媒 体播放场景视频滤镜设置强制使用设置的音频解码器强制使用设置的视频解码器强制使用设置的字幕解码器下面根据这些参数与前面介绍过的一些参数进行组合案例如下从开始播放一个视频播放时长为播放完成后自动退出播放器 的窗口标题为命令如下 75                           76       3.11.3-demuxers支持的解封装器格式󰁒用于列举所有可用的解封装器格式代表解 封装支持的 格式代表封 装支持的格式代表封装解封装都支持的格式󰁒属于解封装格式所以只包含类型的格式由于内容太多笔者删除了一些不常用的格式具体输出信息如下        77             78                3.11.4-devices支持的设备󰁒用于列举所有可用的设备代表解封装支持的格式代表封装支持的格式代表封装解封装都支持的格式具体输出信息如下 类型的捕获设备 79下的帧抓取器可以录屏 虚拟输入设备的输出设备下的用于视频捕获3.11.5-encoders支持的编码器格式󰁒用于列举所有可用的编码器格式代表视频格式代表音 频格式代表字幕格式代表帧级别的多线程运算代表 条带 级别的 多线 程运算代表 实验 的编解码器代表支持绘制水平带代表直 接渲染由于内 容太多笔者删 除了一些 不常用 的格式具体输出信息如下采样格式格式 编码视频编码视频编码编码属于的开源编码器     80 编码           81       82    3.11.6-decoders支持的解码器格式󰁒用于列举所有可用的解码器格式代表视频格式代表音 频格式代表字幕格式代表帧级别的多线程运算代表 条带 级别的 多线 程运算代表 实验 的编解码器代表支持绘制水平带代表直 接渲染由于内 容太多笔者删 除了一些 不常用 的格式具体输出信息如下 83            84             40播放完毕后自动退出强制使用解码器解码󰁒格式的视频将会报错的音视频流信息如图󰁒所示命令如下图󰁒的视频流格式注意这里的中的视频流是用󰁒编码的而不是该案例中会提示一些报错信息因为强制使用解码器所以会提示找不到代码如下   '' 85    '                   86    3.11.7-protocols支持的协议格式󰁒用于列举所有可用的协议格式分为输 入协议和输 出协议具体输 出信息如下以开头的部分是笔者的注释 87输入类型的协议 本地文件文件传输协议直播协议直播推流协议实时流协议用于音视频数据的传输输出类型的协议 883.11.8-hwaccels支持的硬件加速格式󰁒用于列举所有可用的硬件加速格式具体输出信息如下是显卡厂商推出的运算平台是的简称中文译为视频硬件加速是微软公司专门制定的视频加速规范它共有两个版本分别是和的硬件加速方案硬件加速3.11.9-layouts支持的声道模式󰁒用于列举所有可用的声道模式具体输出信息如下 独立声道   左前 右前 中前低频 左后  右后 89 左中前 右中前 中后 左侧 右侧 中上     标准声道模式   单声道 双声道左前右前 声道    90 3.11.10-sample_fmts支持的采样格式󰁒用于列举所有可用的采样格式具体输出信息如下无符号位有符号位有符号位位位代表平面模式例如和的不同点在于数据的排列方式前者相邻连续排列后者则分离排列但是现在有相当多的音频文件采用方案如都有对应的方式无符号位平面模式3.11.11-colors支持的颜色名称󰁒用于列举所有可用的颜色名称具体输出信息如下  爱丽丝蓝 古董白蓝色 棕色 91 深灰色     深红色  深紫色 灰色绿色紫色小麦色白色 黄色3.11.12-pix_fmts支持的像素格式󰁒用于列举所有可用的像素格式代表支持输入代表支持输出代表支持调色板代表支持硬件加速代表支持位流具体输出信息如下名称 单元数 每像素的位数每像素占位分别存储 92每像素占位每像素占位                 93             94             41注意这里提示找不到码流规定的如果使用播放视频时希望加载字幕文件则可以通过加载或者字幕文件来解决下面举一个加载字幕 的例子首先编 辑字幕文 件将这些 内容存储为普通文本格式文件名为在本书课件资料的目录下并与要 播放的视频文件放到同一个目录下具体内容如下这里是梅老师的课程欢迎您进入的音视频世界祝大家万事如意学有所成然后通过将字幕文件加载到播放数据中显示效果如图󰁒所示命令如下图󰁒播放字幕文件 95                96      42在该案例中完整的输出信息如下注意开头的内容是笔者添加的注释信息 的编译选项这里开启的第三方编码器比较多读者可以顺便熟悉一下         ''输入文件的第路流格式为帧秒等 43输入文件的第路流格式为立体声采样格式等解析字幕信息3.2.3ffplay的数据可视化分析应用使用除了可以播放视频流媒体文 件之外还可以 作为可视化 的视频流媒 体分析工具例如当播放音频文件时有时不确定文件的声音是否正常此时可以直接使用播放音频文件播放时将会把解码后的音频数据以音频波形显示出来如图󰁒所示从图中可以看到音频在播放时的波形可以通过振幅显示出来通过振幅可以判断音频的播放情况命令如下图󰁒播放音频并显示波形图 443.2.4VLC作为RTSP流媒体服务器的功能很强大不仅是一个视频播放器也可作为小型的视频服务器还可以一边播放一边转码把视频流发送到网络上作为视频服务器的具体步骤如下单击主菜单中媒体下的流在弹出的对话框中单击添加按钮选择一个本地视频文件如图󰁒所示图󰁒流媒体服务器之打开本地文件单击页面下方的串流添加串流协议如图󰁒所示图󰁒流媒体服务器之添加串流协议
文档格式: pdf,价格: 2下载文档
返回顶部