2016-02-19 4 views
1

В iPhone-приложении, которое воспроизводит видео в реальном времени с сервера через HTTP Live Streaming, можно ли получить доступ к декодированным видеокадрам после декодирования?Перехват видеокадров в клиенте HTTP Live Streaming на iOS

Насколько я могу видеть AVPlayer, MPMoviePlayer и CoreVideo, кажется, не обеспечивают функцию обратного вызова, чтобы уведомить приложение, что отдельный кадр был декодирован.

Мой вопрос похож на «Record HTTP Live Streaming Video To File While Watching?», за исключением того, что я не обязательно интересуюсь полной функциональностью DVR. Один ответ там предлагает решение на стороне сервера и смутно говорит о возможности решения на стороне клиента. Он также похож на «Recording, Taking Snap Shot with HTTP Live streaming video running MPMoviePlayerController in iOS», за исключением того, что мне не требуется решение для работы с MPMoviePlayerController.

ответ

1

Это возможно с помощью «AVPlayerItemVideoOutput», как это:

NSDictionary *options = @{ (__bridge NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA), 
          (__bridge NSString *)kCVPixelBufferOpenGLESCompatibilityKey : @YES }; 
myOutput = [[AVPlayerItemVideoOutput alloc] initWithPixelBufferAttributes:options]; 
myOutput.suppressesPlayerRendering = NO; 
[myOutput requestNotificationOfMediaDataChangeWithAdvanceInterval:1]; 
[myOutput setDelegate:self queue:dispatch_get_main_queue()]; 
[playerItem addOutput:myOutput]; 

Я сделал это в несколько моих проектов .. Позаботьтесь и удачи!

FYI: (AVPlayerItem *playerItem;)

/Андерс.