У меня есть скрипт, который использует FFMPEG для конвертации множества файлов. Если я остановлю его, файл, который он в данный момент выводит, останется в незавершенном состоянии.
Есть ли способ заставить FFMPEG записывать данные во временный файл (например, FILENAME_incomplete), чтобы я мог легко определить прерванные преобразования?
решение1
Если вы вручную прерываете его, то это не реализовано, поскольку ffmpeg не имеет понятия о прогрессе как таковом. Он не знает, что вывод будет длиться 200 секунд, и поэтому, если остановить на 100 секундах, обработка была, следовательно, не завершена.
Если ffmpeg останавливается из-за ошибки, его код выхода будет > 0. Таким образом, вы можете это отследить и удалить соответствующий выходной файл.
решение2
Ну, чтение кода ошибки — это один из способов, однако он не является отказоустойчивым — например, если терминал будет остановлен или что-то в этом роде.
Вы можете назвать свой выходной файл следующим образом: Filename.incomplete.mpeg
затем в строке после ffmpeg
вашего скрипта проверьте, что код выхода ( $?
для bash
скриптов) равен 0, в этом случае предполагается, что файл ffmpeg
завершен нормально, и вы можете переименовать файл в Filename.mpeg
.
Я также заметил, что неповрежденный вывод имеет поврежденную временную шкалу. Вероятно, есть способы проверить, что выходной файл полон (используя ffprobe
maybe).