Отметить неполный вывод от ffmpeg

Отметить неполный вывод от ffmpeg

У меня есть скрипт, который использует FFMPEG для конвертации множества файлов. Если я остановлю его, файл, который он в данный момент выводит, останется в незавершенном состоянии.

Есть ли способ заставить FFMPEG записывать данные во временный файл (например, FILENAME_incomplete), чтобы я мог легко определить прерванные преобразования?

решение1

Если вы вручную прерываете его, то это не реализовано, поскольку ffmpeg не имеет понятия о прогрессе как таковом. Он не знает, что вывод будет длиться 200 секунд, и поэтому, если остановить на 100 секундах, обработка была, следовательно, не завершена.

Если ffmpeg останавливается из-за ошибки, его код выхода будет > 0. Таким образом, вы можете это отследить и удалить соответствующий выходной файл.

решение2

Ну, чтение кода ошибки — это один из способов, однако он не является отказоустойчивым — например, если терминал будет остановлен или что-то в этом роде.

Вы можете назвать свой выходной файл следующим образом: Filename.incomplete.mpegзатем в строке после ffmpegвашего скрипта проверьте, что код выхода ( $?для bashскриптов) равен 0, в этом случае предполагается, что файл ffmpegзавершен нормально, и вы можете переименовать файл в Filename.mpeg.

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

Связанный контент