+ -
当前位置:首页 → 问答吧 → gstreamer简易插件实现wma,mp3,mpga,rm的播放

gstreamer简易插件实现wma,mp3,mpga,rm的播放

时间:2011-08-17

来源:互联网

本身的框架沿用了网上的MP3播放的程序,修改了一些地方。
  增加了add_pad:
[:]
  static void
add_pad (GstElement *element ,GstPad *pad , gpointer data){

gchar *name;
GstElement *sink=(GstElement*)data;

name=gst_pad_get_name(pad);
gst_element_link_pads(element,name,sink,"sink");
g_free(name);
}
[:]
  然后在主程序后面的link也有一些更改:
[:]
g_object_set(G_OBJECT(source),"location",argv[1],NULL);
bus=gst_pipeline_get_bus(GST_PIPELINE(pipeline));
gst_bus_add_watch(bus,bus_call,loop);
gst_object_unref(bus);
gst_bin_add_many(GST_BIN(pipeline),source,decoder,sink,NULL);
g_signal_connect(decoder,"pad-added",G_CALLBACK(add_pad),sink);
if(! gst_element_link(source,decoder)){
g_warning("link source to decoder failed");
}
gst_element_set_state(pipeline,GST_STATE_PLAYING);
g_print("Running...\n");
g_main_loop_run(loop);
[:]
  虽然说实现了,这几种音频的播放,但是对于有些东西还是有一些不解,就是decodebin
的用法,为什么不能直接LINK;
  用gst-inspect 看了一下他的一些相关信息,请问是不是decodebin是在element的bin之下,
而其他的一些例如filesrc直接就存在于element下面,所以才连接不上呢。还是什么其他的原因。
  百思不得其解,本人纯属菜鸟,刚接触gstreamer不久,请gstreamer高人指点。
   

作者: gaoshanzhishui   发布时间: 2011-08-17

先顶一个,有个别的wma文件播放时会出现断续的情况,但是用Audacious播放器播放就很连续,是不是Audacious有自带的数据处理功能呢。

作者: gaoshanzhishui   发布时间: 2011-08-17