Linux MD5

Linux 系统中,计算 YUV 文件的 MD5 哈希值是一个常见操作,常用于验证文件完整性、比对编码输出一致性、自动化测试等场景。

YUV 文件是原始像素数据(如 YUV420p、NV12 等),虽然不能直接"查看"内容,但可以像任何二进制文件一样计算其 MD5 值。


✅ 一、最常用命令:md5sum

bash 复制代码
md5sum your_video.yuv

📌 示例:

bash 复制代码
$ md5sum traffic_1920x1080.yuv
d41d8cd98f00b204e9800998ecf8427e  traffic_1920x1080.yuv

输出格式:<MD5哈希值> <文件名>


✅ 二、其他实用用法

1. 只输出哈希值(不显示文件名)------适用于脚本处理

bash 复制代码
md5sum your_video.yuv | awk '{print $1}'

输出:

复制代码
d41d8cd98f00b204e9800998ecf8427e

2. 批量计算多个 YUV 文件的 MD5

bash 复制代码
md5sum *.yuv

输出示例:

复制代码
a3d7e43d874f9cb0955df08b4b7d9e5a  input.yuv
d41d8cd98f00b204e9800998ecf8427e  output.yuv

可用于快速比对两个文件是否完全相同。


3. 将 MD5 结果保存到文件

bash 复制代码
md5sum *.yuv > checksums.md5

生成内容:

复制代码
a3d7e43d874f9cb0955df08b4b7d9e5a  input.yuv
d41d8cd98f00b204e9800998ecf8427e  output.yuv

之后可用以下命令校验:

bash 复制代码
md5sum -c checksums.md5

✅ 适合用于回归测试或 CI/CD 流程。


4. 比较两个 YUV 文件是否相同

bash 复制代码
diff <(md5sum file1.yuv) <(md5sum file2.yuv)

或者更简单:

bash 复制代码
if [ "$(md5sum file1.yuv)" = "$(md5sum file2.yuv)" ]; then echo "Same"; else echo "Different"; fi

✅ 三、使用 Python 脚本计算(高级控制)

如果你需要自定义分段读取、跳过头部等操作:

python 复制代码
# calc_md5.py
import hashlib
import sys

def get_md5(file_path):
    hash_md5 = hashlib.md5()
    with open(file_path, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python calc_md5.py <file.yuv>")
        exit(1)
    print(get_md5(sys.argv[1]))

运行方式:

bash 复制代码
python calc_md5.py traffic.yuv

✅ 四、结合 find 命令递归处理所有 YUV 文件

bash 复制代码
find /path/to/videos -name "*.yuv" -exec md5sum {} \;

输出所有子目录下的 YUV 文件 MD5。


✅ 五、为什么使用 MD5 计算 YUV 文件?

应用场景 说明
🔍 编码一致性验证 判断两个编码器输出是否完全一致
🔄 自动化测试 在 CI 中通过 MD5 对比预期结果
💾 数据完整性检查 验证 YUV 文件传输后是否损坏
⏱️ 快速比对大文件 比逐字节比较更快

⚠️ 注意:MD5 是基于整个文件的字节流计算的,因此即使两个 YUV 视频视觉相同,但如果分辨率、填充、字节顺序不同,MD5 也会不同。


✅ 六、注意事项

项目 说明
❗ YUV 是裸数据 不包含元信息(宽高、帧率),MD5 只反映字节流差异
🧮 大文件性能 即使是 1GB 的 YUV 文件,md5sum 也能快速完成
🔤 区分大小写 Linux 文件系统通常区分大小写,请确保路径正确
🐢 避免中断 如果文件正在被写入,可能导致 MD5 错误

✅ 总结:推荐命令一览

目的 命令
查看单个文件 MD5 md5sum video.yuv
仅输出哈希值 `md5sum video.yuv
批量处理 md5sum *.yuv
保存校验和 md5sum *.yuv > checksums.md5
校验已存文件 md5sum -c checksums.md5
脚本中调用 使用 Python 或 Shell 函数封装

📌 提示:你还可以将此命令集成到 .sh 脚本中,实现一键批量校验多个实验输出的 YUV 文件。

相关推荐
idolao1 分钟前
CentOS 7 安装 httpd-2.4.1.tar.gz 详细步骤(源码编译、配置、启动)
linux·运维·centos
wangjialelele1 小时前
Linux mmap 机制:从 read/write 底层流程到手写 malloc 内存分配
linux·运维·服务器·mmap
草莓熊Lotso1 小时前
【Linux网络】UDP Socket 编程全解析:从回显服务到通用字典服务,从零实现工业级代码
linux·运维·服务器·数据库·c++·单片机·udp
一只积极向上的小咸鱼3 小时前
Codex 在 VS Code + ModelArts 场景下的登录与配置总结
linux·运维·windows
Waay7 小时前
Linux Shell 知识点考评(一):grep 文本搜索(附答案)
linux·运维·服务器
jamon_tan8 小时前
Linux下串口RAW模式设置
linux
碧海银沙音频科技研究院8 小时前
基于VMware虚拟机ubuntu开发博通BK7258方法
linux·运维·ubuntu
云边有个稻草人10 小时前
【Linux系统】进程地址空间
linux·虚拟地址空间·进程地址空间·虚拟地址空间是怎么实现的?·为什么要有虚拟地址空间?·怎么理解虚拟地址空间?
weixin_5142531810 小时前
511-qwen3.5-patch
服务器
wanhengidc13 小时前
服务器中带宽的重要性
运维·服务器·网络·安全·web安全