11

我想在 AVPlayer 中向后播放视频。我尝试将rates 属性更改为-1.0,虽然它确实有效,但并不顺利。有什么方法可以流畅地向后播放视频吗?

4

2 回答 2

7

如评论中所述,问题在于关键帧以及大多数编解码器并非旨在向后播放的事实。有 2 个选项可用于重新编码视频,不需要您在编辑时实际反转视频。

  1. 让每一帧都成为关键帧。我已经看到这对于像 H.264 这样依赖关键帧的编解码器非常有效。基本上,如果每一帧都是关键帧,那么每一帧都可以在不依赖任何先前帧的情况下被解码,因此它实际上与向前播放相同。
  2. 使用不使用关键帧和非关键帧的编解码器(基本上所有帧都是关键帧)。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"); }

source: https://stackoverflow.com/a/16104363/701043

于 2015-02-18T12:09:40.093 回答