2017-03-17 15 views
0

私はMKVファイルをすべて削除するという使命に着手しました。そこで私はいくつかの調査を行い、MKVのデータファイルを検索してMP4にコピーする小さなスクリプトを書いた。スクリプトはほとんどの場合動作しますが、時折ファイルが失われてしまい、スクリプトが元のファイルを削除してしまうため、ファイルが完全に失われます。FFMPEG - 自動ストリームコピーで失敗したらエンコード

私は2つの方法でスクリプトを変更したいと思います:、元のファイルを削除する前に(1)

変換されたファイルがゼロより大きいことを確認してください。

(2)変換されたファイルがゼロ(失敗)の場合、Intel Quick Syncハードウェア・エンコーディングを使用してデフォルト値を使用して元のファイルを再エンコードするFFMPEGコマンドを実行し、ファイルをリストに追加します。

はここにあなたのアイデアを事前に

@ECHO OFF 
cls 
echo This script automatically converts MKV video files to MP4. 
echo. 
echo Changing directory to data drive (Z:). 
echo. 
Z: 
echo Retrieving list of MKV files... 
echo. 
dir /b /s *.mkv > MKV-Files.txt 
echo MKV list compiled. 
echo. 
echo Converting files to MP4... 
echo. 
FOR /F "delims=;" %%F in (MKV-Files.txt) DO (
echo Converting "%%F" 
echo. 
C:\FFMPEG\bin\ffmpeg.exe -y -i "%%F" -movflags faststart -codec copy "%%~dF% %~pF%%~nF.mp4" 
echo. 
echo Conversion successful. 
echo. 
echo Deleting "%%F" 
echo. 
del "%%F" /F 
) 
echo Job completed. 
echo. 
echo Exiting... 

おかげで...私がこれまで持っているものです。

答えて

0

あなたは、この置換を試すことができます。

ffmpeg.exe -y -i "%%F" -abort_on empty_output -movflags faststart -codec copy "%%~dF% %~pF%%~nF.mp4" || ffmpeg.exe -y -i "%%F" -movflags faststart -c:v h264_qsv -c:a copy "%%~dF% %~pF%%~nF.mp4" 

MP4は、彼らのために限定的なサポートを持っているとして、あなたは字幕やデータトラックを無効にすることができます。そのために-dn-snを追加してください。

+0

ありがとうMulvya!うまく動作しているようだ。私はスクリプトに慣れていないので、二重パイプを調べなければなりませんでした。私は最初のものが失敗した場合にのみ2番目のコマンドを実行すると言ったUnix情報を発見しました。これはWindowsスクリプティングでも機能しますか? – Waverunner

関連する問題