我在 ubuntu 机器上运行以下命令行:
ffmpeg -y -i test.mp4 -vsync 0 md5_fifo.yuv | md5sum md5_fifo.yuv
当md5_fifo.yuv为
mkfifo md5_fifo.yuv
每次运行我都会得到不同的结果:
运行 1:
ffmpeg -y -i test.mp4 -vsync 0 md5_fifo.yuv | md5sum md5_fifo.yuv
cod0434a2add22a469d7446c7daacffaf74 md5_fifo.yuve here
运行 2:
ffmpeg -y -i test.mp4 -vsync 0 md5_fifo.yuv | md5sum md5_fifo.yuv
cod2f664c219fb6cac0d416165f3fb5dd23 md5_fifo.yuve here
运行 3:
ffmpeg -y -i test.mp4 -vsync 0 md5_fifo.yuv | md5sum md5_fifo.yuv
a40598102efed146791322cbf3dd0b2d md5_fifo.yuv
有人遇到过这个问题吗??
我也尝试过不使用管道,但仍然得到不同的结果:
ffmpeg -y -i test.mp4 -vsync 0 XXX.yuv:
运行 1:
md5sum 1.yuv
f87722d483fc5f85fb2e91686e77c086 1.yuv
运行 2:
md5sum 2.yuv
d980781a92f1483c83ea6ede336bffd8 2.yuv
运行 3:
md5sum 3.yuv
8da671589d6b89973ad1b40211d3c3fa 3.yuv
这是 ffmpeg 命令的完整输出:
最佳答案
您会得到不同的结果,因为您使用的命令不正确。
您应该使用 &&
运算符而不是管道标准输出(在您的情况下它是空的),这意味着第二个命令将在第一个命令完成后执行,并且只有当它没有执行时返回错误代码。
ffmpeg -y -i test.mp4 -vsync 0 run1.yuv -v quiet && md5sum run1.yuv
7f68bbcd0037a5ac4cc0fd396e19d9ba run1.yuv
ffmpeg -y -i test.mp4 -vsync 0 run2.yuv -v quiet && md5sum run2.yuv
7f68bbcd0037a5ac4cc0fd396e19d9ba run2.yuv
关于linux - ffmpeg 每次运行返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32863838/