2007年6月14日 星期四

用strace定位totem不能播放rmvb的问题

俺在新装的ubuntu上装了totem, 并且是totem-xine,当然缺省是不能播放rmvb的,得自己来折腾了。

其实开始装的是totem-gstreamer, 试验totme能否播放rmvb的时候totem会问是否要自动搜索解码器,选了是,它就给我搞了个安装gstreamer-ffmpeg,结果也如所料:放不了rmvb。

先是试着将debian上/usr/lib/win32目录进行符号链接过来(ln -s /mnt/debian/usr/lib/win32 /usr/lib/win32),还是不行。

再按一些网上帖子说的,到mplayer网站下载rp9codecs-200?????.tar.bz2,解压动态库到~/.gnome2/totem-addons,仍旧不行。又试验了w32codecs,不行。

再就直接去找realplayer了,http://www.real.com/linux 默认的那个已经很旧了,有很多依赖库都不好解决,点那个nightly build应该可以下载到最新的版本。不过我是找了个edgy的非官方包装在feisty上(从包索引可以看出, 那上面还没有feisty版本的realplayer,也许你看的时候已经有了)。
不过这个东西装上之后一运行realplay就segfault了,这很多帖子说过,是跟scim冲突的问题,修改/usr/bin/realplay,在里面添加一行"export GTK_IM_MODULE="就可以了。
然后很可能播放时画面或者声音会有些卡,装个alsa-oss可以解决: 仍旧修改/usr/bin/realplay,在它执行realplay.bin那行(目前是第73行)加上一个aoss就可以了。
综合前面两条,/usr/bin/realplay最后几行是这样
REALPLAYBIN=$HELIX_LIBS/realplay.bin
if [ -n "$DEBUG" -a -x "$CATCHSEGV" ]; then
$CATCHSEGV $REALPLAYBIN ${1+"$@"}
else
while /bin/true; do
export GTK_IM_MODULE=
export XMODIFIERS=
aoss $REALPLAYBIN "$@"
# Restart the player if exit code is 10
if [ $? -ne 10 ]; then
break
fi
done
fi
现在可以在realplayer里播放rmvb了,回到totem,还是不行(也许有朋友要问,为啥非得用totem不用realplayer放啊,这是因为totem有gnome-vfs支持,可以从网络共享上直接播放,:-)。我用strings /usr/bin/totem-xine | grep addons查过了,结果为空,所以觉得很多网友虽然说将codecs库放到~/.gnome2/totem-addons那样可以,但现在也许已经改掉了(刚下载了totem源代码,还没有来证实)。

于是祭出strace,顺便打开totem的debug开关:

strace totem --debug > trace.out 2>&1

在totem中打开一个rmvb文件,它报告不能播放该格式文件,关闭退出totem.
然后用vi打开trace.out,查找open或者fstat/fstat64调用,或者codec字样,然后我看到如下内容:
stat64("/usr/local/RealPlayer8/Codecs/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/RealPlayer8/Codecs/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/RealPlayer8/Codecs/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/opt/RealPlayer8/Codecs/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/RealPlayer9/users/Real/Codecs/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/RealPlayer10/codecs/drvc.so", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib64/RealPlayer8/Codecs/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib64/RealPlayer9/users/Real/Codecs/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib64/RealPlayer10/codecs/drvc.so", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/codecs/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/win32/drv3.so.6.0", 0xbfe23b2c) = -1 ENOENT (No such file or directory)
这里可以看到它搜索了/usr/lib/RealPlayer10目录,但realplayer目前的安装目录是/usr/lib/realplayer-10.0.8,于是创建一个符号连接解决问题。

总结一下: 从上面的strace输出可以看出,将drv3.so.6.0放到/usr/lib/win32或者/usr/lib/codecs应该也是可以的,我卸载realplay后重新用rp9codecs或者w32codecs试验,也的确可以,不知道原来哪里有问题 :-(
奇怪的是,它在/usr/lib/RealPlayer10目录搜索的是drvc.so,在其他目录搜的却是drv3.so.6.0.

P.S 请卸载libxine1-ffmpeg库,否则你用totem播放rmvb时,它会用ffmpeg里面提供的音频解码器(在"属性"中可以看到其编解码器名称),造成没有声音。

又: 刚才发现一个地方有realplay/w32codecs的包,写的是feisty版本,不知道是不是。不过偶尔找个老版本装也没有什么问题,尤其这几个对其他包依赖不太强的。

标签: , , ,


2007年6月9日 星期六

Ubuntu初步印象

都在说ubuntu好,也忍不住要试试,于是搞了份feisty装上。这东西用起来跟Debian差不多, 除了main, 把restricted, universe和multiverse也加到/etc/apt/source.list中,就可以装kde和其他很多软件了,包括一些非开源软件。基本感觉挺好的:
不过还有几点不爽:
虽然GNOME什么的都可以用最新(几乎)的版本了,这方面倒没觉得有太大不同。

标签: , ,


2006年8月25日 星期五

再次偷装Ubuntu的内核

为了获得休眠(suspend to disk)功能,俺把ubuntu的内核包安装到了俺的Debian上 :-)

---------------------------------------------------------------------------------------

大约三周以前某天,用totem打开一集Doctor Who时黑屏了,重启后俺的GNOME里喇叭上就多了小红叉,怎么都没有声音。上次误打误撞的解决方法也被证明无效。

几乎打算重装了,但两年多的东西要备份下来还是挺麻烦。于是又没头苍蝇似地升级了udev和kernel, 嘿嘿,好了。

不过来了一个新问题,俺习惯性地敲echo 4 > /proc/acpi/sleep试图让系统休眠,但不起作用,系统报告/proc/acpi/sleep不存在。

apt-cache search hibernate告诉我有个hibernate包, 可以smartly puts your computer to sleep (suspend to RAM or disk),满怀希望地装上,结果告诉我:

Your kernel does not appear to have Software Suspend 2 support compiled in.
Please follow the HOWTO linked from http://www.suspend2.net/ for instructions
on how to compile Software Suspend into your kernel.

不能休眠可不爽,比没有声音还难忍受。俺又是个懒人,懒得自己去编译内核,于是从ubuntu网站上下载了linux-image-2.6.17-686,装上,嘿嘿,可以了。

(ubuntu 的linux-image-2.6.17-686包需要module-init-tools版本在3.2.2-3ubuntu2,而debianl里面还 是3.2.2-2版本,于是俺很邪恶地修改了/var/lib/dpkg/status,将其要求的版本号改掉,dpkg --configure就不报错了。)

标签: , ,


2005年12月4日 星期日

To Ubuntu or not to Ubuntu

原来听说Ubuntu免费派送CD,就定了5张,没想到还真来了。

跑了一下Live CD,我的无线网卡什么都不用配置直接就上网了,挺爽。只是没有中文输入法,而且Ubuntu缺省的暗红色theme我不怎么喜欢。至于GNOME 2.12,倒也没怎么留意跟2.10的差别在哪些地方。

我又要不要把我的Debian换成Ubuntu呢?CD都已经送上门了,如果完全闲置了,有点对不住吧?

好的方法是先不覆盖目前用的还不错的Debian, 另外新装一个试用一段。但我现在本本上没有那么多空间啊。

头疼。

标签: , ,


2005年9月15日 星期四

Ubuntu的休眠

我的Debian用的是Ubuntu的基本系统,但gnome的shutdown界面上就没有休眠(Hibernate,也即suspend to disk)这个选项了。想看看它到底是调用的哪个命令,但用find搜索了一遍,也没有看见与suspend相关的东西。

最后总算在Ubuntu的论坛上问到了:

sudo sh -c "echo 4 > /proc/acpi/sleep"

标签: ,


2005年8月22日 星期一

sidegrade: from Ubuntu to Sarge

到底还是想念debian,我安装了Ubuntu,然后`sidegrade'到sarge了。

因为现在上网不方便,在朋友那里下载了一张sarge的DVD。同时,因为不太甘心,又试了一下,直接安装后重启就挂了。

然后换Ubuntu,原来打算用它的X.org和GNOME-2.10的(而且休眠也工作得很好!),但最后发现这样再装sarge的软件的话包依赖的问题几乎没法解决。只得重新来过,只装base system,然后换上sarge的DVD, aptitude install -r x-window-system gnome。启动X,GNOME出现,感觉不错。

当然包的兼容性会有不少问题),aptitude install常常会无法通过(比如安装gnome就需要synapitc,而synapic依赖于libapt-pkg-libc.....,后者是基本系统提供的,在ubuntu提供的基本系统中根本不是这个名字,就只好硬来了 从Knoppix邮件列表上学到三板斧(新手请勿乱用!):

1. aptitude -f install

2. 直接修改/var/lib/dpkg/status下的文件,反正dpkg安装新软件时总是先解压(unpack),然后检查依赖性后configure,直接修改包依赖关系后dpkg --configure --pending。

3. dpkg将deb包解开,修改control文件里面的包依赖,然后重新打包,再用dpkg安装

---------------------
而且如今我终于明白,对于我而言,选择哪个Linux版本最重要的因素是什么,那就是“可获得性”(availability),发行版要很容易地获得,众多软件要很容易地获得,开发过程中的进展、大家的心得、讨论,亦应如此。对懒人而言,这一点应该是第一位的。

标签: , ,


2005年5月23日 星期一

Ubuntu + testing?

我新买的laptop装不上Debian(安装基本系统后重启时死在加载usb-uhci模块这个地方),为此苦恼了好久。在网上查过,没看见这个 型号的成功案例,一些类似的型号说是要先在BIOS里面禁用对legacy USB device的支持,我打开BIOS,只有时间、启动顺序这几个选项,其他的都没有。也试过用expert模式安装,或者用Knoppix光盘启动后修改 modules.conf等文件禁用usb-uhci等模块,都不好使。:-(

五一期间下载了一套Mandriva LE2005来用,安装、配置什么的也都挺顺利(尤其中文什么的不用自己动手),mcc这个系统管理工具也做得不错,suspend to disk也可用,也跟着linuxsir上的方法学会了urpmi的用法,但总是有些不爽: 安装盘里面devhelp, anjuta, xfce4, zhcon都没有; 带了mplayer却根本没法用; 装盘里所有的RPM都仍在一个目录下(后来下了DVD,用mcc配置urpmi时点了一下Browse,就死在那个目录了); 用户还分等级,普通用户先没有ISO下... 其实也都不是太大的事情,只是有些东西自己不太习惯而已。还是想念Debian。

晚上在QQ上网友Cedric说可以试试Ubuntu。也 不是没有想过这个,我在本本上试过Ubuntu的Live CD,感觉相当不错。但我担心它的软件少,我是懒得什么东西都来自己编译(本来KDE是可以不用的,但最近发现刻录光盘gnomebaker还是不如 k3b稳定)。而且原来在slashdot上看见一篇Is Ubuntu a Compatibility Nightmare for Debian,也就认定它跟Debian还是不怎么兼容,没有再去试。Cedric倒是说debian的源都可以用,看来还是要试试。

标签: , , ,


This page is powered by Blogger. Isn't yours?

订阅 帖子 [Atom]