我想制作一个GStreamer应用程序,它将图像数据作为源而不是文件位置。我的目的是显示通过tcp接收的图像。当tcp获得一个图像数据(字节数组)时,它应该直接将数据传递给gstreamer插件,而不是在本地保存它。
答案 0 :(得分:2)
multifilesrc应该可以完成工作。
描述
从顺序命名的文件中读取缓冲区。如果与一起使用 图像解码器,需要使用“caps”属性或capsfilter来实现 强制包含帧率的大写字母。否则图像解码器发送 EOS之后的第一张照片。我们还需要一个videorate元素来设置 按照第一个缓冲区后的所有缓冲区上的时间戳 帧率。
通过使用索引替换“%d”来创建文件名 printf()的
示例启动线
gst-launch-1.0 multifilesrc location="img.%04d.png" index=0 caps="image/png,framerate=\(fraction\)12/1" ! \ pngdec ! videoconvert ! videorate ! theoraenc ! oggmux ! \ filesink location="images.ogg"
此管道通过连接多个来创建视频文件“images.ogg” 名为img.0000.png,img.0001.png等的PNG文件
因此,如果您通过命令行使用gstreamer,这应该可以解决问题。 您只需要明确该文件并在文件收到时“循环”。
否则编写使用multifilesrc作为源的gstreamer管道并不是那么复杂。