2010-03-04 348 views
11

gstreamer中cap,指定媒体功能的语法是什么? Caps是指定允许的媒体类型的字符串,看起来像“audio/x-raw-int,...”,但我一直无法找到有关cap字符串中允许的准确文档。什么是gstreamer caps语法?

+0

你有很多答案可供选择。你会考虑接受其中之一吗? – 2017-01-06 02:11:35

回答

4

这是我如何使用它在蟒蛇... 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 
+0

我正在查找指定大写字符串的语法。 “video/x-raw-yuv,...” – joeforker 2010-04-08 17:17:55

1

了部分答案,我敢肯定,你已经计算出已经:

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

正式,盖是不由字符串表示,而是由包含GstStructures数组的GstCaps对象表示。请参阅文档here

也许,如果我们在这里工作了一个明确的答案,我们可以提交一份文件补丁功能gst_caps_from_string()

1

在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,说你要videoscale帽过滤

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

0123构建媒体管道的方式链接它们
/* 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..."); 
} 
9

的语法是:

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

注意该类型是 MIME类型,但是很多它可能看起来像一个。

您可以通过使用gst-inspect找出哪些上限属性元素支持。它会为元素的pad提供“pad模板”,这将指定支持的cap的范围。

GStreamer插件作者指南还包含一个描述常见音频,视频和图像格式属性的list of defined types

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>, ...} 
+0

这非常好,但它遗漏了新的功能特性。 – swestrup 2017-01-06 18:04:06

6

我看你是音频后。

我只给你一个长版本,你可以删除或更改你不需要的部分。不过,它在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宽度+小端(= 1234)。