我是新用的流媒体,我尝试在tsdemux中使用emit-stats属性
如何在我的管道中使用它?
我试图获取信号传输流的程序时钟参考值,但无法获得它。
答案 0 :(得分:0)
通常使用普通的GLib API访问GStreamer中的属性:g_object_set
和g_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。
我的想法是获取两个视频的标记并减去它以计算一个视频中的自动偏移。