VLC实现中文OSD

    最近这几天有个OSD中文的需求,而libvlc没有,就到处查资料,看了好多英文资料,还厚着脸皮去irc.vidoelan.org去在线提问(本人英语确实不怎么好!),不过最后还是解决了,功夫不负有心人!

     进入主题首先列出我遇到的问题:第一:libvlc没有OSDTEXT接口;第二:能显示英文,中文却乱码。

    解决第一个问题:修改vlc源码lib/video.c 添加函数

int Libvlc_video_set_osd_text(libvlc_media_player_t *p_mi,int channel,int position, int64_t duration, const char *psz_text)
{
	vout_thread_t *p_vout = GetVout(p_mi,0);
	
	if(p_vout == NULL)
		return -1;
	vout_OSDText(p_vout,channel,position,duration,psz_text);

	vlc_object_release(p_vout);
	return 0;
}

对参数psz_text说明下,它必须是以空字符为结尾的UTF-8G格式的字串,然后重新编译vlc这样libvlc就有这个函数了.

    解决第二个问题:这个问题恶心了我很久,因为以前没有接触过字符集之类的问题,这样又去一个不是很了解的vlc里面要加这个汉字的功能,难上加难。只要你的显示出现全是乱码以后,这就是字体(font)没有这个字,或则是这个font里面没有包含全部的汉字,我试了很多font,最后得出了结论:(win7字体查看器)就是凡是简体字符集的都用不了,eg:微软雅黑,方正舒体;繁体font我没有全部试玩,列出两个MingLiU(win7 & Xp),DFKai-SB(Win7 only),这些都行,至于为什么有些字体用不了,网上有说是vlc font cache的问题,但是我还没有研究透,不知其具体原因,以后对vlc更加深入的了解以后,博文会做相应的更新,最后加一个命令行"--freetype-font=(+字体名)"搞定!

 

     心得:vlc很强大,很多功能在libvlc里面都没有写,要自己去实现它,多看看源码才好!以后我会逐步更新vlc的一些心得,作为我的学习笔记,有兴趣的朋友可以在这里一起学习,讨论,交流!------by唐玄奘

你可能感兴趣的:(VLC学习)