Медиа-проигрыватель потокового видео для iPhone

Я надеюсь создать приложение для потоковой передачи видео в реальном времени, в котором сверху будет вид с метками и кнопкой.

Судя по моему исследованию и тестированию функции потокового видео по протоколу http (доступной с ОС iPhone 3.0), кажется, что вы создаете веб-просмотр, который указывает на индексный html, содержащий преобразованный видеопоток, и это отображается в приложении как видео Quicktime. Это означает, что у меня нет контроля над открытым медиаплеером. Кто-нибудь знает, как можно это контролировать?

Я знаю, что пример кода Apple MoviePlayer показывает вам, как размещать просмотры поверх видео MediaPlayer, но как это можно сделать с помощью прямого потока http?

Заранее спасибо.


person user218485    schedule 03.02.2010    source источник


Ответы (1)


Теперь у меня просто проблема с отображением вида / метки / кнопки поверх видео проигрывателя. В примере проекта Apple MoviePlayer вы можете добавить представление поверх видео с помощью этого кода:

MoviePlayerAppDelegate *appDelegate = (MoviePlayerAppDelegate *)[[UIApplication sharedApplication] delegate];     

// initialize a new MPMoviePlayerController object with the specified URL, and play the movie
[appDelegate initAndPlayMovie:[self localMovieURL]];

NSArray *windows = [[UIApplication sharedApplication] windows];

if ([windows count] > 1) {
     // Locate the movie player window
     UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];

     // Add our overlay view to the movie player's subviews so it is displayed above it.
     [moviePlayerWindow addSubview:self.overlayView];
}

Overlayview - это представление, которое содержит запрошенную метку и кнопку. Однако, когда я применяю тот же код к URL-адресу фильма, содержащему файл .m3u8, он не отображает представление наложения, например, http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8

NSURL *newMovieURL = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8">];

if (movieURL) {
     NSLog(@"movieURL");

     if ([movieURL scheme])     // sanity check on the URL
     { NSLog(@"[movieURL scheme]");
          [appDelegate initAndPlayMovie:newMovieURL];

          NSArray *windows = [[UIApplication sharedApplication] windows];
          NSLog(@"windows count:%d", [windows count]);

       if ([windows count] > 1) {
          UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
          [moviePlayerWindow addSubview:self.overlayView];
          }
     }
     else NSLog(@"![movieURL scheme]"); } else
     NSLog(@"!movieURL");

Количество возвращаемых окон равно 1, в отличие от 2 в предыдущем примере, даже если фильм воспроизводится. Когда я проверяю URL-адрес, чтобы убедиться, что все в порядке, movieURL возвращает значение null, но по-прежнему воспроизводит потоковый контент. Я попытался удалить проверку того, что количество окон больше 1, но он по-прежнему не отображал представление наложения.

Кто-нибудь знает способ обойти это? Спасибо

person user218485    schedule 04.02.2010