我在用着AVPlayer
为了播放 youtube 视频,对于每个 youtube 视频 ID,我检索几个不同质量的流 url。
我想根据网络状态播放特定的流质量。例如,如果用户使用 3G,我想播放最低质量的 URL,但如果用户移动到 wifi,我想无缝切换到质量更好的流。
这不是什么新鲜事,YouTube 在他们的应用程序和许多其他应用程序中都这样做了。
所以我想知道进行这种切换的最佳方法是什么AVPlayer
,我不希望用户尽可能注意到切换,而不暂停视频播放或缓冲。
有什么建议吗?
我不确定 YouTube 服务器是否支持这种功能,或者我是否需要在客户端执行此操作。
你应该看看苹果文档 https://developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html关于 HTTP 直播。
实现您想要的且文档中讨论的切换类型的唯一方法是使用 m3u 索引文件和包含视频数据的 TS 文件。
您连接到索引文件并存储其内容,该内容将是多个 URL 以及带宽要求。查看示例here https://developer.apple.com/library/mac/technotes/tn2288/_index.html。然后使用可达性 https://developer.apple.com/library/IOS/samplecode/Reachability/Introduction/Intro.html类来检查网络状态并连接到适当的流。启动可达性通知程序并通过更改您连接到的流来对事件做出反应。这样就会导致属于该流的TS文件被下载并缓冲播放,实现你想要的类型切换。
正如我之前所说,缺点是需要使用 TS 文件。这意味着您必须从 Youtube 下载视频文件,使用 Apple 提供的 mediafilesegmenter 命令行工具准备并存储在 FTP 服务器上!一点也不理想,但据我所知,这是唯一的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)