使用ffmpeg快速检查目录中视频文件的完整性

DMT*_*DMT 8 video ffmpeg

我正在拼命寻找一种方便的方法来检查特定目录中包含文件夹的.mp4文件的完整性..mp4文件和文件夹的名称都包含空格,特殊字符和数字.

我已经找到了一个正确的ffmpeg命令来快速识别一个损坏的.mp4文件,取自这里: ffmpeg -v error -i filename.mp4 -map 0:1 -f null - 2>error.log

如果创建的error.log包含一些条目,则该文件显然已损坏.相反的是一个空的error.log.

下一步是将此命令应用于文件夹及其子文件夹中的每个.mp4文件.一些指南,比如这里这里,确实描述了如何递归地应用ffmpeg命令,但我的编码技巧有限,因此我找不到一种方法来组合这些命令来获得以下内容:

一种使用前面提到的ffmpeg命令测试文件夹内的所有.mp4文件的方法(应该创建.log文件),只有当视频文件确实包含错误(读取有一些内容)并且它应该继承破坏的名称时文件,以了解哪个文件已损坏.

使用Ubuntu Gnome 15.10.

And*_*sza 8

试试这个命令:

find . -name "*.mp4" -exec ffmpeg -v error -i "{}" -map 0:1 -f null - 2>error.log \;
Run Code Online (Sandbox Code Playgroud)

find命令以递归方式查找当前目录中与给定模式相对应的所有文件:"*.mp4".在-exec您输入要为所有文件运行的命令之后."{}"替换当前文件的名称,其中引号允许文件名中的空格.命令必须结束\;.

编辑:

上面的代码只生成一个日志文件.要.log.mp4每个带有名称的文件创建单独的文件,可以{}再次使用该符号:

find . -name "*.mp4" -exec sh -c "ffmpeg -v error -i {} -map 0:1 -f null - 2>{}.log" \;
Run Code Online (Sandbox Code Playgroud)

  • 如果文件名中有空格`find -name "*.mp4" -exec sh -c "ffmpeg -v error -i '{}' -map 0:1 -f null - 2>'{}.log' " \;` (2认同)

小智 6

我最近遇到了同样的问题,但我认为有一个简单的黑客可以找出哪些文件被破坏了:

find -name "*.mp4" -exec sh -c "echo '{}' >> errors.log; ffmpeg -v error -i '{}' -map 0:1 -f null - 2>> errors.log" \;
Run Code Online (Sandbox Code Playgroud)

这样,错误遵循文件名(和路径).

  • 为了更好的格式化源代码`find.-name"*.mp4"-exec sh -c"echo'{}\t\c'>> errors.log; ffmpeg -v error -i'{}' - map 0:1 -f null - 2 >> errors.log; echo''>> errors.log"\;` (4认同)