如何检查下载的大 mkv 文件的完整性

如何检查下载的大 mkv 文件的完整性

刚刚下载了一个很大的 mkv 文件,超过 20GB。我花了好几天才下载完。但是,如何检查下载是否已完成,还是中途中断?我有这个问题,因为对于 mkv 文件,mplayer 仍然可以播放它,直到它损坏为止。

ubuntu 中有没有什么实用程序可以进行此类检查?

答案1

由于您没有文件的校验和信息(CRC32、MD5、SHA-1、SHA-256 等),您可以尝试验证 Mastroska 格式本身。

mkvalidator 是一款简单的命令行工具,用于验证 Matroska 和 WebM 文件是否符合规范。它根据文件的 EBML DocType 版本检查各种虚假或缺失的关键元素,并在命令行中报告错误/警告。

使用方法:

mkvalidator --details your-big-mkv-file.mkv

但是,mkvalidator只能验证 Mastroska 容器的结构,而不能验证其中的“有效负载”(即 A/V 数据)。要验证数据部分,您仍然需要一个解码器来查看它是否正确解码。从https://superuser.com/a/100290

ffmpeg -v error -i file.avi -f null - 2>error.log

此命令用于ffmpeg读取 mkv 文件并尝试逐帧解码。解码过程中发现的任何错误都将记录在error.log文件中。

答案2

matroska 验证工具非常适合检查容器的完整性。这是我用 Python 编写的递归包装器脚本,用于大型库。https://github.com/1010dvpt/mkv-validator

答案3

Matroska 官方网站上提到了 MKVToolNix,这是一套工具包,其中一个mkinfo可以用来检索有关 Matroska 和 WebM 文件的一些信息。

正如mkvalidator其他答案所提到的,但我找不到 Linux 的最新版本。

如果你查看他们的下载页面,你会发现 Ubuntu deb 存储库。一旦你将 deb 存储库添加到源列表,你就可以安装命令行工具和/或 GUI 工具。

mkvinfo以下是在文件上使用时获得的输出示例:

$ mkvinfo 1fbf4140-3807-49f7-9f78-91bdada71a6e 
+ EBML head
|+ EBML version: 1
|+ EBML read version: 1
|+ Maximum EBML ID length: 4
|+ Maximum EBML size length: 8
|+ Document type: webm
|+ Document type version: 4
|+ Document type read version: 2
+ Segment: size unknown
|+ Segment information
| + Timestamp scale: 1000000
| + Multiplexing application: Chrome
| + Writing application: Chrome
|+ Tracks
| + Track
|  + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
|  + Track UID: 16615739537438539
|  + Track type: audio
|  + Codec ID: A_OPUS
|  + Codec's private data: size 19
|  + Audio track
|   + Sampling frequency: 48000
|   + Channels: 1
|   + Bit depth: 32
|+ Cluster

提及该工具的 Matroska 页面:https://www.matroska.org/downloads/mkvtoolnix.html

MKVToolNix 页面:https://mkvtoolnix.download/

相关内容