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

时间:2012-07-04 01:18:37

标签: macos media-player http-live-streaming qtkit m3u

我正在创建一个支持在Mac OS环境中播放hls文件(.m3u8)的应用程序,我刚刚发现AVFoundation仅适用于Mac OS 10.7及更高版本。

所以,我已经离开了QTKit。

Apple关于HLS的文档说HLS可以使用AVFoundation和QTKit框架在Mac OS上播放。 (好吧,他们使用'AND'这个词......我希望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文件。 如果可以的话,我做错了什么?

1 个答案:

答案 0 :(得分:1)

好的,我刚刚发现我一直在访问位于我目录本地的m3u8文件。 由于这是HLS,因此需要有一个http服务器来提供播放列表文件。

我以前的absoluteURL是 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文件

  3. 终于有效了! YEY!