我正在创建一个支持在Mac OS环境中播放hls文件(.m3u8)的应用程序,我刚刚发现AVFoundation仅适用于Mac OS 10.7及更高版本。
所以,我只剩下QTKit了。
苹果关于HLS的文档说,HLS可以使用AVFoundation和QTKit框架在Mac OS上播放。(好吧,他们使用了"和"这个词...我希望QTKit单独可以播放m3u8文件---因为QuickTime X播放器播放得很好)
无论如何,我已经调整了Apple的MyMediaPlayer示例代码以适应.m3u8文件。(示例代码可以在这里看到:http://developer.apple.com/library/mac/#samplecode/MyMediaPlayer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009203)
这是QTMovie initWithAttributes的代码片段:
NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:
absoluteURL, QTMovieURLAttribute,
[NSNumber numberWithBool:YES], QTMovieOpenForPlaybackAttribute ,
[NSNumber numberWithBool:YES], QTMovieOpenAsyncRequiredAttribute,
[NSNumber numberWithBool:YES], QTMovieOpenAsyncOKAttribute,
nil];
[self willChangeValueForKey:@"movie"];
mMovie = [[QTMovie alloc] initWithAttributes:attrs error:outError];
[self didChangeValueForKey:@"movie"];
我想玩的是这个:
prog_index.m3u8 --> 我使用 Apple 的 MediaFileSegmenter 制作。
请告诉我QTKit框架是否可以单独播放HLS文件。如果可以,我做错了什么?
好的,我刚刚发现我一直在访问位于本地目录中的 m3u8 文件。由于这是HLS,因此需要有一个http服务器来提供播放列表文件。
我以前的绝对网址是 file://localhost/Users/guest/Desktop/Music/stream01/index.m3u8
QTKit 在建立自己的服务器并将播放列表文件的路径更改为: http://192.168.0.XX/stream01/index.m3u8
QTKit(被Quick Time X Player采用)可以:
-
播放 .m3u8 文件(前提是它们由 HTTP 服务器提供服务)
-
播放 .m3u8 中的 AES-128 加密 .ts/.aac/.mp3 文件(视频和音频)
它终于奏效了!耶!