如何在gstreamer上使用属性

时间:2015-03-10 20:03:37

标签: gstreamer

我是新用的流媒体,我尝试在tsdemux中使用emit-stats属性

如何在我的管道中使用它?

我试图获取信号传输流的程序时钟参考值,但无法获得它。

2 个答案:

答案 0 :(得分:0)

通常使用普通的GLib API访问GStreamer中的属性:g_object_setg_object_get。假设g_object_set (v1_demux, "emit-stats", TRUE, NULL);v1_demux,执行GstTSDemux*将开始发送包含流入解复用程序的数据包的PTS和DTS的消息。

GStreamer中的元素消息由gst_element_post_message发出。要在您的应用程序中接收它们,需要在bus watch上设置main pipeline's GstBus

只是为了记录,您可以通过在gst-launch中运行此示例管道来测试属性的工作方式并查看消息的内容:

gst-launch-1.0 -m filesrc location="$YOUR_TRANSPORT_STREAM" ! tsdemux emit-stats=1 ! fakesink

使用我的HDD上的一个传输流运行它,我可以看到从解复用器元素发出PTS和DTS的消息:

Got message #77 from element "tsdemux0" (element): tsdemux, pid=(uint)1803, offset=(guint64)266020, pts=(guint64)8429319339;
Got message #78 from element "tsdemux0" (element): tsdemux, pid=(uint)1805, offset=(guint64)273540, pts=(guint64)8429311261;
Got message #79 from element "tsdemux0" (element): tsdemux, pid=(uint)1802, offset=(guint64)282564, dts=(guint64)8429444461;

但是,它看起来不像PCR和OPCR值。您必须自己添加此功能。

答案 1 :(得分:0)

感谢您的信息。

是测试命令并查看脚本并检查值,但是花费了我在我的行中添加消息emit-stats。

如果我在主管道的GstBus上创建了一个巴士手表,可以看到我的线路中的视频持续时间和播放时间,但无法同时看到消息统计数据和视频。我仍在调查comohacerlo以某种方式存储信息pts和dts。

我的想法是获取两个视频的标记并减去它以计算一个视频中的自动偏移。