无损压缩的JPEG gstreamer元素?
下面的管道工作正常,以保存压缩的JPEG图像,但有没有办法使用gstreamer保存无损压缩的JPEG图像?
gst-launch v4l2src always-copy = false num-buffers = 1 chain-ipipe = true! 'video / x-raw-yuv,format =(fourcc)NV12,width = 2176,height = 1944'! dmaiaccel! dm365facedetect draw-square = true! dmaienc_jpeg! filesink位置= $ FILE_NAME
假设您安装了所有GStreamer插件(好,坏,丑),您可以通过FFmpeg GStreamer元素获得大量无损视频压缩器。 这些包括ffenc_png(用于PNG编码),ffenc_jpegls(无损JPEG算法)以及许多不常用的算法。
但是,如果我正确读取GStreamer命令行,您似乎在调用一系列与特定类型硬件绑定的自定义组件(我一直在使用谷歌搜索,但我还没有完全明白它是什么)。 JPEG编码器组件是'dmaienc_jpeg'。 链中前面的元素(dm365facedetect)可能仅输出dmaienc_jpeg可以解释的数据。 但是,如果它是一般的色彩空间,那么您可以通过FFmpeg无损编码器发送它,可能在两者之间进行色彩空间转换。 可以通过调用元素的“gst-inspect”并研究输出(src和sink数据类型)来确定答案。
根据新数据更新:好消息:dm365facedetect元素以NV12格式输出原始YUV。 非常灵活,你有很多选择。
你在哪个平台上? 如果您使用的是Ubuntu Linux,请使用以下命令安装一堆GStreamer插件:
apt-get install gstreamer0.10-plugins-good
gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg
一些无损编解码器选项:PNG,通过'pngenc'或'ffenc_png'(尽管这在技术上可能会由于YUV→RGB色彩空间转换而产生一点点损失),'ffenc_huffyuv','ffenc_jpegls'或'ffenc_ljpeg'。 当你编码这些时,通过avimux组件发送它们。 所以,对命令行结尾的一个示例修改:
... ! dm365facedetect draw-square=true ! ffenc_ljpeg !
avimux ! filesink location=$FILE_NAME
预计无损编解码器数据比您之前获得的JPEG数据稍大。 尝试使用不同的编解码器来查看您喜欢的内容,并确保您可以使用首选工具链解码另一端的数据(FFmpeg和VLC应始终能够处理它)。
链接地址: http://www.djcxy.com/p/43933.html