我有一堆视频文件,主要是 H264。为了节省存储空间,我编写了一个批处理脚本,使用 ffmpeg 将它们全部转换为 H265。问题:某些文件导致 ffmpeg 使用我的所有内存(24 GB)。然后它崩溃(因为它试图分配更多的 RAM),从而停止转换过程。
我认为这些文件在某种程度上已损坏。因为对于其他文件,它在低内存消耗的情况下运行良好。现在我想拒绝那些破碎的,这样无人看管的转换是可能的。
如何检测这种腐败?ffmpeg 可以做到这一点,还是需要第三方工具?
我的ffmpeg电话
set crf=20
set codec=265
ffmpeg -hide_banner -i "!fullSourcePath!" -c:v libx%codec% -crf %crf% "%targetPath%\!targetFileName!"
mkvalidator 帮不上忙
mkvalidator说损坏的文件是有效的:
mkvalidator.exe "V:\Filme\_LegacyFormat\22 Jump Street.mkv"
........................................................................................................................
WRN0D0: There are 5306 bytes of void data..
mkvalidator 0.5.0: the file appears to be valid
file created with libebml v1.3.0 + libmatroska v1.4.1 / mkvmerge v6.9.1 ('Blue Panther') 64bit built on Apr 18 2014 18:23:38
eac3to331 也无能为力
我找到了工具eac3to331,它有一个check
标志。但它没有给我任何错误,尽管测试的文件似乎已损坏(导致我的电脑在运行 ffmpeg 几分钟后崩溃)
eac3to.exe -check "V:\Filme\_LegacyFormat\22 Jump Street.mkv"
MKV, 1 video track, 2 audio tracks, 1 subtitle track, 1:51:57, 24p /1.001
1: h264/AVC, English, 1920x808 24p /1.001 (240:101)
2: DTS, German, 5.1 channels, 1509kbps, 48kHz
3: DTS, English, 5.1 channels, 1509kbps, 48kHz
4: Subtitle (SRT), German
v01 Extracting video track number 1...
a02 Extracting audio track number 2...
a03 Extracting audio track number 3...
s04 Extracting subtitle track number 4...
Video track 1 contains 161039 frames.
eac3to processing took 1 minute, 26 seconds.
Done.