FFmpeg извлекает метку времени текущего кадра - PullRequest
1 голос
/ 12 июля 2011

Мне нужно извлечь кадры в определенный интервал видео (например, от 40 секунд до 50 секунд). Работаю в с ++. Сначала я получаю позицию, с которой мне нужно начать читать

static double t = 10 ;//time in seconds
int64_t timestamp = t * AV_TIME_BASE; //destination time
av_seek_frame( pFormatContext , -1 ,  timestamp + pFormatContext->start_time ,AVSEEK_FLAG_BACKWARD );

Тогда я использовал av_read_frame, чтобы получить все последовательные кадры. Проблема в том, что я не знаю, когда остановиться. Как я могу проверить, что достиг своего конечного интервала (например, 50 секунд)?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 12 июля 2011

av_read_frame() даст вам PTS (штамп времени презентации).Это член AVPacket pts.Возможно, это значение поможет вам решить, когда прекратить чтение.

1 голос
/ 12 июля 2011

Попробуйте найти кадры в секунду, а затем используйте это число, чтобы вычислить точное время каждого кадра как

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