0

我正在尝试使用 Gstreamer 创建图像矢量。为此,我像这样使用 videomixer gref:

gst-launch -e \videomixer name = mixer \
 sink_0::xpos = 0 sink_0::ypos = 0 \
 sink_1::xpos = 100 sink_1::ypos = 0 \
 sink_2::xpos = 200 sink_2::ypos = 0 \
 sink_3::xpos = 300 sink_3::ypos = 0 \
 sink_4::xpos = 400 sink_4::ypos = 0 \
 sink_5::xpos = 500 sink_5::ypos = 0 \
 sink_6::xpos = 600 sink_6::ypos = 0 \
 sink_7::xpos = 700 sink_7::ypos = 0 \
 sink_8::xpos = 0 sink_8::ypos = 0  \
! xvimagesink \
filesrc location = 0.jpg \
! decodebin2 ! ffmpegcolorspace  \
! imagefreeze ! videoscale method = 1 ! video/x-raw-yuv, width = 100, height = 100 ! mixer.sink_0. \
filesrc location = 1.jpeg \
! decodebin2 ! ffmpegcolorspace  \
! imagefreeze ! videoscale method = 1 ! video/x-raw-yuv, width = 100, height = 100 ! mixer.sink_1. \
filesrc location = 2.png \
! decodebin2 ! ffmpegcolorspace  \
! imagefreeze ! videoscale method = 1 ! video/x-raw-yuv, width = 100, height = 100 ! mixer.sink_2. \
filesrc location = 3.png \
! decodebin2 ! ffmpegcolorspace  \
! imagefreeze ! videoscale method = 1 ! video/x-raw-yuv, width = 100, height = 100 ! mixer.sink_3. \
filesrc location = 4.png \
! decodebin2 ! ffmpegcolorspace  \
! imagefreeze ! videoscale method = 1 ! video/x-raw-yuv, width = 100, height = 100 ! mixer.sink_4. \
filesrc location = 5.png \
! decodebin2 ! ffmpegcolorspace  \
! imagefreeze ! videoscale method = 1 ! video/x-raw-yuv, width = 100, height = 100 ! mixer.sink_5. \
filesrc location = 6.JPG \
! decodebin2 ! ffmpegcolorspace  \
! imagefreeze ! videoscale method = 1 ! video/x-raw-yuv, width = 100, height = 100 ! mixer.sink_6. \
filesrc location = 7.png \
! decodebin2 ! ffmpegcolorspace  \
! imagefreeze ! videoscale method = 1 ! video/x-raw-yuv, width = 100, height = 100 ! mixer.sink_7. \
filesrc location = bg.jpg \
! decodebin2 ! ffmpegcolorspace \
! imagefreeze ! mixer.sink_8.

但我有一个问题,它似乎只适用于几种类型的图像(通常使用 .png,但不适用于 .jpg)。我不明白,decodebin 应该与文件格式无关,不是吗?我试图为向量的每个元素放置相同的 png 文件,这没关系,那怎么了?我有以下错误:“数据流内部错误”。

你有想法吗 ?

谢谢 !

(对不起我的英语,我是法国人)

4

1 回答 1

0

首先,您使用的是哪个 gstreamer 版本?(0.10 或 1.0)。如果您使用 0.10,我建议您使用 videomixer2。

videomixer 对输入格式非常敏感,因此我建议您在 videomixer 的每个输入板中添加特定格式,例如“video/x-raw-yuv, format=(fourcc)AYUV, width=100,高度=100"

如果您没有透明 PNG,我建议您使用这个:“video/x-raw-yuv, format=(fourcc)I420, width=100, height=100” 应该可以

于 2013-10-24T19:19:59.580 回答