用ffmpeg快速校验目录内的视频文件的完整性

前言

第一次遇到遇到损坏的视频文件,想来应该是用VPS下载时文件出现了问题。用神器ffmpeg可在vps上快速地校验视频完整性。避免出现我这种用学校的小水管从vps拖回本地,下载了一个下午发现文件是损坏的悲剧。

方法

1
ffmpeg -v error -i filename.mkv -map 0:1 -f null -

规范化文件名

在下载动画的时候经常遇到类似于这种"[压制组&组2] 番名 [GB][1080P][x264_AAC×2].mp4"的文件,此文件名不符合Linux对文件名的规范要求,此时用上面的命令将无法生成log文件,需要批量重命名文件使其规范化。

1
2
rename 's/[ ]+/_/g' *
rename "s/&/-/g" *

递归检测

递归的对整个目录的视频文件进行快速校验,并且对每个视频文件都生成一个相对应的错误日志文件。如果没有错误则是个空文件。

1
find . -name "*.mkv" -o -name "*.mp4" -exec sh -c "ffmpeg -v error -i {} -map 0:1 -f null - 2>{}.log" \;

效果

image

用ll列出目录内文件,若log文件不为空则说明视频文件出现了错误。

image

image

来源

https://stackoverflow.com/questions/34077302/quickly-check-the-integrity-of-video-files-inside-a-directory-with-ffmpeg