我正在使用一个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];
});
}
}];
谢谢!
最佳答案
如果你说的是MPMOVIEWER显示的Chrome Chrome,恐怕你正在自己创建这个UI。
AfAIK无法使用MediaPror框架来实现时序行为,这是一个简单的“播放一些媒体”框架。你用avfoundation做得对。
这就需要您自己创建ui。我的建议是从XIB文件开始创建总体布局;顶部的工具栏有一个完成按钮,一个代表自定义回放视图的大视图(使用AvPeServer层)和一个单独的视图来包含控件。
您需要编写一些自定义控制器代码,以自动显示/隐藏回放控件和工具栏,如果您想模拟MPMOVIEWLISE UI。