FFMPEG を使用して多数のファイルを変換するスクリプトがあります。これを停止すると、現在出力中のファイルは不完全な状態のままになります。
中止された変換を簡単に識別できるように、FFMPEG で一時ファイル (FILENAME_incomplete など) に書き込む方法はありますか?
答え1
手動で中止する場合、ffmpeg 自体には進行状況の概念がないため、これは実装されません。出力が 200 秒長くなることを認識していないため、100 秒で停止すると、処理は不完全になります。
ffmpeg がエラーのために停止した場合、終了コードは 0 より大きくなります。そのため、それをキャッチして、対応する出力ファイルを削除できます。
答え2
エラー コードを読み取るのも 1 つの方法ですが、端末が強制終了された場合など、安全とは言えません。
出力ファイルに のような名前を付けて、スクリプトの のFilename.incomplete.mpeg
後の行で終了コード (スクリプトの場合) が 0 であることを確認します。その場合、正常に完了したとみなされ、ファイルの名前を に変更できます。ffmpeg
$?
bash
ffmpeg
Filename.mpeg
また、破損していない出力には破損したタイムラインがあることにも気付きました。出力ファイルが完全であることを確認する方法はおそらくあります ( ffprobe
maybe を使用)。