Gstreamer 和 FFMpeg 是否可以得到完全相同的输出?

问题描述 投票:0回答:1

我发现使用 Gstreamer 转储相同的视频文件(链接:https://drive.google.com/file/d/1KaVXUMzLBKF8vOwy-QR1VCjRujEOHhFi/view?usp=sharing):

gst-launch-1.0 filesrc location=video.avi ! decodebin ! videoconvert | pngenc ! multifilesink location=gstreamer_frames/"frame_%d.png"

与使用等效的 ffmpeg 命令相比,给出的图像略有不同

ffmpeg -i video.avi ffmpeg_frames/frame_%d.png

可以使用 Python 检查差异:

>>> import cv2
>>> ffmpeg_image = cv2.imread("ffmpeg_frames/frame_280.png")
>>> gstreamer_image = cv2.imread("gstreamer_frames/frame_280.png")
>>> ffmpeg_image == gstreamer_image
>>> gstreamer_image[-1, -5:, 0]
array([12,  6,  4,  0,  0], dtype=uint8)
>>> ffmpeg_image[-1, -5:, 0]
array([13,  8,  5,  2,  2], dtype=uint8)

是否可以使用 Gstreamer 和 FFMPeg 获得完全相同的输出?

ffmpeg gstreamer
1个回答
0
投票

您可以尝试将解码器显式设置为管道中的 ffmpeg 风格之一吗?也许decodebin正在使用另一个解码器

例如 mpeg4

gst-launch-1.0 filesrc location=video.avi ! avidemux ! avdec_mpeg4 !  videoconvert ! pngenc ! multifilesink location=gstreamer_frames/"frame_%d.png"
© www.soinside.com 2019 - 2024. All rights reserved.