Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FFMPEG-自动流复制然后在失败时编码_Ffmpeg - Fatal编程技术网

FFMPEG-自动流复制然后在失败时编码

FFMPEG-自动流复制然后在失败时编码,ffmpeg,Ffmpeg,由于MP4容器更适合我,我已经开始执行一项任务,以清除我所有的MKV文件。为此,我做了一些研究,编写了一个小脚本,在我的数据文件中搜索mkv,并将它们流式复制到MP4。脚本大部分时间都可以工作,但我偶尔会收到失败的文件,因为脚本删除了原始文件,所以我完全丢失了文件 我想用两种方式修改脚本: (1) 删除原始文件之前,请检查转换的文件是否大于零 (2) 如果转换后的文件为零(失败),则运行FFMPEG命令,使用默认值利用“英特尔快速同步硬件编码”对原始文件进行重新编码,然后像往常一样删除原始文件,

由于MP4容器更适合我,我已经开始执行一项任务,以清除我所有的MKV文件。为此,我做了一些研究,编写了一个小脚本,在我的数据文件中搜索mkv,并将它们流式复制到MP4。脚本大部分时间都可以工作,但我偶尔会收到失败的文件,因为脚本删除了原始文件,所以我完全丢失了文件

我想用两种方式修改脚本:

(1) 删除原始文件之前,请检查转换的文件是否大于零

(2) 如果转换后的文件为零(失败),则运行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...

提前感谢您的想法。

您可以尝试以下替代方法:

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

谢谢Mulvya!看起来很好用。我对脚本编写还不熟悉,所以我必须查找双管道。我发现Unix信息中说,如果第一个命令失败,则只执行第二个命令。这也适用于Windows脚本吗?