AVPlayer - 播放时切换流质量

Eya*_*yal 6 youtube objective-c ios avplayer

我正在AVPlayer玩youtube视频,对于每个youtube视频ID,我检索了几个不同质量的流网址.

我想根据网络状态播放特定的流质量.例如,如果用户在3G上,我想播放质量最低的URL,但如果用户移动到wifi,我想无缝切换到质量更好的流.

这不是什么新鲜事,youtube正在他们的应用程序和许多其他人这样做.

所以我想知道进行这种切换的最佳方式是什么AVPlayer,我不希望用户注意到切换,而不会暂停视频播放或缓冲.
有什么建议吗?

我不确定youtube服务器是否支持这种功能,或者我是否需要在客户端进行此功能.

小智 9

您应该查看有关HTTP直播的Apple 文档.

实现所需切换类型的唯一方法是使用m3u索引文件和包含视频数据的TS文件.

您连接到索引文件并存储其内容,这将是多个URL以及带宽要求.请参阅此处的示例.然后使用 Reachability类检查网络状态并连接到相应的流.启动Reachability通知程序并通过更改您连接的流来对事件做出反应.这将导致下载和缓冲属于流的TS文件以进行回放,从而实现所需的切换类型.

正如我之前所说,缺点是需要使用TS文件.这意味着您必须从Youtube下载视频文件,使用Apple提供的mediafilesegmenter命令行工具准备并存储在FTP服务器上!根本不理想,但据我所知,这是唯一的方法.