2012-07-04 123 views
1

我創建了一個支持在Mac OS環境中播放hls文件(.m3u8)的應用程序,並且我剛剛發現AVFoundation僅適用於Mac OS 10.7以上。在MacOS中使用QTKit播放HLS(.m3u8)10.6.8

所以,我已經離開了QTKit。

關於HLS的Apple文檔說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

好的,我剛剛發現我一直在訪問位於本地目錄中的m3u8文件。 由於這是HLS,因此需要一個用於提供播放列表文件的http服務器。

我以前absoluteURL是 file://localhost/Users/guest/Desktop/Music/stream01/index.m3u8

搭建自己的服務器,並改變播放列表文件的路徑後QTKit工作: http://192.168.0.XX/stream01/index.m3u8

QTKit(採取快速的時間X播放器)可以:

  1. 發揮.m3u8文件(前提是由HTTP服務器提供)

  2. 發揮AES-128加密的.ts/.AAC/.MP3在.m3u8文件(視頻和音頻)

最後,它的工作原理! YEY!

+0

您是否嘗試在播放列表文件中使用絕對地址?我想不出有什麼不好的理由。 另一方面,如果http不是傳遞機制,那麼使用HLS就沒有太多意義。 – vipw

+1

是的,我曾嘗試把絕對URLS。但是,這些也不起作用。您確實需要爲您的播放列表文件提供http服務器。 – mltpyt