AVPlayer(ViewController):无法播放HLS高清视频

时间:2015-08-10 19:49:40

标签: ios swift wowza hls avkit

我想使用AVPlayer(在Swift中)播放HLS流。

此HLS流在Safari中播放,但在我想使用AVPlayer时则不行。

我的代码:

let hlsLink = 'http://thelinktomyHLSmovie'
let player = AVPlayer(URL: NSURL(string: hlsLink)!)

let playerVC = AVPlayerViewController()
playerVC.player = player
presentViewController(playerVC, animated: true) {
    playerVC.player?.play()
}

如果我对HLS URL进行CURL以找出其中包含哪种流,我会得到:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2328000,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=1280x720
chunklist_w1751887550_b2328000.m3u8?smil=1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=128000,CODECS="mp4a.40.2"
chunklist_w1751887550_b128000_ao.m3u8?smil=1

对我来说似乎没问题。

如果我对其他更小更短的流做同样的事情,一切正常。

我已经尝试过观察AVPlayer和AVPlayerItem的状态,但是没有报告任何有用的内容。

我错过了什么?

更新

我添加了一个AVPlayerItem,正如我已经说过的那样。我还为玩家,玩家视图控制器和所有通知的播放器项添加了通知观察者,并print输出了输出。这给了我以下内容:

Optional(NSConcreteNotification 0x7fd272bcd600 {name = AVPlayerItemTimebaseChangedNotification; object = <AVPlayerItem: 0x7fd2714f6c40, asset = <AVURLAsset: 0x7fd27144e720, URL = http://hls.streamonecloud.net/vod/amlst:pwlsaeYN1ZuH/playlist.m3u8?smil=1>>})
Optional(NSConcreteNotification 0x7fd272bccaf0 {name = AVPlayerItemBecameCurrentNotification; object = <AVPlayerItem: 0x7fd2714f6c40, asset = <AVURLAsset: 0x7fd27144e720, URL = http://hls.streamonecloud.net/vod/amlst:pwlsaeYN1ZuH/playlist.m3u8?smil=1>>})
Optional(NSConcreteNotification 0x7fd272bcd710 {name = AVPlayerCurrentItemDidChangeNotification; object = <AVPlayer: 0x7fd27157ca60>; userInfo = {
    CurrentDuration =     {
        epoch = 0;
        flags = 17;
        timescale = 0;
        value = 0;
    };
    ReasonForCurrentItemDidChange = ReasonAdvanceAtEnd;
}})
Optional(NSConcreteNotification 0x7fd271759950 {name = AVPlayerItemTimebaseChangedNotification; object = <AVPlayerItem: 0x7fd2714f6c40, asset = <AVURLAsset: 0x7fd27144e720, URL = http://hls.streamonecloud.net/vod/amlst:pwlsaeYN1ZuH/playlist.m3u8?smil=1>>})

我还检查了该项目的accessLog()errorLog()。访问日志不包含任何条目(但确实存在),错误日志为nil。

我不知道该怎么做。我上面的日志包含我想要加载的URL,如果有兴趣的话(我们的服务器上只有Big Buck Bunny)。

0 个答案:

没有答案