1

我正在创建一个支持在 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 文件。如果可以,我做错了什么?

4

1 回答 1

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 文件(视频和音频)

它终于奏效了!耶!

于 2012-07-05T00:12:44.130 回答