⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typefind.c

📁 GStreamer是一个开源的多媒体框架库。利用它
💻 C
字号:
/*** block a  from ../../../docs/manual/advanced-autoplugging.xml ***/#include <gst/gst.h>/*** block b  from ../../../docs/manual/advanced-autoplugging.xml ***/static gbooleanmy_bus_callback (GstBus     *bus,                 GstMessage *message,                 gpointer    data){  GMainLoop *loop = data;  switch (GST_MESSAGE_TYPE (message)) {    case GST_MESSAGE_ERROR: {      GError *err;      gchar *debug;      gst_message_parse_error (message, &err, &debug);      g_print ("Error: %s\n", err->message);      g_error_free (err);      g_free (debug);      g_main_loop_quit (loop);      break;    }    case GST_MESSAGE_EOS:      /* end-of-stream */      g_main_loop_quit (loop);      break;    default:      break;  }  /* remove from queue */  return TRUE;}/*** block c  from ../../../docs/manual/advanced-autoplugging.xml ***/static gbooleanidle_exit_loop (gpointer data){  g_main_loop_quit ((GMainLoop *) data);  /* once */  return FALSE;}static voidcb_typefound (GstElement *typefind,	      guint       probability,	      GstCaps    *caps,	      gpointer    data){  GMainLoop *loop = data;  gchar *type;  type = gst_caps_to_string (caps);  g_print ("Media type %s found, probability %d%%\n", type, probability);  g_free (type);  /* since we connect to a signal in the pipeline thread context, we need   * to set an idle handler to exit the main loop in the mainloop context.   * Normally, your app should not need to worry about such things. */  g_idle_add (idle_exit_loop, loop);}gint main (gint   argc,      gchar *argv[]){  GMainLoop *loop;  GstElement *pipeline, *filesrc, *typefind;  GstBus *bus;  /* init GStreamer */  gst_init (&argc, &argv);  loop = g_main_loop_new (NULL, FALSE);  /* check args */  if (argc != 2) {    g_print ("Usage: %s <filename>\n", argv[0]);    return -1;  }  /* create a new pipeline to hold the elements */  pipeline = gst_pipeline_new ("pipe");  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));  gst_bus_add_watch (bus, my_bus_callback, NULL);  gst_object_unref (bus);  /* create file source and typefind element */  filesrc = gst_element_factory_make ("filesrc", "source");  g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);  typefind = gst_element_factory_make ("typefind", "typefinder");  g_signal_connect (typefind, "have-type", G_CALLBACK (cb_typefound), loop);  /* setup */  gst_bin_add_many (GST_BIN (pipeline), filesrc, typefind, NULL);  gst_element_link (filesrc, typefind);  gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);  g_main_loop_run (loop);  /* unset */  gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);  gst_object_unref (GST_OBJECT (pipeline));  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -