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 должен содержать метки времени?

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .