Предупреждение ffmpeg: «Временные метки не установлены в пакете» при преобразовании H264 в mp4


3

Я получаю следующее предупреждение при выполнении ffmpeg:

[mp4 @ 00000000025c00a0] В пакете для потока 0 не установлены временные метки. Это устарело и перестает работать в будущем Исправьте ваш код, чтобы правильно установить временные метки
[mp4 @ 00000000025c00a0] pts не имеет значения

Сообщение появляется при конвертации H264 элементарный поток в mp4 видео файл.

я использую ffmpeg версия: ffmpeg-3.3.2-win64

Я попытался выполнить следующий код, чтобы проверить, если это проблема в моем H264 поток:

ffmpeg -f lavfi -i testsrc -t 3 -r 10 -pix_fmt yuv420p -c:v libx264 test.264
ffmpeg -r 10 -i test.264 -vcodec copy test.mp4

Код создает H264 синтетический поток видео с использованием ffmpeg, а затем преобразует поток в mp4,

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

Это ошибка в ffmpeg?
Есть ли какой-то флаг, который я пропустил при создании синтетического H264 поток?
Есть ли H264 элементарно должен содержать метки времени?

Ответы:


3

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

За исключением того, что необработанные битовые потоки H.264 не имеют временных отметок.

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

Это работает:

MP4Box -add test.264 -fps 10 test-out.mp4

Я думал, что указание входной частоты кадров ( -r ... -i ... ) было бы достаточно, чтобы эта ошибка исчезла, так как она должна генерировать временные метки, но, очевидно, это не поможет в этом случае. Это может быть ошибка, но я могу упустить что-то более неясное.

Eugen Rieck предложил альтернативу в комментарии ниже:

ffmpeg -i test.264 -c copy test.avi
ffmpeg -i test.avi -c copy test.mp4

видимо это не поможет в этом случае - & GT; выглядит связано с trac.ffmpeg.org/ticket/502#comment:21
Gyan

1
@slhck Элементарные потоки не могут иметь временных отметок, поэтому я могу спокойно игнорировать предупреждающее сообщение. Спасибо за ваш ответ.
Rotem

@Rotem Конечно! Просто это должен работать с -r параметр в качестве параметра ввода. Возможно, я отправлю еще одно сообщение об ошибке.
slhck

1
Есть ли какие-либо обновления на это или сообщение об ошибке? Я только что попробовал установить -r в текущей версии ffmpeg, и он по-прежнему выдает ту же ошибку для элементарных потоков H.264.
Andreas Unterweger

1
Я знаю, что это старый вопрос, но поскольку его задают так часто: маловероятное улучшение в FFmpeg дало обходной путь: Raw h.264 для AVI работает отлично и обладает всеми временными метками, AVI для MP4 также работает нормально. Так что, если вам комфортно с двумя муксами, вы прикрыты. Это также позволяет избежать причуд MP4Box (например, отбрасывать большие части необработанного битового потока как «не ссылочные»)
Eugen Rieck
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.