如何使用 ffmpeg 为 Chromecast 创建 DASH VOD?

How to create a DASH VOD for Chromecast with ffmpeg?

我需要从 Web 服务器向移动客户端提供长视频(约 2 小时),并且客户端应该能够通过 Chromecast 播放视频。为此,我选择了 mpeg-dash:视频编码器是 h.264(级别 4.1),音频是 aac(尽管我尝试过不同的编码器)。

我试过ffmpegMP4Box和其他一些工具来生成视频;大多数时候我都能在 VLC 或移动客户端(本地)上成功播放它们,但无法使用 Chromecast。

我试过 Amazon 的 Elastic Transcoder 并且它有效,但它给了我一个大文件,而我需要许多小片段。

CORS 已设置。

Chromecast 远程调试没有多大帮助。

你知道怎么做吗?

终于,我成功了。这是将视频文件转换为可由 Chromecast 播放的多段短划线的脚本:

ffmpeg -y -threads 8 \
-i input.ts \
-c:v libx264 \
-x264-params keyint=60:scenecut=0 \
-keyint_min 60 -g 60 \
-flags +cgop \
-pix_fmt yuv420p \
-coder 1 \
-bf 2 \
-level 41 \
-s:v 1920x1080 \
-b:v 6291456 \
-vf bwdif \
-r 30 \
-aspect 16:9 \
-profile:v high \
-preset slow \
-acodec aac \
-ab 384k \
-ar 48000 \
-ac 2 \
output.mp4 2> output/output1_ffmpeg.log \
\
&& MP4Box -dash 2000 \
-rap \
-out output/master.mpd \
-profile simple \
output.mp4#video output.mp4#audio 2> output/output2_mp4box.log

如你所见,首先我对输入文件进行了编码;然后我使用 MP4Box 将其转换为破折号。请注意,Chromecast 可能无法播放超过 2 个音频通道的视频(我使用 2 个 -ac 2)。