linux - ffmpeg 每次运行返回不同的结果

标签 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

最佳答案

您会得到不同的结果,因为您使用的命令不正确。

您应该使用 && 运算符而不是管道标准输出(在您的情况下它是空的),这意味着第二个命令将在第一个命令完成后执行,并且只有当它没有执行时返回错误代码。

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/

相关文章:

android - FFMPEG:创建幻灯片时在视频中定位图像

compiler-errors - CoCreateInstanceFromApp 未使用 WinRT + Visual Studio 2013 定义

linux - 停止后脚本仍在后台执行

python - 提高挂载目录的 IO 性能?

ffmpeg - dxva2 硬件解码器支持哪些 h264 配置文件

android - 在 android 上以 30fps 显示来自 SDCard 的 450 个图像文件

linux - 如何通过 sed 或 awk 递归替换文件中的字符串?

c - 如何在一个进程中接受 SSL 连接并在另一个进程中重用相同的 SSL 上下文

c - 为什么编译的 C 程序依赖于操作系统

PHP-FFMpeg : How to properly concatenate two videos?