Можно ли сделать настройку appsrc - ximagesink в Gstreamer - PullRequest
0 голосов
/ 18 ноября 2011

Я хочу передать несколько случайных байтов в 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?

1 Ответ

1 голос
/ 14 марта 2012

ximagesink не поддерживает x-raw-grey, поэтому требуется преобразование цветового пространства.

Сказав это, в документации сказано, что ximagesink поддерживает только video / x-raw-rgb, поэтому ядумая, что установка свойства caps для раковины не очень важна.Фактически, если посмотреть на вывод панели приемника в методе ximagesource get_caps (), он по-прежнему video / x-raw-rgb даже после того, как установлено свойство caps и началось воспроизведение.Вывод строки из свойства caps не влияет на вывод.

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-ximagesink.html

...