HTTP Live Streaming с AVPlayer в iOS 4.0? - PullRequest
4 голосов
/ 22 июня 2011

Можно ли использовать HTTP Live Streaming с AVPlayer на iOS 4.0? Это была явно задокументированная особенность 4.0. Однако, если я запускаю пример кода Apple SitchedStreamPlayer на моем 3GS под управлением iOS 4.0.1, нажатие «Загрузить фильм» не воспроизводит поток, но выдает ошибку:

2011-06-21 13: 14: 49.428 StitchedStreamPlayer [680: 307] Треки ресурса не были загружены из-за ошибки: Не удается открыть

MPMediaPlayer может воспроизводить тот же поток на одном устройстве. Однако мне нужно рабочее решение с AVPlayer.

Кто-нибудь знает, как заставить код Apple StichedStreamPlayer работать на 4.0? Требования Runtime говорят, что он должен работать на «iOS 4.0 или более поздней версии».

Спасибо!

1 Ответ

6 голосов
/ 23 июня 2011

Это ошибка в 4.0, но я нашел обходной путь.Вот правильный способ загрузки видео с AVPlayer:

    AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://qtdevseed.apple.com/addemo/ad.m3u8"]];
// now use KVO to decide when it's ready to play
// works in both 4.3 and 4.0.1

Код из StitchedStreamPlayer работает в 4.3, но не 4.0.1:

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:@"http://qtdevseed.apple.com/addemo/ad.m3u8"] options:nil];
    NSArray *tracksKeys = [NSArray arrayWithObjects:kTracksKey, kDurationKey, kPlayableKey, nil];
    [asset loadValuesAsynchronouslyForKeys:tracksKeys completionHandler:
     ^{
         NSError *error = nil;
         AVKeyValueStatus status = [asset statusOfValueForKey:[tracksKeys objectAtIndex:0] error:&error];
         NSLog(@"status=%@,error=%@",(status==AVKeyValueStatusLoaded?@"Loaded":status==AVKeyValueStatusFailed?@"Failed":@"?!"),error);
     }];

// output in 4.3: status=Loaded,error=(null)
// output in 4.0.1:  status=Failed,error=Error Domain=AVFoundationErrorDomain Code=-11828 "Cannot Open" UserInfo=0x15f2a0 {NSLocalizedFailureReason=This media format is not supported., NSUnderlyingError=0x1599e0 "The operation couldn’t be completed. (OSStatus error -12847.)", NSLocalizedDescription=Cannot Open}

Для получения дополнительной информации см. старую версию StitchedStreamPlayer .

...