# [解决] totem + xine-lib 无法播放 xvid 及其他

## EricHsu

这两天都在折腾版面, 我的问题发出去好些天了都无人问津, 衰:

latest totem with xine-lib backend problems...

这是一个 totem + xine-lib 的问题大集合, 所有倒霉 bugs 都让我撞上了, 人品问题... 急需解救   :Evil or Very Mad: 

Edit:

- Eric.200412222121

各个问题已解决:

 xine-lib rc6/rc7不能播放 xvid 的问题

并非像 majorcheng 朋友所说的那么简单, 抓 codec 扔哪里就可以解决的. 问题在于 xine-lib 内部 ffmpeg 解码器 (internel ffmpeg codec) 中有 undefined symbol 以致 xine-lib 在解码 xvid 是无法正常 link ffmpeg 解码器, 因而无法播放 xvid.

运行如下命令可以看到存在问题的库:

```

$ ldd -r /usr/lib/xine/plugins/1.0.0/xineplug_decode_ff.so

[snip]

undefined symbol: mm_flags  (/usr/lib/xine/plugins/1.0.0/xineplug_decode_ff.so)

undefined symbol: dsputil_init_mmx  (/usr/lib/xine/plugins/1.0.0/xineplug_decode_ff.so)

undefined symbol: MPV_common_init_mmx  (/usr/lib/xine/plugins/1.0.0/xineplug_decode_ff.so)

```

正常的输出则是:

```

$ ldd -r /usr/lib/xine/plugins/1.0.0/xineplug_decode_ff.so

        linux-gate.so.1 =>  (0xffffe000)

        libxine.so.1 => /usr/X11R6/lib/libxine.so.1 (0xb7d64000)

        libm.so.6 => /lib/libm.so.6 (0xb7d40000)

        libz.so.1 => /lib/libz.so.1 (0xb7d28000)

        libc.so.6 => /lib/libc.so.6 (0xb7bfe000)

        libpthread.so.0 => /lib/libpthread.so.0 (0xb7beb000)

        libdl.so.2 => /lib/libdl.so.2 (0xb7be7000)

        libfreetype.so.6 => /usr/X11R6/lib/libfreetype.so.6 (0xb7b49000)

        librt.so.1 => /lib/librt.so.1 (0xb7b3f000)

        /lib/ld-linux.so.2 (0x80000000)

```

具体请参看该 Bug Report.

 emerge xine-lib rc8 以及 totem 0.99.22 出错的问题及其解决方法

请参看此帖. 注: 使用里面所说的方法可以让 xine-lib 在 emerge 时照样使用各种优化的 CFLAGS, 而无须更改  :Smile: 

现在我的 totem 又是万能的啦  :Laughing: 

----------

## younker

不知道有没有用，不过你可以试一下

在你的CFLAGS中去掉任何关于CPU特征的指令，比如-mmmx, -msse2等。

不要使用-O3级别的的优化参数来编译这两个东西。不过如果你不用totem的话，你可以使用-O3来编译Xine-lib,Xine-UI,如果你使用totem，就不要-O3了。

不过gnome下面的每天播放器真就没有一个好用的。totem，rhythmbox都是一堆的问题。

----------

## kohno

还是较喜欢mplayer。

----------

## EricHsu

Hi younker,

帖子里的问题都基本给我折腾完了, 现在只剩下最后一个: 就是 totem 放不了 xvid 的片子了! 我后来试着装回我重装系统前什么都能放的 totem-0.99.19 版本, 还是一样, 放不了 xvid! 这个和 CFLAGS 无关吧?...

嗯, 明天广州回来再试试吧  :Confused: 

----------

## majorcheng

没有这么伪科学吧，用-03不行用-02编译就可以？。。。。。

播放不了xvid是解码的问题，去抓相关的codecs就可以了，最简单的到mplayer那儿把它的codecs给丢到相关目录去

----------

## younker

 *EricHsu wrote:*   

> Hi younker,
> 
> 帖子里的问题都基本给我折腾完了, 现在只剩下最后一个: 就是 totem 放不了 xvid 的片子了! 我后来试着装回我重装系统前什么都能放的 totem-0.99.19 版本, 还是一样, 放不了 xvid! 这个和 CFLAGS 无关吧?...
> 
> 嗯, 明天广州回来再试试吧 

 

原来是不能播放xvid，那估计就是codec的问题了， xvid应该有单独的ebuild的。

我以前的问题是totem不能起动或者起动之后就Freeze了。

----------

## xiaosuo

 *younker wrote:*   

> 不知道有没有用，不过你可以试一下
> 
> 在你的CFLAGS中去掉任何关于CPU特征的指令，比如-mmmx, -msse2等。
> 
> 不要使用-O3级别的的优化参数来编译这两个东西。不过如果你不用totem的话，你可以使用-O3来编译Xine-lib,Xine-UI,如果你使用totem，就不要-O3了。
> ...

 

难道真是这样？

呵呵，我的也是问题很多，不能打开文件，一点就死掉，现在我用xine-ui

----------

## EricHsu

 *younker wrote:*   

> 
> 
> 原来是不能播放xvid，那估计就是codec的问题了， xvid应该有单独的ebuild的。
> 
> 我以前的问题是totem不能起动或者起动之后就Freeze了。

 

你的问题我也遇到过, 在我的那篇洋文帖子里写了, 也找到了解决办法. 我现在的问题是装了 xvid, divx4linux, win32codec(+real useflag), xine-lib 编译时已检测到 xvid  解码器, 且 mplayer 可以正常播放所有格式文件的情况下, 使用 xine-lib 的 totem 仍旧说找不到 xvid 的解码器.

原来 totem 不能放 real 的问题, 已通过 ln -s /usr/lib/real/* /usr/lib/win32/ 得到解决, 但是 ln -s /usr/lib/libxvidcore.* /usr/lib/win32/ 之后, totem 还是放不了 xvid - 这才叫灵异事件...

记得重装系统之前是什么都不用动就可以播放所有格式的... 原贴里遇到并解决的一些问题估计对想使用 totem + xine-lib 的朋友有帮助, 有兴趣就仔细看看  :Smile: 

----------

## EricHsu

 *xiaosuo wrote:*   

> 
> 
> 难道真是这样？
> 
> 呵呵，我的也是问题很多，不能打开文件，一点就死掉，现在我用xine-ui

 

试试在 console 下运行 totem, 第一次如果起不来且没有任何错误输出的话, 那就 ctrl + c, 然后再运行一次, 这次应该就能看到 console 里的错误输出, 很可能和我那篇帖子里遇到的一样 (xine-lib 中一个 opengl 输出插件的问题), 可以解决的. (且 CFLAGS 中同样可以使用 -O3 之类的优化选项 - 我自己还用了 LDFLAGS 的优化)

我喜欢 totem 的一个重要原因是它和 gnome 的感观一致, 且中文化得很好, 界面看起来不会那么 alien, 爸妈妹妹都会用.

----------

## EricHsu

问题已解决, 请看原帖  :Wink: 

----------

