Что такое синтаксис прописных букв gstreamer? - PullRequest
12 голосов
/ 04 марта 2010

Каков синтаксис для заглавных букв, определяющих медиа возможности, в gstreamer? Заглавные буквы - это строки, которые определяют тип разрешенного носителя и выглядят как «audio / x-raw-int, ...», но мне не удалось найти хорошую документацию о том, что разрешено в строке заглавных букв.

Ответы [ 7 ]

10 голосов
/ 11 ноября 2011

Синтаксис:

<type>[,<property>=<value>]...

Обратите внимание, что типом является , а не типом MIME, однако он может выглядеть как один.

Вы можете узнать, какие элементы свойств caps поддерживают элементы, используя gst-inspect. Он предоставит «шаблоны пэдов» для пэдов элемента, в которых будут указаны поддерживаемые диапазоны заглавных букв.

Руководство по написанию плагинов GStreamer также содержит список определенных типов , который описывает свойства для распространенных форматов аудио, видео и изображений.

6 голосов
/ 12 августа 2013

Я вижу, что вы после аудио.

Я просто дам вам длинную версию, вы можете уронить или заменить ненужные детали. Это изменяется между GStreamer 0.10 и GStreamer 1.0. Я дам оба:

для GStreamer 0.10:

audio/x-raw-int,rate=44100,channels=2,width=16,depth=16,endianness=1234,signed=true

для GStreamer 1.0:

audio/x-raw,format=S16LE,channels=2,layout=interleaved

Как видите, с 1.0 вам нужно будет объединить аудиоформат. S16LE означает знак со знаком + int + 16 width + little endian (= 1234).

4 голосов
/ 16 мая 2013

Вот формат, насколько я понимаю:

caps = <caps_name>, <field_name>=<field_value>[; <caps>]
<caps_name> = image/jpeg etc
<field_name> = width etc
<field_value> = <fixed_field_value>|<ranged_field_value>|<multi_field_value>
<fixed_field_value> = 800 etc
<ranged_field_value> = [<lower_value>, <upper_value>]
<multi_field_value> = {<fixed_field_value>, <fixed_field_value>, <fixed_field_value>, ...}
4 голосов
/ 01 апреля 2010

Вот как я использую его в Python ... HTH

caps = gst.Caps("video/x-raw-yuv,format=(fourcc)AYUV,width=704,height=480")
capsFilter = gst.element_factory_make("capsfilter")
capsFilter.props.caps = caps
3 голосов
/ 19 сентября 2011

В Java для gstreamer-java

final Element videofilter = ElementFactory.make("capsfilter", "flt");
videofilter.setCaps(Caps.fromString("video/x-raw-yuv, width=720, height=576"
+ ", bpp=32, depth=32, framerate=25/1"));

В C, скажем, вы хотите фильтр шапки для видеомасштабов

GstElement *videoscale_capsfilter;
GstCaps* videoscalecaps;
...
...
videoscale = gst_element_factory_make ("videoscale", "videoscale");
g_assert (videoscale);
videoscale_capsfilter = gst_element_factory_make ("capsfilter", "videoscale_capsfilter");
g_assert (videoscale_capsfilter);
... 
...

затем установите свойства

g_object_set( G_OBJECT ( videoscale_capsfilter ),  "caps",  videoscalecaps, NULL );

тогда вы можете добавить их в bin и связать их так, как вы сконструировали медиа конвейер, используя gst-launch

/* Add Elements to the Bin */
gst_bin_add_many (GST_BIN (pipeline),source ,demux ,decoder ,videoscale ,videoscale_capsfilter ,ffmpegcolorspace ,ffmpegcolorspace_capsfilter,autovideosink,NULL);

 /* Link confirmation */
if (!gst_element_link_many (demux, decoder,videoscale, videoscale_capsfilter ,ffmpegcolorspace, ffmpegcolorspace_capsfilter, autovideosink, NULL)){
 g_warning ("Main pipeline link Fail...");
}

/* Dynamic Pad Creation */
if(! g_signal_connect (source, "pad-added", G_CALLBACK (on_pad_added),demux))
{
 g_warning ("Linking Fail...");
}
1 голос
/ 01 сентября 2011

Я не уверен, потому что ваш вопрос касается синтаксиса, но "список определенных типов" может быть полезным.

1 голос
/ 16 июня 2010

частичный ответ, который, я уверен, вы уже сработали:

"MIMETYPE,PROPERTY1=VALUE1,PROPERTY2=VALUE2,..."

формально, заглавные буквы представлены не строками, а объектом GstCaps, содержащим массив GstStructures.см. документацию здесь .

возможно, если мы выработаем здесь окончательный ответ, мы могли бы представить патч для документации для функции gst_caps_from_string()

...