smplayer(mplayer)で動画再生できなくなることがある(音声は出る)
何をして発生するかは分からないが、smplayerで動画を見ると、音声だけでて映像がでなくなってしまうことがある。
ログには次のエラーが延々と記録されている。
X11 error: BadValue (integer parameter out of range for operation)
- ログオフ/再起動する等で再生できるようになる
- 他のプレイヤー・TotemやParoleでは再生できる
X11のキャッシュとかが影響しているような気がする。ググると同じトラブルの事例がいくつか見つかるが、解決策になりそうな情報は見つけられていない。
smplayer実行時の引数
smplayerのログによると、実行時の引数は次のようになっていた。
/usr/bin/mplayer \ -noquiet \ -nofs \ -nomouseinput \ -sub-fuzziness 1 \ -identify \ -slave \ -vo xv \ -ao pulse \ -nokeepaspect \ -framedrop \ -nodr \ -double \ -input nodefault-bindings:conf=/dev/null \ -stop-xscreensaver \ -wid 73400669 \ -monitorpixelaspect 1 \ -ass \ -embeddedfonts \ -ass-line-spacing 0 \ -ass-font-scale 1 \ -ass-styles /home/kosuke/.config/smplayer/styles.ass \ -fontconfig \ -font Arial \ -subfont-autoscale 0 \ -subfont-osd-scale 20 \ -subfont-text-scale 20 \ -subcp ISO-8859-1 \ -subpos 100 \ -volume 100 \ -nocache \ -osdlevel 0 \ -vf-add screenshot \ -slices \ -channels 2 \ -af scaletempo,equalizer=0:0:0:0:0:0:0:0:0:0 \ -softvol \ -softvol-max 110 /home/kosuke/path/to/video.avi
たぶん、mplayerで引数指定しなかった場合もほぼこれらと同じ値になる、のかな。
「-vo」の指定を変えたら映像がでるようになった
映像の出力先を「-vo」で指定するようになっていて、「xv」が設定されている。解決策として妥当かどうかはわからないが、「x11」に変更すると映像がちゃんと表示するようになった。
僕の環境で「-vo」で指定できる値は次のようになっていた。
$ mplayer -vo help mplayer: Symbol `ff_codec_bmp_tags' has different size in shared object, consider re-linking MPlayer SVN-r33713-4.6.1 (C) 2000-2011 MPlayer Team Available video output drivers: xmga Matrox G200/G4x0/G550 overlay in X11 window (using /dev/mga_vid) mga Matrox G200/G4x0/G550 overlay (/dev/mga_vid) tdfxfb 3Dfx Banshee/Voodoo3/Voodoo5 3dfx 3dfx (/dev/3dfx) vdpau VDPAU with X11 xv X11/Xv gl_nosw OpenGL no software rendering x11 X11 ( XImage/Shm ) xover General X11 driver for overlay capable video output drivers sdl SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!) gl OpenGL gl2 X11 (OpenGL) - multiple textures version dga DGA ( Direct Graphic Access V2.0 ) fbdev Framebuffer Device fbdev2 Framebuffer Device svga SVGAlib matrixview MatrixView (OpenGL) aa AAlib caca libcaca v4l2 V4L2 MPEG Video Decoder Output directfb Direct Framebuffer Device dfbmga DirectFB / Matrox G200/G400/G450/G550 xvidix X11 (VIDIX) cvidix console VIDIX null Null video output xvmc XVideo Motion Compensation mpegpes MPEG-PES to DVB card yuv4mpeg yuv4mpeg output for mjpegtools png PNG file jpeg JPEG file gif89a animated GIF output tga Targa output pnm PPM/PGM/PGMYUV file md5sum md5sum of each frame
smplayerの設定画面から指定可能な値をいくつか試してみたところ、映像がでない、mplayerが「予期せぬエラー」で落ちる、映像はでるがチラつきがみられるもの、といくつかのパターンがあった。
totemとparole(XFCE標準)だとこの問題は起きていないので、ビデオ出力がどうなってるのか調べたかったが、「totem --help」でオプションを調べても分からない。
smplayerの設定画面で見ると「X11」は「X11(低速)」と表記されているので、再生品質に影響しそうだが、見てわかるほどの違いはなかったので、しばらくこれで様子をみる。