ios - 将视频同步到 openGL 动画

标签 ios ipad video opengl-es

我正在尝试将视频同步到在 iPad 上使用 openGL 绘制的动画,但有两件事我不确定该怎么做:

  1. 找到当前播放的视频帧。
  2. 确保视频更新和 openGL 绘图更新完全同时进行,因为即使是轻微的同步问题也可能会导致视觉失真。

最佳答案

不确定它是否有效,但您可以使用 AVPlayer 而不是使用 MPMoviePlayerController并使用和AVSynchronizedLayer将您的 OpenGL 层时间与 AVPlayerLayer 的时间同步。

您可以像这样创建视频播放器:

NSURL *videoURL = [NSURL fileURLWithPath:@"your_url"];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videoURL options:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];

UIView *playerView = [[UIView alloc] initWithFrame:frame];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
[playerLayer setFrame:[[playerView layer] bounds]];

然后创建一个 AVSynchronizedLayer 层并将其与 playerLayer 同步:

AVSynchronizedLayer *syncLayer = [AVSynchronizedLayer synchronizedLayerWithPlayerItem:playerItem];
[syncLayer addSublayer:yourGlView.layer];

[playerView.layer addSublayer:playerLayer];
[playerView.layer addSublayer:syncLayer];

[self.view addSubview:playerView];
...

关于ios - 将视频同步到 openGL 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631628/

相关文章:

ios - 有什么方法可以在崩溃中发送/查看参数?

ios - 在tableview中需要3个静态标签作为标题和许多动态标签

javascript - block :hover on link for iPad

iphone - 当我释放 View 时委托(delegate)崩溃,因为没有找到

windows - FFMPEG(windows7)无法让输出视频显示超过 10 个 jpg 中的 3 个

android - videoView Android无法播放视频

ios - 获取 CLLocation 类(class)并翻译给用户

iphone - 我可以在 iOS 上使用 QLThumbnailImageCreate 吗?

ios - 使用 RTSP 传输视频

IOS swift tableview获取一个部分的headerview