会Gstreamer的大虾进来看看

软件和网站开发以及相关技术探讨
回复
头像
yy890521
帖子: 580
注册时间: 2008-11-09 18:07
来自: SCU

会Gstreamer的大虾进来看看

#1

帖子 yy890521 » 2009-07-18 13:43

我用gstreamer作播放器,但是读取歌曲(歌曲信息中名称和艺术家的信息是正常编码,其他的可能是乱码)信息的时候有时显示乱码,有时又正常。如果是全部正常信息的歌曲输出正常。

读取歌曲代码:

代码: 全选

static gboolean core_bus_call(GstBus *bus,GstMessage *msg,gpointer data)
{	    	
    switch (GST_MESSAGE_TYPE(msg))
    {
        case GST_MESSAGE_EOS:
        {
        	g_print("End-of-stream\n");
        	core_play_next(data);
            break;
        }
        case GST_MESSAGE_ERROR:
        {
            gchar *debug;
            GError *error;
           	gst_message_parse_error(msg,&error,&debug);
            g_printerr("ERROR:%s\nDEBUG:%s\n",error->message,debug);
            g_error_free(error);
            g_free(debug);
            break;
        }
        case GST_MESSAGE_TAG:
        {
        	GstTagList *tags;
        	gchar *title=(gchar *)malloc(20);
        	gchar *artist=(gchar *)malloc(20);
        	gst_message_parse_tag(msg,&tags);
////////////////////////////////////////////////////////////   here   /////////////////////////////////////////////////////////////////
       	        if(gst_tag_list_get_string(tags,GST_TAG_TITLE,&title)&& gst_tag_list_get_string(tags,GST_TAG_ARTIST,&artist))
        	{
        		puts(title);          //输出乱码
        		puts(artist);         //输出乱码
      			gui_update_metadata(title,artist);
      		}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        	gst_tag_list_free(tags);
        	break;
        }
        default:
                 break;
    	return TRUE;
	}
	return TRUE;
}
输出有时候错误显示 而且输出了四句,为什么会产生前面乱码的两句呢?:
yy@yy-laptop:~/document/documents/zqbuttonfghfgjhtgdj$ ./a
Mouse button release at (33.00, 32.00)
³ö°£¼°¼Ç(Exodus)
Âí¿ËÎ÷Ä·
出埃及记(Exodus)
马克西姆


(a:19734): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()
。。。。。。。。感觉好山寨。。。。。。。。。
头像
AutoXBC
帖子: 1744
注册时间: 2007-10-23 12:54

Re: 会Gstreamer的大虾进来看看

#2

帖子 AutoXBC » 2009-07-18 14:05

乱码部分是用 Latin1 解码 gbk 时的显示,很多程序在识别不出字符串编码时就用 Latin1 解释,每个字节对应一个字符,虽然显示乱码不过没有丢失信息。
头像
yy890521
帖子: 580
注册时间: 2008-11-09 18:07
来自: SCU

Re: 会Gstreamer的大虾进来看看

#3

帖子 yy890521 » 2009-07-18 14:08

AutoXBC 写了:乱码部分是用 Latin1 解码 gbk 时的显示,很多程序在识别不出字符串编码时就用 Latin1 解释,每个字节对应一个字符,虽然显示乱码不过没有丢失信息。
那为什么会输出四句呢?
。。。。。。。。感觉好山寨。。。。。。。。。
头像
AutoXBC
帖子: 1744
注册时间: 2007-10-23 12:54

Re: 会Gstreamer的大虾进来看看

#4

帖子 AutoXBC » 2009-07-18 14:19

别的就不懂了。
回复