如何创建媒体文件的稳定校验和?

问题描述 投票:0回答:4

我如何只创建没有元数据的媒体数据的校验和以获得媒体文件的稳定标识。最好是使用支持多种格式的库的跨平台方法。例如vlc、ffmpeg 或 mplayer.

(媒体文件应该是常见格式的音频和视频,图片也可以)

ffmpeg media sha1 checksum mplayer
4个回答
3
投票

好吧,答案可能已经晚了 11 年,但万一像我这样的其他人偶然发现了这个……

ffmpeg
可以输出单个流的校验和。因此,相同的音频或视频将独立于其容器格式或元数据输出相同的校验和。

文件

$filename
的视频轨道示例,将输出写入
$filename.md5

ffmpeg -i "$filename" -map 0:v -codec copy -f md5 "$filename.md5"

对于音频,使用

-map 0:a
.

要输出到 STDOUT,请使用

-
。例如:

ffmpeg -i "$filename" -map 0:a -codec copy -hide_banner -loglevel warning -f md5 -

3
投票

我不知道有任何现有的独立于平台的软件可以实现这一点,但我知道可以通过解释(独立于平台)语言(例如 Java)实现这一点的方法。

本质上,我们只需要从文件中剥离任何元数据(标签),预先对视频文件进行多路分解。理论上,在 demux 和删除元数据之后,可以对文件进行哈希处理,并与经过相同过程的另一个文件进行比较,以匹配相同的文件,尽管标签不同。与指纹不同,这不会识别相似的歌曲/电影,但会识别相同的文件(想象一下,您可能想要您存档的给定歌曲的 10 个不同版本或比特率,但不希望其中任何一个有 2 个相同的副本四处浮动) .

其中最麻烦的部分是删除标签,因为标签格式有许多不同的规范,这些规范不一定在不同的应用程序中实现相同,即通过两个不同的应用程序分别给出相同标签的完全相同的音频文件可能不会产生相同的输出文件。这可能对纯音频校验和的概念造成致命问题的唯一方法是,如果流行的标记软件对文件的二进制音频部分进行任何更改,或以非标准方式填充音频。

获取校验和是微不足道的,但我并没有意识到任何平台独立库对 mpeg 文件进行多路分解和去标记。我知道在 'nix 环境中,mpgtx 是一个很棒的命令行工具,可以执行 demux 和 detag,但显然这不是一个独立于平台的解决方案。

也许外面有人觉得雄心勃勃?


0
投票

我发现的一个可能的解决方案似乎是使用 vlc:

./VLC -I rc snd.mp3 :sout='#std{mux=raw,access=file,dst=-}' vlc://quit | sha1sum

0
投票

这是一个围绕 mvik 的基于 ffmpeg 的 answer 的 shell 脚本,它在成功的情况下打印 MD5,或者在失败的情况下打印 stderr 输出。

#!/bin/bash

# Compute the MD5 of the audio stream of an MP3 file, ignoring ID3 tags.

# The problem with comparing MP3 files is that a simple change to the ID3 tags
# in one file will cause the two files to have differing MD5 sums.  This script
# avoids that problem by taking the MD5 of only the audio stream, ignoring the
# tags.

# Note that by virtue of using ffmpeg, this script happens to also work for any
# other audio file format supported by ffmpeg (not just MP3's).

set -e

stdoutf=$( mktemp mp3md5.XXXXXX )
stderrf=$( mktemp mp3md5.XXXXXX )

set +e
ffmpeg -i "$1" -c:a copy -f md5 - >$stdoutf 2>$stderrf
ret=$?
set -e

if test $ret -ne 0 ; then
    cat $stderrf
else
    cat $stdoutf | sed 's/MD5=//'
fi

rm -f $stdoutf $stderrf
exit $ret
© www.soinside.com 2019 - 2024. All rights reserved.