2012-07-04 3 views
1

Я создаю приложение, которое поддерживает воспроизведение hls-файлов (.m3u8) в среде Mac OS, и я только что узнал, что AVFoundation доступен только для Mac OS 10.7 и далее.Воспроизведение HLS (.m3u8) с использованием QTKit в MacOS 10.6.8

Итак, у меня остался QTKit.

Документация Apple на HLS говорит, что HLS можно воспроизводить на Mac OS с использованием структур AVFoundation и QTKit. (Ну, они использовали слово «И» ... и я надеюсь, что QTKit может играть только файлы m3u8, поскольку проигрыватель QuickTime X играет их хорошо)

В любом случае, я изменил образец кода MyMediaPlayer от Apple до разместить файлы .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 - -> который я сделал с помощью MediaFileSegmenter от Apple.

Скажите, пожалуйста, если только каркас 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 (принята в Quick Time X Player) можно:

  1. игра .m3u8 файлов (при условии, что они обслуживаются сервером HTTP)

  2. игры AES-128 зашифрованные .ts/.aac/.mp3 файлы в .m3u8 (видео и аудио)

Это, наконец, работает! Yey!

+0

Вы пытались использовать абсолютные URL-адреса в файле списка воспроизведения? Я не могу придумать, почему это не сработает. С другой стороны, нет смысла использовать HLS, если http не является механизмом доставки. – vipw

+1

Да, я попытался установить абсолютные URL. Однако, это тоже не сработает. Вам действительно нужно иметь http-сервер для ваших файлов плейлистов. – mltpyt