在iPAD上播放多个视频

Playing Multiple Videos on iPAD

提问人:makboney 提问时间:3/6/2011 更新时间:9/30/2014 访问量:11671

问:

我在iPAD上播放多个视频时遇到了一些问题。我正在尝试在同一视图上播放多个缩略图视频。你可以说它很像闭路电视摄像机。好吧,我不知道。请帮帮我。提前致谢...

iPhone Xcode iPad MPmoviePlayer控制器

评论

1赞 Stefan H 3/6/2011
MPMoviePlayer 控制器将允许多个实例,但在任何给定时间,只有一个实例可以播放其电影。
0赞 Chris Wagner 3/15/2011
如果这是针对闭路电视的,那么在设定的频率下轮询每个摄像机的静止图像似乎是合理的。然后,用户可以触摸摄像头以查看该摄像头的实时视频。否则,听起来您将需要实现自己的视频播放器。
1赞 Steve McFarlin 3/15/2011
另一种方法是使用 AVAssetReader 读取两个电影文件。然后,您可以将数据推送到 OpenGL 中并渲染两个视频纹理。您也许能够使用两个源创建视频合成,并将其馈送到单个 MPMoviePlayer。
0赞 makboney 3/16/2011
我可以从iPad 2(1 GHz双核处理器)获得任何支持吗?或者完全符合iOS限制。
0赞 makboney 3/16/2011
@Steve麦克法兰,你能给我一些样品吗?你会很好......

答:

0赞 Zebs 3/6/2011 #1

这实际上在iPad上非常简单。

你基本上需要多个对象。MPMoviePlayerController

每个对象都有一个属性,你只需要在不同的对象上设置框架,以匹配你想要的外观。MPMoviePlayerControllerviewviewsMPMoviePlayerController

这是一个使用两个对象和 2 个不同对象的简单示例:MPMoviePlayerControllerframes

MPMoviePlayerController *player =
        [[MPMoviePlayerController alloc] initWithContentURL: myURL];
[[player view] setFrame: yourFrame1];
[myView addSubview: [player view]];
// ...
[player play];

MPMoviePlayerController *player2 =
            [[MPMoviePlayerController alloc] initWithContentURL: myURL2];
[[player2 view] setFrame: yourFrame2];
[myView addSubview: [player2 view]];
// ...
[player2 play];

评论

0赞 makboney 3/6/2011
谢谢。。。但正如 Stefan 所说,只有一个实例获得了控制权。这里最后一个实例(player2)处于活动状态。
1赞 Zebs 3/6/2011
@makboney:我已经确认了这种情况,而且似乎没有办法不破坏苹果的政策。需要注意的是,此限制是基于硬件的;因此,随着新的双核iPad的推出,这种情况可能会改变。
6赞 Stefan H 3/6/2011 #2

MPMoviePlayerController 将允许多个实例,但在任何给定时间,只有一个实例可以播放其电影。

它在这里提到它:http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/MPMoviePlayerController/MPMoviePlayerController.html

来自文章:

注: 尽管您可以创建多个 MPMoviePlayerController 对象并在界面中显示其视图,但一次只能播放一个影片播放器。

评论

1赞 makboney 3/6/2011
谢谢。。。但是,是否有可能进行彻底的多线程处理呢?
0赞 Stefan H 3/6/2011
不,我不这么认为。即使有可能,它也可能会违反苹果的政策,因此不允许你的应用程序进入应用商店。
0赞 Stefan H 3/6/2011
可能是一种选择,即让它交替启动和停止每个视图,以便它循环浏览它们。
1赞 makboney 3/6/2011
你是说以循环顺序将控制权交给每个实例。但这可行吗?因为有多个视图,除了一个视图外,所有视图都将处于停止状态。但是我需要同时处于运行状态。
0赞 Stefan H 3/6/2011
你想要的是行不通的。你不能让它们同时播放。我的建议是,如果你试图做的事情就像安全摄像头的视图,你可以一个接一个地循环播放每个“摄像头”。打开一个,玩一会儿,关一个,关两个,等等。
-1赞 Khaldoun 4/6/2011 #3

可能是: 创建 WebView 并使用 HTML5 Video 实例时,您可以同时运行多个视频

3赞 Sam Keene 7/18/2011 #4

您不能使用 MKMediaFramework 播放多个视频。但是,您可以使用较低级别的 AVFoundation Framework 来执行此操作。这并不像你想象的那么难,我在这里做了一个教程来介绍它:http://www.sdkboy.com/?p=66

从本质上讲,您需要做的是扩展 UIView,使其包含一个 AVPlayerLayerLayer,AVPlayer 对象的输出定向到该 AVPlayerLayer,然后您可以创建此 UIView 的多个实例,并使用 AVPlayer 实例馈送视频。

评论

0赞 Krishnabhadra 7/27/2011
看过你的教程..很聪明..但苹果会在App Store上接受这个吗
0赞 Sam Keene 9/10/2011
嗨,克里希纳巴德拉,这应该不是问题,因为您没有违反任何Apple的规则。应用商店中已经有几个用于 VJing 的应用程序可以播放多个视频。如果您的应用程序的性质需要多个视频并且它是稳定的,那么应该没有任何问题。