我想在 AVPlayer 中向后播放视频。我尝试将rates 属性更改为-1.0,虽然它确实有效,但并不顺利。有什么方法可以流畅地向后播放视频吗?
问问题
2902 次
2 回答
7
如评论中所述,问题在于关键帧以及大多数编解码器并非旨在向后播放的事实。有 2 个选项可用于重新编码视频,不需要您在编辑时实际反转视频。
- 让每一帧都成为关键帧。我已经看到这对于像 H.264 这样依赖关键帧的编解码器非常有效。基本上,如果每一帧都是关键帧,那么每一帧都可以在不依赖任何先前帧的情况下被解码,因此它实际上与向前播放相同。
- 使用不使用关键帧和非关键帧的编解码器(基本上所有帧都是关键帧)。PhotoJPEG 就是这样一种选择,尽管我不完全确定它是否可以在 iOS 上播放。我会这么认为。它在 Mac 上运行良好。
请注意,与典型的“每 x 帧关键帧”编码视频相比,此选项中的任何一个都会导致文件大小更大。
于 2014-08-24T14:10:10.823 回答
1
You have to reach at the end of the current item and then set the rate to the negative value. Something like this:
-(void)reversePlay
{
CMTime durTime = myPlayer.currentItem.asset.duration;
if (CMTIME_IS_VALID(durTime))
{
[myPlayer seekToTime:durTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
[myPlayer setRate:-1.0];
}
else
NSLog(@"Invalid time");
}
于 2015-02-18T12:09:40.093 回答