使用 FFMPEG 播放 MPEG-dash 流

Tha*_*yen 1 ffmpeg mpeg-dash

使用 ffmpeg 播放 MPEG-dash 流时遇到问题。我知道有很多工具可以播放 MPEG-dash,比如 OSMO4、DASH.js.. 但是,我想知道我是否可以用 FFMPEG 播放 MPEG-dash?还有一个问题,如何在播放 MPEG-dash 流时确定启动时间?这意味着,我从服务器请求 MPD 文件直到我在屏幕上获得第一张视频显示的持续时间?谢谢!

Pie*_*erz 6

ffmpeg 现在可以(票证:5269 , 7382已修复)播放 MPEG DASH,但您需要确保在二进制文件中启用了支持(这似乎并不常见,因为 DASH 解复用支持似乎在默认情况下通常不启用)。正如@aergistal 在评论中提到的,您可以检查破折号解复用支持(根据 DASH MPD,您还需要适当的编解码器支持,但通常会启用大多数常用编解码器):

ffmpeg -formats | grep dash
Run Code Online (Sandbox Code Playgroud)

它应该显示(D表示支持 Demuxing 和Emuxing):

DE dash            DASH Muxer
Run Code Online (Sandbox Code Playgroud)

如果您没有看到 DASH Demuxing 支持,那么您需要(重新)编译 ffmpeg。下载源代码,解压并进入 src 代码目录,然后使用 configure 启用 dash demuxing 支持(libxml2如果没有,您还需要安装支持):

ffmpeg-X.X.X$ ./configure --enable-demuxer=dash --enable-libxml2
ffmpeg-X.X.X$ make
Run Code Online (Sandbox Code Playgroud)

启用支持后,您应该能够像这样播放测试流:

ffplay  http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd
Run Code Online (Sandbox Code Playgroud)

要回答您的第二个问题 - 启动延迟取决于下载 MPD 然后在 MPD 中执行操作所需的时间 - 通常它需要下载初始化段,然后在播放开始之前获取第一个媒体段。