我正在创建一个支持在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文件。 如果可以的话,我做错了什么?
答案 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)可以:
播放.m3u8文件(前提是它们由http服务器提供)
在.m3u8(视频和音频)中播放AES-128加密的.ts / .aac / .mp3文件
终于有效了! YEY!