1

У меня есть файл MP4, содержащий видео H264 (25 кадров в секунду). Некоторые метки времени не верны (по причинам ...). Могу ли я обработать файл и восстановить только временные метки без перекодирования? Я пробовал это

ffmpeg -r 25 -i infile -c copy outfile

но временные метки в outfile остаются такими же, как и в оригинале, хотя в документации к «-r» говорится:

В качестве параметра ввода игнорируйте любые временные метки, хранящиеся в файле, и вместо этого генерируйте временные метки, предполагая постоянную частоту кадров fps.

Я также попробовал предложение, упомянутое здесь внизу:

ffmpeg -fflags +genpts -i infile -c copy outfile

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

1 ответ1

1

Оказывается, опция -r работает только для необработанных потоковых данных. (Это может быть поток H.264 ... он не должен быть просто пиксельными данными.)

В этом примере я использую контейнеры MP4. Сначала извлеките поток:

ffmpeg -i source.mp4 -map 0:v -vcodec copy -bsf:v h264_mp4toannexb source-video.h264

Затем возьмите этот поток и перенесите его заново, но с определенной частотой кадров и сгенерированными временными метками.

ffmpeg -fflags +genpts -r 60 -i source-video.h264 -vcodec copy output.mp4

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