UIPanGesture Управление фильмом Laggy - PullRequest
2 голосов
/ 29 марта 2011

У меня есть приложение, которое воспроизводит видео. Я хочу управлять видео с помощью 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 Ответ

2 голосов
/ 30 марта 2011

Прежде всего, используйте FFMPEG для кодирования видеофайлов. Исходя из моего опыта, его результаты превосходят любые другие решения (факт, который я считал странным).

Когда дело доходит до поиска, убедитесь, что длина GOP ваших кодировок не установлена ​​слишком высокой. Большая GOP делает кодирование более эффективным, но также затрудняет поиск для декодера. Другими словами, чем больше I-кадров в ваших кодировках, тем более плавным вы сможете искать.

Некоторые общие параметры кодирования видео для использования на iPhone см. В чит-листе ffmpeg от Rodrigo Polo .

Некоторые подробности о мощных параметрах FFMPEG при кодировании H264 см. В руководстве по отображению и настройке libx264 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...