【发布时间】:2019-08-09 00:21:07
【问题描述】:
使用 URL http://192.168.xx.xx:8080/3hyw7hwoajn21/HLSPlaylist.m3u8 调用代理 使用 URL http://192.168.xx.xx:8080/3hyw7hwoajn21/HLS_540_v4.m3u8 调用代理 使用 URL http://192.168.xx.xx:8080/3hyw7hwoajn21/HLS_AUDIO_160_K_v4.m3u8 调用代理 使用 URL http://192.168.xx.xx:8080/3hyw7hwoajn21/HLS_224_v4.m3u8 调用代理
这是一个 Reddit 视频示例:https://www.reddit.com/r/me_irl/comments/b3vrs4/me_irl
浏览the JSON,有几个视频源选项:
"reddit_video": {
"dash_url": "https://v.redd.it/3hyw7hwoajn21/DASHPlaylist.mpd",
"duration": 76,
"fallback_url": "https://v.redd.it/3hyw7hwoajn21/DASH_720?source=fallback",
"height": 720,
"hls_url": "https://v.redd.it/3hyw7hwoajn21/HLSPlaylist.m3u8",
"is_gif": false,
"scrubber_media_url": "https://v.redd.it/3hyw7hwoajn21/DASH_240",
"transcoding_status": "completed",
"width": 1280
}
虽然我似乎可以让其他 HLS/m3u8 视频与 Chromecast SDK 一起工作(例如 Google's own example HLS video),但我似乎无法让这些来源中的任何一个工作。
我尝试https://v.redd.it/3hyw7hwoajn21/HLSPlaylist.m3u8 将流类型设置为“live”或“buffered”,我尝试将内容类型设置为“application/x-mpegURL”,并且我尝试了相同的带有内容类型“application/dash+xml”的破折号 URL https://v.redd.it/3hyw7hwoajn21/DASHPlaylist.mpd 也无济于事。我发现this question 似乎暗示了某种可能性?
我还注意到 DASH 文件有一个单独的视频和音频流(https://v.redd.it/3hyw7hwoajn21/DASH_720 和 https://v.redd.it/3hyw7hwoajn21/audio),最坏的情况是有办法在 Chromecast 上播放视频流并同时播放单独的音频流?
Chromecast 不能播放这些视频类型吗?
更新
Jesse 和 aergistal 认为这与缺少 CORS 标头有关。我构建了一个自定义接收器应用程序,以便能够获得更好的调试日志,这确实是(第一个)问题; Chromecast 抱怨 CORS。
我使用 nginx 构建了一个本地反向代理,它添加了所有 CORS 标头,然后我将代理 URL 提供给 Chromecast,这个 CORS 错误就消失了。
但是,使用 HLS/m3u8 链接仍然无法流式传输。现在它抱怨以下内容:
[cast.player.hls.PackedAudioParser] 在 0 处找不到 ID3 和 ADTS 标头
和
[cast.player.api.Host] 错误:cast.player.api.ErrorCode.NETWORK/315
和
[cast.receiver.MediaManager] 加载元数据错误:错误
完整日志:
这导致它仍然无法播放。有什么想法吗?
添加 CORS 问题允许加载 DASHPlaylist.mpd 变体(以前不会),这很好,但同时不是那么好,因为反向代理要求您首先下载整个响应,以及在哪里DASH URL 只是一个完整的 MP4(而 HLS 是字节范围),这意味着反向代理必须先下载整个 DASH 视频才能显示它,这与 HLS 相比需要很长时间。
因此,由于速度的原因,让 HLS 工作仍然是最佳选择,但由于 Chromecast 上的播放问题,它是否注定无法工作?
【问题讨论】:
-
也许 DASH 值得一试。 developers.google.com/cast/docs/mpl/streaming_protocols.
-
@Jesse 你到底是什么意思?如上所述,在使用 DASH 流 URL 时,我尝试将“application/dash+xml”作为内容类型,我应该做一些不同的事情吗?
-
嗯,看来您需要为仪表板构建一个接收器。这对灭霸来说似乎有很多工作,哈哈。
-
@Jesse 我有点想为 Reddit 构建一个视频应用程序,所以它基本上适用于整个 Reddit 视频平台,而不仅仅是这个 Thanos 视频。接收器应用程序是什么意思?这将如何改变事情?我认为即使使用接收器应用程序,您也不能同时拥有两个活动的媒体流,可以吗?
-
嗯,
实际上就是它所说的,或者这就是屏幕截图的内容?它应该是一个真实的网址。
标签: chromecast google-cast http-live-streaming mpeg-dash google-cast-sdk