ffmpeg - метки времени mpeg4 (H.264) и качество изображения - PullRequest
0 голосов
/ 17 января 2011

У меня серьезные проблемы с библиотекой ffmpeg.
Во-первых, временные метки поступают в случайном порядке.
Например, при декомпрессии временная метка 8000 предшествует 4000 и так далее. Если я проигнорирую эти отметки времени и просто воспроизведу видео, я увижу, что кадры действительно поступают в случайном порядке. Итак, первый вопрос: как с этим справиться? Это нормально? Я не совсем понимаю, как это вообще возможно.

Вопрос номер два ..
Качество изображения очень плохое. Похоже, это требует сглаживания. VLC воспроизводит тот же клип с правильным порядком кадров и намного лучшим качеством изображения.

Цветовой формат в моем приложении - стандартный YV12 (я не конвертировал его после распаковки), и он обрабатывается фильтром Video Mixing Renderer 9. (я не использую ffmpeg в качестве фильтра DirectShow).

(ffmpeg настолько плох, или мне нужно развить некоторые дополнительные навыки, чтобы получить кадр с ним?)

1 Ответ

1 голос
/ 17 января 2011

Я считаю, что проблема с временными метками заключается в том, что когда видео содержит B-кадры (с двунаправленным предсказанием), кадры появляются в битовом потоке вне их порядка отображения. Из-за этого вы должны проявлять особую осторожность при определении PTS декодированного кадра. Взгляните на эту страницу хорошего учебника ffmpeg и посмотрите, как они справляются с этой проблемой.

По сути, вам нужно сохранить значение PTS первого пакета для каждого декодированного кадра. Значение PTS в структуре AVFrame после декодирования недопустимо.

Что касается вопросов качества, это может или не может быть связано с проблемами с отметками времени, но я могу заверить вас, что проблема почти наверняка не в самих библиотеках ffmpeg, поскольку они широко используются и могут даже использоваться как backend от VLC при декодировании вашего видео.

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

...