我当前正在使用:
ffmpeg -safe 0 -f concat -i clipstomerge.txt -vcodec copy -acodec copy mergedclips.mp4
这会合并来自clipstomerge.txt中列出的给定目录的视频。我注意到的是,如果有损坏的文件,则concat将失败。
如何强制concat跳过损坏的文件?
谢谢。
编辑:
我尝试了以下链接:http://www.ffmpeg-archive.org/Force-concat-to-ignore-corrupt-files-td4664775.html
但是我不明白如何将其放入我的蝙蝠文件中。任何帮助将不胜感激。
答案 0 :(得分:0)
@echo off
setlocal
call :validateConcatFile clipstomerge.txt 2048
if errorlevel 1 echo Failed.& exit /b 1
echo Passed.
exit /b
:validateConcatFile concatFile acceptableSize
if "%~1" == "" exit /b 2
if "%~2" == "" exit /b 2
rem Check each listed media file.
for /f "usebackq tokens=1,2 delims='" %%A in ("%~1") do (
rem Check only if leading concat keyword is "file".
if "%%~A" == "file " (
rem The file needs to exist.
if not exist "%%~B" (
echo "%%~B" not exist.
exit /b 1
)
rem Check byte size.
for %%C in ("%%~B") do if %%~zC lss %~2 (
echo "%%~B" size is %%~zC which is less than %~2.
exit /b 1
) else echo "%%~B" size is %%~zC which is ok at %~2.
rem FFprobe scan.
ffprobe -i "%~1" > nul 2> nul || (
echo FFprobe set errorlevel with "%%~B".
exit /b 1
)
)
)
exit /b 0
代码涵盖了一些有关损坏文件问题的基本思想。 由于检测腐败的概念可能会因问题而异, 那么您可以将其视为一个开始,因为代码可能是 随着时间的推移,任何人都可以使用更多的检测概念对其进行扩展。
用作转义符的特殊字符等可能导致文件不存在
检测。处理这些字符是不同的,因此不是
在此代码中可用,并将通过设置errorlevel
返回。
完成的其他检测:
exist
才能通过。在代码示例中,被调用标签的第一个参数
:validateConcatFile
是concat文件,即clipstomerge.txt
第二个参数是2048
,它是字节大小,即
可以通过。