ffmpeg - 如何使用 ffmpeg 为 Chromecast 创建 DASH VOD?
问题描述
我需要从网络服务器向移动客户端提供长视频(约 2 小时),客户端应该能够通过Chromecast
. 我mpeg-dash
为此选择了:视频编码器是h.264
(4.1级),音频是aac
(尽管我尝试过不同的)。
我已经尝试过ffmpeg
,MP4Box
以及其他一些生成视频的工具;大多数时候我成功地在 VLC 或移动客户端(本地)上播放它们,但不是用 Chromecast。
我已经尝试过亚马逊的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
)。
推荐阅读
- javascript - 在 Vue 中动态更改手风琴图标
- c++ - 按值返回 std::string - 为什么内部缓冲区指向现有内存?
- amazon-timestream - AWS 时间流:如何在特定时区按天分组
- javascript - Javascript/jQuery 根据计划时间显示/隐藏循环显示/隐藏数据
- python - pyspark df.select(*) 在 df.sort() 之后是无序的
- java - 在 Spring 中用 @Value 替换环境
- python - 熊猫:寻找时间模式
- java - 不兼容的类型 java.sql.timestamp 无法转换为 java.security.timestamp
- firebase - Firebase 存储安全?
- reactjs - 在 React Native 中垂直对齐组件