Avplayer不从本地文件播放M3U8



我试图让Avplayer播放一个本地文件的M3U8播放列表。

我使用Apple的一个示例播放列表之一将其范围缩小到一个简单的测试用例:

https://tungsten.aaplimg.com/VOD/bipbop_adv_fmp4_example/master.m3u8

如果我从远程URL播放此播放列表,Avplayer会播放此效果。但是,如果我将此播放列表下载到本地文件,然后将Avplayer授予本地文件URL,则Avplayer将不会播放它。它只是显示了交叉的播放符号。

有趣的是,这也可以用Safari复制。Safari将播放远程播放列表,而不是本地文件。还要注意的是,Avplayer的这种行为在iOS 10.2以及MACOS 10.12.1上是相同的。另外,直接播放MP4媒体文件(未包装在播放列表中)似乎没有这个问题,因为它既可以从远程URL和本地文件中播放。

检查avplayeritem.error也不会导致任何有用的东西:

An unknown error occurred (-12865)
The operation could not be completed

有人知道Avplayer不会播放本地播放列表的任何限制吗?

谢谢。

m3U/m3U8文件必须存储在服务器上并流式传输以播放(我知道这听起来不合理,但是Apple又来了)。您必须使用HLS,这基本上意味着您应该将文件存储在服务器上并直接从那里访问。您还可以使用GCD WebServer之类的框架来创建应用程序内部的本地服务器。

在iOS 10开始时,您可以使用AvassetDownloadurlsession下载HLS流。这将导致可以脱机播放的本地资产路径。

如果您要在应用程序包中嵌入视频,那么最好只创建MP4。

最新更新