我想显示在慢动作的iOS设备上的视频。
我的视图包含一个视频(约2秒长)和一个滑动件。
用户可以通过帧通过电影帧移动滑块和步骤(向前和向后)。
MPMoviePlayerController
缺少由帧到步骤帧的能力。
我读到MVAssetReader
,但我有没有具体的想法如何使用此。
我没有固定的帧率,所以应该把这个信息从视频的元数据。 我真的需要展现每一帧。
有人可以给我一个线索?
我想显示在慢动作的iOS设备上的视频。
我的视图包含一个视频(约2秒长)和一个滑动件。
用户可以通过帧通过电影帧移动滑块和步骤(向前和向后)。
MPMoviePlayerController
缺少由帧到步骤帧的能力。
我读到MVAssetReader
,但我有没有具体的想法如何使用此。
我没有固定的帧率,所以应该把这个信息从视频的元数据。 我真的需要展现每一帧。
有人可以给我一个线索?
WWDC 2010示例代码的AV播放器演示示例代码可以在你的工作有帮助
从视频剪切缩略图是关于编辑音频和视频示例代码解释,2010年WWDC AV编辑与AV Foundation框架和许多其他的事情
如果你有开发者账号(付费),那么你可以观看iTunes视频
AVFoundation是一个非常强大的框架,但需要更多一点的打字和理解比的MPMoviePlayerController使用。 我强烈建议迪内希的建议观看视频WWDC,看看示例代码,并阅读文档。 该文档是得到一个概念上的理解相当不错,但它缺乏一些细节,当涉及到的实际视频格式的细节。 为此,示例代码和实验是好的。
如果你想要去的一帧一帧那么我认为AVPlayerItem stepByCount:是的路要走。
// Setup a PlayerItem and a Player
NSURL* movieURL = [NSBundle URLForResource:@"movie" withExtension:@"mov" subdirectory:@"" inBundleWithURL:[NSBundle mainBundle].bundleURL];
AVURLAsset* movieAsset = [AVURLAsset assetWithURL:movieURL];
AVPlayerItem* playerItem = [AVPlayerItem playerItemWithAsset:movieAsset];
AVPlayer* player = [AVPlayer playerWithPlayerItem:playerItem];
// setup the layer so you can see it
AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame = self.view.bounds;
[self.view.layer addSublayer:playerLayer];
// Verify our assumptions, in production code you should do something better
NSAsset(player.currentItem.canStepForward, @"Assume this format can step forward");
NSAsset(player.currentItem.canStepBackward, @"Assume this format can step backward");
[player.currentItem stepByCount:1]; // step forward a frame
[player.currentItem stepByCount:-1]; // step backward a frame