我在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命令的完整输出:
答案 0 :(得分:0)
您得到的结果不同,因为您使用的命令不正确。
不是管道标准输出(在你的情况下是空的)你应该使用&&
运算符,这意味着第二个命令将在第一个完成后执行,并且只有在它没有返回错误时才会执行代码。
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