gpt4 book ai didi

c - 如何展示信息?

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:03 25 4
gpt4 key购买 nike

抱歉之前的帖子。我会尝试更精确。

我使用 Gstreamer 创建了一个管道,其中包含一个 video.ts 元素,我可以毫无问题地看到和听到视频,但我想获得一些信息包 video.ts。

有兴趣的信息给我PTS、DTS、OFFSET和PID。为了查看这些值,我使用了 Tsdemux 的“emit-stats”属性。

g_object_set(G_OBJECT(v1_demux),"emit-stats",1,NULL);

现在,我想查看 PTS、DTS、OFFSET 和 PID 的值。为此,请使用“gst_bus_add_watch”并为消息创建多个案例

case GST_MESSAGE_EOS:
g_print (" \n");
g_print (" End of video\n");

g_main_loop_quit (loop);
break;

case GST_MESSAGE_ERROR: {
gchar *debug;
GError *error;

gst_message_parse_error (msg, &error, &debug);

g_free (debug);
g_printerr ("Error: %s\n", error->message);
g_error_free (error);

g_main_loop_quit (loop);
break;
}/*end case error*/

case GST_MESSAGE_ELEMENT:{

if(strcmp(GST_MESSAGE_SRC_NAME (msg),"mux")==0){
msg_struct=gst_message_get_structure(msg);

i=i+1;
g_print ("Element nº: %d \n", i);

/* get PID,PTS,DTS,OFFSET value */
pts =gst_structure_get_value (msg_struct,"pts");
dts =gst_structure_get_value (msg_struct,"dts");
offset =gst_structure_get_value (msg_struct,"offset");
pid =gst_structure_get_value (msg_struct,"pid");

/*display information PTS, DTS, OFFSET*/
if(pts!=0){
g_print(" *PID= % " G_GUINT64_FORMAT" *PTS= % " G_GUINT64_FORMAT " *Offset: % " G_GUINT64_FORMAT "\n",g_value_get_uint64(pid), g_value_get_uint64(pts),g_value_get_uint64(offset));
}else if (dts!=0){
g_print(" *DTS= % " G_GUINT64_FORMAT " *Offset: % " G_GUINT64_FORMAT "\n",g_value_get_uint64(dts),g_value_get_uint64(offset));
}else if (pts==0 && dts==0){
g_print(" *Paquete nulo: PTS=0 DTS=0 \n" );
}
}

现在我可以看到 PTS、DTS 和 OFFSET 的值。这部分可以解决whit大量的耐心,测试和纠正错误。但是 PID 显示不正确,我真的不知道如何解决这个问题。

显示消息快照

estoy imprimiendo estados n?: 490 *DTS= 4672782274 *Offset: 12554828 Element n?: 491

(test:3385): GLib-GObject-CRITICAL **: g_value_get_uint64: assertion `G_VALUE_HOLDS_UINT64 (value)' failed *PID= 0 *PTS= 4672793074 *Offset: 12554828 Element n?: 492

(test:3385): GLib-GObject-CRITICAL **: g_value_get_uint64: assertion `G_VALUE_HOLDS_UINT64 (value)' failed *PID= 0 *PTS= 4672746274 *Offset: 12556520 Element n?: 493

(test:3385): GLib-GObject-CRITICAL **: g_value_get_uint64: assertion `G_VALUE_HOLDS_UINT64 (value)' failed *PID= 0 *PTS= 4672748074 *Offset: 12605024 Element n?: 494

我该怎么做才能正确显示 PID?

最佳答案

GstStructure 是键/值对的集合。你可以使用

gchar * gst_structure_to_string (const GstStructure *structure);

显示所有字段。在你的情况下

g_print("%s\n", gst_structure_to_string(gst_message_get_structure(msg)));

关于c - 如何展示信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com