0

我希望制作一个流式传输实时视频的应用程序,该应用程序的顶部有一个视图,上面有标签和一个按钮。

根据我对 http 视频流功能(自 iPhone 3.0 操作系统起可用)的研究和测试,您似乎创建了一个指向包含转换后的视频流的索引 html 的 web 视图,并在应用程序中显示为快速视频。这意味着我无法控制打开的媒体播放器。有谁知道你怎么能控制这个?

我知道 Apple 的 MoviePlayer 示例代码向您展示了如何在 MediaPlayer 视频上放置视图,但是如何使用 http 直播流来完成呢?

提前致谢。

4

1 回答 1

0

我现在只是在电影播放器​​视频顶部显示视图/标签/按钮时遇到问题。在 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];
}

覆盖视图是一个包含请求的标签和按钮的视图。但是,当我将相同的代码应用于包含 .m3u8 文件的电影 url 时,它不会显示覆盖视图,例如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 的检查,但它仍然没有显示覆盖视图。

有人知道解决这个问题的方法吗?谢谢

于 2010-02-04T13:10:37.043 回答