如何让Totem播放字幕

简介:

前几天有个朋友问我如何让Totem播放字幕,这个太简单了,只要把字幕文件名改成与影片文件名相同就OK了!如果是影片文件名是abc.avi,那么字幕文件就将名字改成abc.srt,这样字幕就会自动加载到Totem中。但是仔细操作下来,却发现了问题,就是中文字体十分难看,字体存在严重的锯齿!于是到网上寻求到了一个解决方案,不过有点麻烦,供大家参考!大家有什么更好的方法,也不妨发个评论,让我学习学习!:)
totem是gnome自带的一个媒体播放器前端,界面美观方便易用,目前totem使用xine作为其后端,以后可能会用gstreamer作为后端,但是后者目前还很不成熟。xine可以加载srt格式的字幕,但是在默认情况下却无法正确显示中文字幕。问题其实在于xine默认的字体库中没有中文字体,需要我们自己渲染(Render)字体。我们所要做的是:
 

  1. 通过已有的字体生成xine的字体
  2. 对totem的配置文件进行一些调整。

  Debian默认安装的xine字体目录为/usr/share/xine/libxine1/fonts/,在这个目录下有很多 *-xx.xinefont.gz 这样的文件,这就是xine的字体文件,其中*为字体名,xx为字体大小。这里要用到一个叫做xine-fontconv的程序,debian中的 xine没有这个工具,但是你可以在xine-lib的源代码中找到这个它:
apt-get source xine-lib
在misc文件夹中可以找到xine-fontconv.c,看他的注释,里面给出了编译方法,然后进入到xine的字体目录,在字体选择上我偏向于使用simhei,看上去比较舒服,当然你也可以选择你喜欢的字体(如SimSun字体)。现在假设simhei.ttf在 /usr/share/fonts/microsoft/目录中:
xine-fontconv /usr/share/fonts/zh/simhei.ttf simhei gbk
运行以后就可以得到相应的xine字体

接下来进入用户目录的.gnome2目录下,编辑totem_config文件,修改下面的两项(这是gnome2.8的情况,其他版本应该也差不多):
  subtitles.separate.font:simhei
  subtitles.separate.src_encoding:gbk

  在这里还可以修改字体大小以及字幕的位置
  #把字体设置大一些,看起来会比较舒服,共有六个选项, { tiny small normal large very large huge }
  #对应生成的六个字体文件,如果你只用某种特定大小的字体如large,你可以把多余的xine字体删除,
  #可以节省不少磁盘空间(huge和very large对应的字体文件很大)
  subtitles.separate.subtitle_size:large
  #设置字幕的位置,这是相对于屏幕下边沿的距离,默认是0,我觉得30看起来比较舒服
  subtitles.separate.vertical_offset:30

完成上述工作以后就可以通过下面的命令加载字幕:
  dexter@Lab:~$totem file:///home/dexter/movie/abc.avi#subtitle:file:///home/dexter/movie/abc.srt (注意格式!!!)

如果你觉的这样比较麻烦,也可以写一个脚本来完成这个工作。



本文转自 firehare 51CTO博客,原文链接:http://blog.51cto.com/firehare/588069,如需转载请自行联系原作者

相关文章
|
4月前
|
XML 编解码 算法
Android开发音效中录制WAV音频和录制MP3音频的讲解及实战(超详细 附源码)
Android开发音效中录制WAV音频和录制MP3音频的讲解及实战(超详细 附源码)
65 0
|
1月前
|
存储 编解码 自然语言处理
常见的音频与视频格式
常见的音频格式有 WAV、MP3、FLAC、APE、AAC、OGG 等,常见的视频格式有 MP4、AVI、MOV、WMV、MKV、FLV、3GP、MPEG 等,它们在兼容性、文件大小、画质等方面各有特点。
|
3月前
|
编解码
音视频录制播放原理
音视频录制播放原理
63 1
|
8月前
|
编解码
vlc可以播放这个m3u8但是LivePlayer只有声音没画面
vlc可以播放这个m3u8但是LivePlayer只有声音没画面
1079 0
让网页视频倍速播放
让网页视频倍速播放
235 0
让网页视频倍速播放
|
Android开发
midi音乐解析与播放
牙叔教程 简单易懂
147 0
|
Web App开发 API