Я хочу передать несколько случайных байтов в Gstreamer и отобразить его следующим образом:
[Rand Bytes]--[Video source=appsrc]--[Video sink=ximagesink]
Следующий код Python, который я нашел в этом посте SO работает
source = gst.element_factory_make("appsrc", "source")
caps = gst.Caps("video/x-raw-gray,bpp=16,endianness=1234,width=320,height=240,framerate=(fraction)10/1")
source.set_property('caps',caps)
source.set_property('blocksize',320*240*2)
source.connect('need-data', self.genRandBytes)
colorspace = gst.element_factory_make('ffmpegcolorspace') #To remove
videosink = gst.element_factory_make('ximagesink')
caps = gst.Caps("video/x-raw-yuv,width=320,height=240,framerate=(fraction)10/1,format=(fourcc)I420")
videosink.caps = caps
gst.element_link_many(source, colorspace, videosink)
Однако, если я удаляю деталь colorspace
и устанавливаю videosink.caps
как и source
, она перестает работать (ничего не происходит после нажатия кнопки «Пуск»).
Мой вопрос: зачем здесь нужен * 1014? Можно ли просто настроить appsrc--ximagesink
?