使用 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
浏览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 自己的示例 HLS 视频),但我似乎无法让这些资源中的任何一个工作。
我试过https://v.redd.it/3hyw7hwoajn21/HLSPlaylist.m3u8将流类型设置为“实时”或“缓冲”,我已经尝试将内容类型设置为“application/x-mpegURL”,并且我对内容类型为“application/dash+xml”的破折号 URL https://v.redd.it/3hyw7hwoajn21/DASHPlaylist.mpd进行了同样的尝试,但也无济于事。我发现这个问题似乎表明了某种可能性?
我还注意到 DASH 文件有一个单独的视频和音频流( https://v.redd.it/3hyw7hwoajn21/DASH_720和https://v.redd.it/3hyw7hwoajn21/audio)最坏的情况是一种在 Chromecast 上也播放单独的音频流来播放视频流的方法?
Chromecast 不能播放这些视频类型吗?
更新
Jesse 和 aergistal 认为这与缺少 CORS 标头有关。我构建了一个自定义接收器应用程序,以便能够获得更好的调试日志,这确实是(第一个)问题;Chromecast 抱怨 CORS。
我使用 nginx 构建了一个本地反向代理,它添加了所有 CORS 标头,然后我给 Chromecast 提供了该代理 URL,这个 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 上的播放问题,它是否注定无法工作?