如何从脚本验证视频文件?

Aar*_*lla 8 linux validation video

我有一个包含大量视频文件的服务器.恢复后,我注意到几个文件的校验和发生了变化.由于我没有所有文件的校验和,我想编写一个脚本来验证文件的完整性.它是简单的档案(tar t,unzip -t,rar t等)或图像(convert image.jpg /tmp/test.png).

我需要哪个选项传递到mplayervlc或Linux上的任何其他的视频工具来达到同样的效果(即验证文件内容,而无需观看整个视频)?

sla*_*acy 6

这听起来像你想要做的是:

mplayer -vo null -ao null input.file
Run Code Online (Sandbox Code Playgroud)

然后解析输出并返回值以查看它是否可以实际播放和解码流.这将花费一些时间(但比实时更快).如果你想要更快的东西,这里有一些更多的建议:

一件容易的事就是做一件事

mplayer -identify -vo null -ao null
Run Code Online (Sandbox Code Playgroud)

在文件上,然后解析输出并查看看起来合理的返回值.

关于校验和不正确,很难知道这是否是媒体播放器的问题(mplayer,vlc,totem等).一个好的媒体播放器可以容忍许多位或字节级错误,对结果播放几乎没有影响.当一个非常严格的媒体播放器看到格式错误或不正确的编解码器和包装器字节时,它将退出.

要验证包装器(容器)字节,您可以执行类似的操作

mencoder -ovc copy -oac copy input.file -o output.file
Run Code Online (Sandbox Code Playgroud)

问题是mencoder会想要为输出创建一个.avi文件.如果你的输入是.avi,那么这将是很好的.

您可以运行类似的ffmpeg命令行,如下所示:

ffmpeg -acodec copy -vcodec copy input.file output.file
Run Code Online (Sandbox Code Playgroud)

如果文件是.mp4文件,您可能需要查看mp4box(http://www.videohelp.com/tools/mp4box)来执行类似的任务.matroska工具也适合这种事情.(http://www.matroska.org/)


lot*_*har 1

由于 mplayer 可以选择从一种视频格式转换为另一种视频格式这对于此类测试来说可能足够好,假设 mencoder 如果无法解码输入文件则返回错误(我尚未对此进行测试)。这将类似于您提到的图像测试(转换 image.jpg /tmp/test.png)