ffmpeg每次运行都会返回不同的resuslts

时间:2015-09-30 10:30:41

标签: linux ffmpeg

我在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命令的完整输出:

enter image description here

1 个答案:

答案 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