如何使用GStreamer 1.0将原始BGRA图像转换为JPG?

时间:2014-11-14 14:09:44

标签: image converter gstreamer gst-launch

我尝试使用gst-launch-1.0显示raw image (1.8MB)。据我所知,在实现这一目标之前,需要将数据编码为JPG。如果图片已经存储为 jpg 文件,那么故事就会非常简单:

gst-launch-1.0.exe -v filesrc location=output.jpg ! decodebin ! imagefreeze ! autovideosink

但是,我需要组装管道以显示由3D应用程序转储到磁盘的raw BGRA 800x600 image(看起来与上面相同)。

这是我到目前为止所做的,但问题是它会在磁盘上创建一个完全黑色的图像:

gst-launch-1.0.exe -v filesrc location=dumped.bin ! video/x-raw,format=BGRA,width=800,height=600,framerate=1/1 ! videoconvert ! video/x-raw,format=RGB,framerate=1/1 ! jpegenc ! filesink location=out.jpg

GStreamer可以处理这项任务吗?

1 个答案:

答案 0 :(得分:5)

解决了!我遇到的两个主要问题是:

  • dump.bin 是我系统上的符号链接(Cygwin),由于某种原因gst-launch-1.0无法使用它;
  • 使用原始数据时,必须filesrc指定 blocksize

gst-launch-1.0.exe -v filesrc location=dumped.bin blocksize=1920000 ! video/x-raw,format=BGRA,width=800,height=600,framerate=1/1 ! videoconvert ! video/x-raw,format=RGB,framerate=1/1 ! jpegenc ! filesink location=out.jpg

在这个特定情况下,我还需要垂直翻转图像,因为它是captured from the OpenGL framebuffer of a 3D application

gst-launch-1.0.exe -v filesrc location=dumped.bin blocksize=1920000 ! video/x-raw,format=BGRA,width=800,height=600,framerate=1/1 ! videoconvert ! video/x-raw,format=RGB,framerate=1/1 ! videoflip method=vertical-flip ! jpegenc ! filesink location=out.jpg