我正在使用ffmpeg将多个avi文件连接(合并)为单个avi文件。 我正在使用以下命令。ffmpeg concat +处理时发现无效数据+检查有效的avi文件
ffmpeg -f concat -i mylist.txt -c copy out.avi
文件合并列表中mylist.txt给出
Ex 'mylist.txt':
file 'v01.avi'
file 'v02.avi'
file 'v03.avi'
...
file 'vxx.avi'
然而,当文件的一个已损坏(或空)的问题。 在这种情况下,视频只包含文件直到损坏的文件。
在这种情况下,FFMPEG返回下列错误:
[concat @ 02b2ac80] Impossible to open 'v24.avi'
mylist.txt: Invalid data found when processing input
Q1)有没有办法来告诉ffmpeg的继续合并即使遇到一个无效的文件?
或者,我决定编写一个批处理文件,检查我的avi文件在合并之前是否有效。 我的第二个问题是,这个操作需要更多时间来进行合并。 Q2)有没有一种快速的方法来检查多个avi文件是否对ffmpeg有效? (如果它们无效,则删除,忽略或重命名它们)。
在此先感谢您的意见。
ssinfod。
有关信息,这里是我目前的DOS批处理文件。 (此批是因为ffprobe的工作,但速度很慢,检查我的AVI是valids)
GO.BAT
@ECHO OFF
echo.
echo == MERGING STARTED ==
echo.
set f=C:\myfolder
set outfile=output.avi
set listfile=mylist.txt
set count=1
if exist %listfile% call :deletelistfile
if exist %outfile% call :deleteoutfile
echo == Checking if avi is valid (with ffprobe) ==
for %%f in (*.avi) DO (
call ffprobe -v error %%f
if errorlevel 1 (
echo "ERROR:Corrupted file"
move %%f %%f.bad
del %%f
)
)
echo == List avi files to convert in listfile ==
for %%f in (*.avi) DO (
echo file '%%f' >> %listfile%
set /a count+=1
)
ffmpeg -v error -f concat -i mylist.txt -c copy %outfile%
echo.
echo == MERGING COMPLETED ==
echo.
GOTO :EOF
:deletelistfile
echo "Deleting mylist.txt"
del %listfile%
GOTO :EOF
:deleteoutfile
echo "Deleting output.avi"
del %outfile%
GOTO :EOF
:EOF
这是一个好主意,可以先尝试合并,并且只有在出现错误时才处理。我会尝试。谢谢。 – ssinfod