Каков синтаксис для кепок, определяющих возможности мультимедиа, в gstreamer? Шаблоны - это строки, которые указывают тип разрешенного носителя и похожий на "audio/x-raw-int,...", но я не смог найти хорошую документацию точно о том, что разрешено в строке шапки.
Что такое синтаксис шапки gstreamer?
Ответ 1
Синтаксис:
<type>[,<property>=<value>]...
Обратите внимание, что тип не является типом MIME, однако он может выглядеть как один.
Вы можете узнать, какие элементы свойств шапки поддерживаются с помощью gst-inspect
. Он будет содержать "шаблоны пэдов" для подушечек элементов, в которых будут указаны диапазоны поддерживаемых шапок.
В руководстве по созданию плагина GStreamer также содержится список определенных типов, который описывает свойства для обычных форматов аудио, видео и изображений.
Ответ 2
Я вижу, что вы после звука.
Я просто дам вам длинную версию, вы можете сбросить или изменить части, которые вам не нужны. Однако он изменяется между 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).
Ответ 3
Вот как я использую его в 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
Ответ 4
Вот формат, насколько я понимаю:
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>, ...}
Ответ 5
Я не уверен из-за вашего вопроса о синтаксисе, но "список определенных типов" может быть полезен.
Ответ 6
частичный ответ, который, я уверен, вы уже разработали:
"MIMETYPE,PROPERTY1=VALUE1,PROPERTY2=VALUE2,..."
формально шапки не представлены строками, а объектом GstCaps, содержащим массив GstStructures. см. документацию здесь.
возможно, если мы выработаем окончательный ответ здесь, мы можем представить патч для документации для функции gst_caps_from_string()
Ответ 7
В 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 );
то вы можете добавить их в корзину и связать их так, как вы создали медиа-конвейер, используя 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...");
}