在 MacOS 10.6.8 中使用 QTKit 玩 HLS (.m3u8)



我正在创建一个支持在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采用)可以:

  1. 播放 .m3u8 文件(前提是它们由 HTTP 服务器提供服务)

  2. 播放 .m3u8 中的 AES-128 加密 .ts/.aac/.mp3 文件(视频和音频)

它终于奏效了!耶!

相关内容

  • 没有找到相关文章

最新更新