我目前正在使用AVPlayer和AVPlayerLayer来播放一些视频。回放视频时,我注册了视频期间每30秒更新一次的时间。这用于绘制视频中该点的加速度图,并使其随视频一起更新。该图使用的是视频中的CMTime,因此如果我跳到视频的不同部分,该图将立即在视频中表示该时间点,而无需额外的工作。
任何人,据我所知,如果我想得到一个类似于MediaPlayer框架提供的接口,我将不得不自己去做。
我想知道的是,有没有办法在MediaPlayer框架中使用我的AVPlayer?(我看不出来。)或者,有没有办法向MediaPlayer框架注册增量时间更新。
如果有人感兴趣,我的代码如下:
[moviePlayer addPeriodicTimeObserverForInterval: CMTimeMake(1, 30) queue: dispatch_queue_create("eventQueue", NULL) usingBlock: ^(CMTime time) {
loopCount = (int)(CMTimeGetSeconds(time) * 30);
if(loopCount < [dataPointArray count]) {
dispatch_sync(dispatch_get_main_queue(), ^{
[graphLayer setNeedsDisplay];
});
}
}];谢谢!
发布于 2011-09-21 22:24:09
如果您谈论的是MPMoviePlayer显示的窗口铬,那么恐怕您正在考虑自己创建这个UI。
MediaPlayer框架是一个非常简单的“播放一些媒体”的框架,没有办法实现你需要的计时行为。通过使用AVFoundation,您正在做正确的事情。
这使得您需要自己创建UI。我的建议是从XIB文件开始创建总体布局;顶部有一个带有完成按钮的工具栏,一个表示自定义回放视图(使用AVPlayerLayer)的大视图和一个包含控件的单独视图。
如果要模拟MPMoviePlayer UI,则需要编写一些自定义控制器代码,以便根据需要自动显示/隐藏播放控件和工具栏。
发布于 2011-10-27 16:05:09
您可以使用https://bitbucket.org/brentsimmons/ngmovieplayer作为起点(如果在您询问的时候它已经存在)。
在项目页面中:“复制了MPMoviePlayerViewController的大部分行为--但使用了AVFoundation。”
发布于 2012-05-16 01:31:35
您可能需要查找AVSynchronizedLayer类。我不认为官方的编程指南中有太多的内容。你可以在这里和那里找到一些信息:subfurther,Otter Software。
在O‘’Really iOS 4(或5)中,也有一个简短的参考,介绍如何让一个正方形沿着一条线与动画同步移动/停止。在WWDC2011 session Working with Media in AV Foundation期间展示了另一个演示(代码不多)。
https://stackoverflow.com/questions/4288317
复制相似问题