Category Archives: Linux

强烈推荐 ubuntu tweak 的清理 PPA 功能

ubuntu tweak 最新 0.5.5 加入了一个清理 PPA 的功能,这个功能不是简单的从软件源里删除一个 PPA ,而且附加了自动降级的功能

我之前多次吐槽过一个 PPA ,ppa:nvidia-vdpau/cutting-edge-multimedia ,这个倒霉的 PPA ,从来没靠谱过,源里的 mplayer 能用 vaapi 却不能用 vdpau , ffmpeg 安装之后各种使用相关库的软件找不到库,后来 VLC 全面悲剧,在后来导致 ubuntu 的媒体预览失效。然而,这个 PPA 相关包太多,依次降级简直是摧残生命。

终于 ubuntu tweak 清理 PPA 功能,自动降级,全面解决问题

同样,如果你对 ppa:telepathy/ppa 深恶痛绝,也来试试吧

最近的一些研究

上回说到有一个神奇的 PPA 提供支持 vaapi 的 mplayer ,但是最近这个源的一个更新导致源里的 VLC 和 mplayer 集体报销,一气之下自己 svn 了一个 mplayer ,目前用起来十分舒适,我主要说一下关于字幕的问题。

有些字幕在 mplayer 上播放的时候会出现 “too long” 的报错,这个时候就可以把字幕当作 ass 字幕进行处理,使用 -ass 参数进行播放,当然如果直接写进配置文件也可以,但是这样也有后遗症,字幕字体大小不受 mplayer 控制,而是按照字幕自身设置,结果就是某 cucn201 放出的 mkv 内嵌字幕显示超大,如果定义 0.5 倍大小,某 Halo: legend 外挂字幕又太小,所以这个参数还是按照需要添加好了

昨天折腾了一下 ubuntu 的字体,终于能按照自己的需要分别定义中文、英文字体了。去修改 /etc/fonts/conf.avail/69-language-selector-zh-cn.conf ,每个字体族只留需要的两个字体,第一个为英文,第二个为中文,重启。

因为 ubuntu 里面的通知区使用的是衬线体, google 的搜索结果也是衬线体,而中文的衬线体一般都很难看,所以这里就是设置的关键,我这里的衬线体用的是文泉驿正黑,这个字体内嵌还了点阵,优化小字体的显示效果




serif


DejaVu Serif
WenQuanYi Zen Hei




sans-serif


DejaVu Sans
WenQuanYi Micro Hei




monospace


DejaVu Sans Mono
WenQuanYi Micro Hei Mono


当然如果对其他非 zh-cn 字体有需求,还需要改其他的几个 69 文件

除此之外,还要选择合适的抗锯齿类型,在我这里 轻微(slight)的效果就很好

fx 也要挨个设置字体

效果图两张

4k 威武

今天从 delectate 同学的博客上下载了一个他从 youtube 下载的 4k 视频,下面是他播放时的效果:

因为很感兴趣,所以从youtube把视频下载了下来,没想到 4096 x 2304 (16:9)把我卡的啊……先是用mplayer file播放,默认xv输出器,直接崩溃,提示fatal error。使用mplayer -vo x11 file播放,卡死,彻彻底底卡死……x差点崩溃。强退后发现compiz,metacity已经崩溃了。 我用 vaapi 硬解码的 mplayer 播放了一下,果然可怕, CPU 占用率飙高,就算开了跳帧也严重卡,而且影音不同步,播放的时候看到 mplayer 也出现了各种问题,我贴出来各位参考一下:

$ mplayer '/home/wheat0r/下载/Life_in_the_Garden_4k_resolution.mp4' -framedrop
MPlayer SVN-r31303-4.4.3 (C) 2000-2010 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing /home/wheat0r/下载/Life_in_the_Garden_4k_resolution.mp4.
libavformat file format detected.
[lavf] stream 0: audio (aac), -aid 0, -alang und
[lavf] stream 1: video (h264), -vid 0
VIDEO:  [H264]  4096x2304  24bpp  23.976 fps  6445.1 kbps (786.8 kbyte/s)
Clip info:
major_brand: mp42
minor_version: 0
compatible_brands: isomavc1mp42
libva: libva version 0.31.0-sds6
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/va/drivers/nvidia_drv_video.so
libva: va_openDriver() returns 0
Couldn't open video filter 'ass'.
ASS: cannot add video filter
[ass] Init

[ass] Updating font cache

Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
[VD_FFMPEG] VA API accelerated codec.

Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)

==========================================================================
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
AUDIO: 48000 Hz, 2 ch, s16le, 119.2 kbit/7.76% (ratio: 14897->192000)

Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))

AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
Unsupported PixelFormat 61
[VD_FFMPEG] Trying pixfmt=1.
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [vaapi] 4096x2304 => 4096x2304 H.264 VA-API Acceleration  [zoom]
[ASPECT] Warning: No suitable new res found!
[vo_vaapi] Using 1:1 VA surface mapping
[vo_vaapi] vaCreateContext(): resolution not supported
FATAL: Cannot initialize video driver.
Unsupported PixelFormat 61
[VD_FFMPEG] Trying pixfmt=0.
Unsupported PixelFormat 61
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
[VD_FFMPEG] Trying pixfmt=2.
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [vaapi] 4096x2304 => 4096x2304 Planar YV12  [zoom]
[ASPECT] Warning: No suitable new res found!
A:   3.0 V:   0.4 A-V:  2.628 ct:  0.021   0/  0 ??% ??% ??,?% 50 0

**** Your system is too SLOW to play this!  ****

Possible reasons, problems, workarounds:
- Most common: broken/buggy audio driver
- Try -ao sdl or use the OSS emulation of ALSA.
- Experiment with different values for -autosync, 30 is a good start.
- Slow video output
- Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU
- Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,
e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
- Broken file
- Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)
- Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?
- Try -nocache.
Read DOCS/HTML/en/video.html for tuning/speedup tips.
If none of this helps you, read DOCS/HTML/en/bugreports.html.

A:  16.8 V:  16.7 A-V:  0.105 ct:  0.021   0/  0 77% 25%  0.8% 262 0
Exiting... (Quit)

简洁的音乐播放器

今天才注意到 ubuntu 中文论坛的一个帖子,LZ 介绍了他自己开发的这个非常简洁的音乐播放器。

这是个 小强 一样的播放器, deb 包的大小是有 200 多 kb ,但是不仅具备了最基本的功能,还有快捷键、通知区提醒、歌词下载、桌面歌词等功能,另外还有一个不是太烂的 gtk+ 界面。当然这个播放器具体的故事在那个帖子里很明确了,我只是推荐一下。

当然这个软件还有很多问题,我用了一会已经出了很多状况。

趣事一枚,这个播放器原本命名 Splayer ,后来作者才知道有个叫射手播放器也叫这个名字,只好改了一个发音相近名字。

顺便推荐一首我很喜欢的歌,关于两岸的悲剧。

附带歌词

那年他提著希望的行曩 留下他青梅竹馬的姑娘
飛越了兵荒馬亂的兩岸 獨自來到十里洋場
那是個夜黑風高的晚上 他走在南京西路的路旁
有一個青春發亮的臉龐 闖進了他不設防的心坎

春花:一夜東風吹亂西窗 明月入斜廊
我在夢中秋水望穿 等待我的郎

黃埔江 溫柔鄉 寂寞的兩岸
夜很長 夢很長 都是避風港
職場情場 早已荒涼 理想夢想全都遺忘
歌也香 酒也香 慾望的兩岸
新人笑 舊人哭 暫時不去想
忘了自己 忘了爹娘 任憑電話徹夜一直響

夢露:今夜風微微 窗外月當圓
雙人相愛欲相見 思君在床邊

那天他推著行李進海關 留下那頻頻回首的姑娘
飛越了兵荒馬亂的兩岸 獨自走出桃園機場
那是個夜黑風高的晚上 他走在南京西路的路旁
有一雙堅定疑惑的眼光 淡淡的問是誰在聲聲唱

春花:一夜東風吹亂西窗 明月入斜廊
我在夢中秋水望穿 等待我的郎

舊圓環 繞不完 糾纏的兩岸
路很長 歌很長 不斷的空轉
人來人往漸漸迷惘 立場下場全在搖晃
夜已央 夢已央 掙扎的兩岸
話兩行 淚兩行 道也道不完
不能鬆綁 不能歸檔 只剩謊言天天在對唱

夢露:今夜風微微 窗外月當圓
春花:一夜東風吹亂西窗 明月入斜廊

愛也長 恨也長 情海的兩岸
進也難 退也難 越來越荒唐
地獄天堂互相模仿 諾言謠言繼續流竄
路也斷 夢也斷 現實的兩岸
燈也關 心也關 誰都不必講
英雄氣短 兒女情長 誰曾真的替誰想一想

来点硬的

虽然现在的 CPU 性能足够软解码高清视频,但是大家都知道,在很多方面,硬一点总是要比软塌塌的强。那么我就说说视频解码方面的 西地那非 。当然,下面所有的内容都是以 nvidia 显卡为基础的。

VDPAU

VDPAU 是 nvidia 开发的用于 nv 显卡硬解码的 API ,现在的 mplayer 已经可以很好的支持这一技术

首先,把该装的都装上,什么 mplayer 、nv闭源驱动、ffmpeg 什么的都装上

然后
$ mplayer -vo help | grep vdpau
看看是不是输出
vdpau VDPAU with X11
如果是,请继续,如果不是,自查哪里没搞对

使用下面参数播放一个需要硬解码的视频
$ mplayer -vc ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau, -vo vdpau
如果看到下面信息里使用了任何 ffh264vdpau, ffmpeg12vdpau, ffwmv3vdpau, ffvc1vdpau 之一的解码器,那么就硬解成功了

如果需要每次播放都尝试硬解码,把这几个参数写到配置文件里(系统级或用户级自选)
vo=vdpau,xv
vc=ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau

使用 VDPAU 进行高清解码, CPU 占用率可以保持在 20% 以内,并且画面没有错误

VA API

VA API 是一个 unix 上兼具 API 和库作用的图像加速技术,这个技术最初是由 Intel 为了旗下的 GMA 系列图形加速芯片设计的,但是其他的硬件也可以自由的将这个 API 用于硬件视频解码。

如果希望使用这个技术进行硬件解码,首先要使用下面这个 PPA 安装所需的组件,包括 mplayer 、 VLC 、vdpau-video 等,不同品牌的显卡需要不同的包,比如 nv 显卡需要与 vdpau 相关的包,而 ATI 的显卡需要 XvBA 相关的包, Intel 或许也有相关的包,具体是哪些我也不知道。当然显卡驱动是必须要安装的。
$ sudo add-apt-repository ppa:nvidia-vdpau/cutting-edge-multimedia

对于  mplayer ,使用下面的参数进行播放,当然参数同样可以写到配置文件里
mplayer -vo vaapi -va vaapi

对于 VLC ,直接勾选视频选项里的硬件加速即可,不过目前即便是启用了硬件加速, CPU 占用率仍然与软解妈一样高,不具有实际意义。

目前这个技术通过 vdpau 后端运行的效率比直接 vdpau 略微低一点,不过 CPU 占用率也能基本保持在 20% 左右,至于 intel 显卡直接 vaapi ,或者 ATI 显卡通过 XvBA 后端运行的效率,我就没有办法测试了

调教 fcitx

fcitx 是Linux 上一个还不错的多功能中文输入法,可以兼具拼音、区位和各种带码的输入方式。但是由于 fcitx 与其他输入法不同,这个输入法本身是基于 x 的,在设置上会遇到一些问题。由于 fcitx 官网google code 页面上关于设置的说明都未能按照版本更新进行更新,我特别做了这个小的教程。

首先,我建议使用 debian 以及下游发行版的用户在 fcitx 的 google code 页面直接下载编译好的 deb 安装包并安装。安装后在“语言支持”中将 fcitx 设为默认输入法,如果你使用的不是gnome,可能不能这样设置默认输入法,那么可以使用下面这个脚本

im-switch -s fcitx -z default

接下来,打开终端输入下面的命令生成用户配置

fcitx -c

打开~/.config/fcitx/config,按照中文的说明进行设置,详情见这里其中如果你使用的是 KDE 环境,请将 Dbus 设定为 1

重启X,这样 fcitx 就可以使用了。但是如果你觉得字体或者主题还有需要改善的地方,打开/usr/share/fcitx/skin/THEMENAME/fcitx_skin.conf 文件(提权)进行设置

另外,fcitx 的 google code 页面还提供两个拼音词库的下载,建议使用其中的 openpharse 词库,可以兼顾拼音匹配和内存占用,用法是铺盖 /usr/share/fcitx/data 中的同名文件

这里还有一篇关于配置 fcitx 的文章