我有一个播放视频的应用。我想通过Gesture来控制视频,即从左到右为前进,从右到左为后退。
我一直在使用UIPanGesture,它允许我使用左/右平移手势推进视频。唯一的问题是它非常慢,并且不会经常推进视频;尽管我的NSLog每秒都会加载一次(取决于手势的速度和时间)。
这是我的手势处理程序代码:
- (void) handlePanGesture:(UIPanGestureRecognizer*)pan{
CGPoint translate = [pan translationInView:self.view];
CGFloat xCoord = translate.x;
double diff = (xCoord - currentTranslate);
currentTranslate = xCoord;
NSLog(@"%F",diff);
if (diff>=0) {
//If the difference is positive
moviePlayer.currentPlaybackTime = [moviePlayer currentPlaybackTime] + (diff/10);
} else {
//If the difference is negative
moviePlayer.currentPlaybackTime = [moviePlayer currentPlaybackTime] - (diff/10);
}
}
我现在不确定从哪里开始,如何使这个功能平稳并以较少的延迟控制播放头?
答案 0 :(得分:2)
首先,使用FFMPEG对视频文件进行编码。根据我的经验,它的结果优于任何其他解决方案(我认为这是奇怪的事实)。
在寻找时,请确保编码的GOP长度不要太高。大GOP使编码更有效,但也使解码器难以寻找。换句话说,你编码的I帧越多,你就能越顺畅。
有关在iPhone上使用的视频编码的一些常规参数,请参阅ffmpeg cheat sheet by Rodrigo Polo。
有关编码H264时FFMPEG参数强大功能的一些细节,请参阅the libx264 mapping and options guide。