我已经开始执行任务以摆脱我的所有MKV文件,因为MP4容器对我来说效果更好。所以为此,我做了一些研究并写了一个小脚本,在我的数据文件中搜索MKV并将它们流复制到MP4。该脚本大部分时间都可以工作,但我偶尔会遇到失败的文件,因为脚本会删除原件,所以我完全丢失了文件。
我想以两种方式修改脚本:
(1)在删除原始文件之前,检查转换后的文件是否大于零。
(2)如果转换后的文件为零(失败),则运行FFMPEG命令,使用Intel Quick Sync硬件编码使用默认值重新编码原始文件,然后像往常一样删除原始文件并继续下一个文件在列表中。
这是我到目前为止所拥有的......
@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 :(得分: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
。