ffmpeg教程笔记(C++ffmpeg库应用开发)命令行使用篇——第二章:FFmpeg工具使用基础——第三节:ffplay常用命令

2023-12-25 09:58:48

2.3 ffplay常用命令

在编译旧版本 FFmpeg 源代码时,如果系统中包含了 SDL-1.2 版本 ,就会默认将 ffplay 编译生成出来,如果不包含 SDL-1.2 或者版本不是 SDL-1.2 时,将无法生成 ffplay 文件,所以,如果想使用 ffplay 进行流媒体播放测试,则需要安装 SDL-1.2。而在新版本的 FFmpeg 源代码中,需要 SDL-2.0 之后的版本才能有效生成 ffplay。

在FFmpeg 中通常使用 ffplay 作为播放器 ,其实 ffplay 同样也可以作为很多音视频数据的图形化分析工具,通过 ffplay 可以看到视频图像的运动估计方向、音频数据的波形等,本节将会介绍更多的参数并举例说明。

2.3.1 ffplay常用参数
ffplay --help

ffplay 不仅仅是播放器,同时也是测试 ffmpeg 的 codec 引擎、 format 引擎,以及 filter 引擎的工具,并且还可以进行可视化的媒体参数分析,其可以通过 ffplay --help 进行查看:

在这里插入图片描述

如上述帮助信息的输出所示,大多数都是前面已经介绍过的参数,这里就不再一一赘述,一些未介绍的参数说明见表 2-8。

在这里插入图片描述

常见参数可以手动进行尝试,下面列举几个示例。

ffplay -ss 30 -t 10 input.mp4(设置播放开始时间和播放时长)
  • 如果希望从视频的第 30 秒开始播放,播放 10 秒钟的文件,则可以使用如下命令:
    ffplay -ss 30 -t 10 input.mp4

在这里插入图片描述

ffplay -window_title “Hello World, This is a sample” output.mp4(播放器的窗口显示自定义标题)
  • 如果希望视频播放时播放器的窗口显示标题为自定义标题,则可以使用如下命令:ffplay -window_title “Hello World, This is a sample” output.mp4
    上述命令的显示窗口如图 2-4 所示。
    在这里插入图片描述
    在这里插入图片描述
ffplay -window_title “播放测试” rtmp://up.v.test.com/live/stream(播放网络直播流)
  • 如果希望使用 ffplay 打开网络直播流,则可以使用如下命令:
    ffplay -window_title “播放测试” rtmp://up.v.test.com/live/stream
    命令执行后显示窗口如图 2-5 所示。
    在这里插入图片描述
    根据图 2-5 所示,可以看到播放器播放的窗口标题已经显示为自定义设置的内容。
    基本参数介绍完毕,下面进一步介绍 ffplay 的高级参数。
2.3.2 ffplay 高级参数

通过使用 ffplay --help 参数可以看到比较多的帮助信息,其中包含了高级参数介绍,下面就来详细介绍一下,具体见表 2-9。
在这里插入图片描述
在这里插入图片描述

下面将这些参数与前面介绍过的一些参数进行组合,列举几个示例。

time ffplay -window_title “Hello World” -ss 20 -t 10 -autoexit output.mp4(播放完自动退出并统计命令运行时间)

例如从 20 秒播放一个视频,播放时长为 10 秒钟,播放完成后自动退出 ffplay ,播器的窗口标题为“Hello World”,为了确认播放时长正确,可以通过系统命令 time 查看命令运行时长:

time ffplay -window_title “Hello World” -ss 20 -t 10 -autoexit output.mp4

该命令执行完毕输出如下:

在这里插入图片描述
从输出的内容分析来看,实际消耗时间为 10.783 秒,用户空间消耗 8.401 秒,情况本相符。

在这里插入图片描述

ffplay -vcodec h264 output.mp4(错误示范,使用错误解码器解码视频)

例如强制使用 H.264 解码器解码 MPEG4 的视频,将会报错:

ffplay -vcodec h264 output.mp4

命令行执行之后的输出信息如下:

在这里插入图片描述

从输出的信息可以 到,使用 H.264 的解码器解码 MPEG4 会得到 no frame 的错误,视频也解析不出来。

在这里插入图片描述

ffplay -vst 4 -ast 5 -/Movies/movie/ChinaTV-11.ts(播放指定流)

前面举过的例子中,我们看到的比较多的是单节目的流,下面列举一个多节目的流,常见于广电行业的视频

在这里插入图片描述

当视频流中出现多个 Program 时,播放 Program 与常规的播放方式有所不同,需要指定对应的流,可以通过 vst、ast、sst 参数来指定,例如希望播放 Program 13 中的音视频流,视频流编号为 4,音频流编号为 5,则可以通过如下命令行进行指定:

ffplay -vst 4 -ast 5 -/Movies/movie/ChinaTV-11.ts

播放效果如图 2-6 所示。

通过 Program 13 中的信息可以看到该流的名称为 service_name ,对应的值是 BBB 9,而指定音视频流播放之后播放出来的图像也能够与之对应。

在这里插入图片描述

ffplay -window_title “Test Movie” -vf “subtitles=input.srt” output.mp4(加载字幕文件)

如果使用 ffplay 播放视频时希望加载字幕文件,则可以通过加载 ASS 或者 SRT 字幕文件来解决,下面列举一个加载 SRT 字幕的例子,首先编辑 SRT 字幕文件,内容如下:

在这里插入图片描述

然后通过 filter 将字幕文件加载到播放数据中,使用命令如下:

ffplay -window_title “Test Movie” -vf “subtitles=input.srt” output.mp4

通过这条命令可以看到播放的效果如图 2-7 所示。

在这里插入图片描述

从图 2-7 中可以看出,视频中已经将 SRT 格式的文字字幕加入到视频中并展现了出来。

2.3.3 ffplay 的数据可视化分析应用
ffplay -showmode 1 output.mp3(查看音频波形)

使用 ffplay 除了可以播放视频流媒体文件之外,还可以作为可视化的视频流媒体分析工具,例如播放音频文件时,如果不确定文件的声音是否正常,则可以直接使用 ffplay 播放音频文件,播放的时候其将会把解码后的音频数据以音频波形的形式显示出来,命令行执行后的效果如图 2-8 所示,命令如下:

ffplay -showmode 1 output.mp3

在这里插入图片描述

从图 2-8 中可以看到,音频播放时的波形可以通过振幅显示出来,可以用来查看音频的播放情况。

在这里插入图片描述

ffplay -debug vis_mb_type -window_title “show vis_mb_type” -ss 20 -t 10 -autoexit output.mp4(ffplay -debug mb_type -window_title “show mb_type” -ss 20 -t 10 -autoexit output.mp4)(可视化查看解码器解码宏块)

例如,当播放视频时想要体验解码器是如何解码每个宏块的,可以使用如下命令:

ffplay -debug vis_mb_type -window_title “show vis_mb_type” -ss 20 -t 10 -autoexit output.mp4

显示窗口内容如图 2-9 (见彩插)所示。

在这里插入图片描述

我的ffmpeg版本是4.2.7,没有vis_mb_type选项,只有mb_type选项:

ffplay -debug mb_type -window_title "show mb_type" -ss 0 -t 10 -autoexit groundhog_h264.mp4

在这里插入图片描述

在输出的视频信息中,可以看到不同颜色的方块,下面就来说明一下这些颜色分别代表什么信息,具体见表 2-10 (见彩插)。

在这里插入图片描述

ffplay -vismv pf output.mp4(查看 B 帧与 P 帧预测信息)

例如通过 ffplay 查看 B 帧预测与 P 帧预测信息,希望将信息在窗口中显示出来,可使用如下命令:

ffplay -vismv pf output.mp4

显示效果如图 2-10 所示。

在这里插入图片描述

根据图 2-10 中的箭头可以看到 P 帧运动估计的信息,而 vismv 参数则是用来显示图像解码时的运动向量信息的,可以设置三种类型的运动向量信息显示,具体见表 2-11。

在这里插入图片描述

ffplay -flags2 +export_mvs -ss 40 output.mp4 -vf codecview=mv=pf+bf+bb

这个 vismv 参数将会在未来被替换掉,未来更多的是使codecview 这个滤镜来进行设置,如图 2-10 所示,也可以通过下面这条命令来完成:

ffplay -flags2 +export_mvs -ss 40 output.mp4 -vf codecview=mv=pf+bf+bb

命令解释: 这是一个使用FFplay的命令行。FFplay是一个非常简单且轻便的媒体播放器,由FFmpeg项目提供。

让我们来解析一下这个命令:

  • ffplay:这是执行程序的名称,它会开始运行FFplay。

  • -flags2 +export_mvs:这是传递给FFplay的选项,使得在解码过程中导出运动矢量(motion vectors)。这对于分析视频编码和调试编解码器很有用。

  • -ss 40:这个选项表示从视频的第40秒开始播放。

  • output.mp4:这是要播放的文件名,即"output.mp4"。

  • -vf codecview=mv=pf+bf+bb:这是一个过滤器图表(filtergraph)设置。在这里,codecview过滤器用于可视化运动矢量。

    • mv=pf+bf+bb 是该过滤器的参数,其中:
      • pf表示显示前向预测的运动矢量,
      • bf表示显示双向预测的运动矢量,
      • bb表示显示反向预测的运动矢量。

总的来说,这条命令是使用 FFplay 从 output.mp4 文件的第 40
秒开始播放,并且显示出了视频的运动矢量,包括前向、反向和双向预测的运动矢量。这可以用于分析视频的编码方式。

示例
ffplay -flags2 +export_mvs -ss 40 groundhog_h264.mp4 -vf codecview=mv=pf+bf+bb

在这里插入图片描述
在这里插入图片描述

2.4 小结

本章对 FFmpeg 中的 ffmpeg ffprobe ffplay 进行了详细的介绍,可简要总结如下:

  • ffmpeg 主要用于音视频编解码
  • ffprobe 主要用于音视频内容分析
  • ffplay 主要用于音视频播放、可视化分析

通过对以上三个应用程序的介绍,相信大家已经了解了多媒体信息中基本信息的获取方式 ,并且学习到了一定的使用规则。至此,FFmpeg 工具使用的基础部分已经介绍完毕。

文章来源:https://blog.csdn.net/Dontla/article/details/135162542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。