1

我阅读了https://developers.google.com/tv/android/articles/hls?hl=en并不清楚“自适应流媒体 - 自动适应拥塞或带宽可用性。”是什么意思?它仅在播放器启动时有效,还是在玩时也有效?

在我的练习中,视频从当前带宽的质量开始;例如 .m3u8 文件包含链接和带宽列表:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1950000
http://link1.M3U8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1500000
http://link2.M3U8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1200000
http://link3.M3U8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=950000
http://link4.M3U8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=800000
http://link5.M3U8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=700000
http://link6.M3U8

例如,我当前的带宽为 1600000,播放器 (VideoView) 开始播放来自链接 2 的视频。在播放时,我的带宽变为 900000,但播放器仍继续播放来自链接 2 的视频,但有缓冲延迟。

播放器是否正常工作,或者他应该切换到链接 5?

如果正确,我可以在不重新启动视频的情况下以某种方式切换视频链接吗?

谢谢!

更新: 测试设备 Logitech Reveue,android 3.2。视频播放器 - VideoView。

4

1 回答 1

1

首先 - 您展示的清单是 HLS aka HTTP Live Streaming而不是 Microsoft 的SmoothStreaming

HLS 中的每个段通常为 10 秒。

您没有提及您的播放器是什么,但我认为它是 GoogleTV,因为这是您标记问题的内容。不同的玩家表现不同,但基本思想是相同的。播放器测量获得每个段所需的时间,如果及时,它往往会保持不变,如果花费的时间太长,它将尝试选择一个带宽,它可以在需要之前获得一两个段玩它。如果您看到缓冲延迟,那是一个错误。您应该能够在日志文件中查看播放器在播放内容时正在做什么,以及为什么它没有切换到不同的带宽。

于 2013-04-05T23:03:05.937 回答