UIPanGesture电影控制滞后

时间:2011-03-29 08:06:03

标签: objective-c mpmovieplayercontroller uigesturerecognizer

我有一个播放视频的应用。我想通过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);
    }
}

我现在不确定从哪里开始,如何使这个功能平稳并以较少的延迟控制播放头?

1 个答案:

答案 0 :(得分:2)

首先,使用FFMPEG对视频文件进行编码。根据我的经验,它的结果优于任何其他解决方案(我认为这是奇怪的事实)。

在寻找时,请确保编码的GOP长度不要太高。大GOP使编码更有效,但也使解码器难以寻找。换句话说,你编码的I帧越多,你就能越顺畅。

有关在iPhone上使用的视频编码的一些常规参数,请参阅ffmpeg cheat sheet by Rodrigo Polo

有关编码H264时FFMPEG参数强大功能的一些细节,请参阅the libx264 mapping and options guide