Получение (оценочного) временного смещения ошибок, о которых сообщает ffmpeg - PullRequest
0 голосов
/ 27 мая 2020

Я использую ffmpeg для проверки ошибок в видеофайлах, но хотя он сообщает о множестве проблем, он не сообщает мне, где именно в файле возникает ошибка. Он просто выводит несколько сумасшедших длинных шестнадцатеричных чисел (0x7fa…), которые мне ничего не говорят. Есть ли способ заставить его сообщать некоторые временные метки или, по крайней мере, предполагаемые временные метки или байтовые смещения в поток? Я попробовал установить флаг -debug_ts, но на выходе ничего не изменилось.

$ ffmpeg -debug_ts -v error -i a_broken_file.mp4 -f null -
[h264 @ 0x7fa513023400] Reference 4 >= 4
[h264 @ 0x7fa513023400] error while decoding MB 15 34, bytestream 1304
[h264 @ 0x7fa513023400] Frame num change from 36 to 72
[h264 @ 0x7fa513023400] decode_slice_header error
[h264 @ 0x7fa513023400] Invalid NAL unit size (-1989965076 > 2668).
[h264 @ 0x7fa513023400] Error splitting the input into NAL units.
[aac @ 0x7fa513007200] Prediction is not allowed in AAC-LC.
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x7fa513007200] channel element 3.8 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x7fa513007200] channel element 3.11 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x7fa513007200] channel element 2.10 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x7fa513007200] Inconsistent channel configuration.
[aac @ 0x7fa513007200] get_buffer() failed
Error while decoding stream #0:1: Invalid argument
[aac @ 0x7fa513007200] Inconsistent channel configuration.
[aac @ 0x7fa513007200] get_buffer() failed
Error while decoding stream #0:1: Invalid argument
[aac @ 0x7fa513007200] channel element 3.1 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x7fa513007200] Reserved bit set.
…

Или, возможно, я мог бы извлечь эту информацию из шестнадцатеричных чисел там (я не нашел ни одной информации о том, что это число означает для)?

1 Ответ

0 голосов
/ 08 июля 2020

Это правильное использование параметра -debug_ts (в Windows 7 64-бит):

ffmpeg.exe -debug_ts -re -copyts -i file.mp3 -f null out.null >result.txt 2>&1

Все временные метки во входном медиа-файле будут записаны в текстовый файл (который затем может быть проанализирован на наличие ошибок).

Я намерен здесь только показать правильное использование -debug_ts , а не демонстрировать какие-либо методы синтаксического анализа, все из которых обязательно намного сложнее, чем тривиальная задача простой записи временных меток в файл.

...