相关信息:
[terry@pc:~/Videos] 一 8 月 03 - 15:28:03]
1009 => $ file openSUSE\ 桌面介绍:KDE\ 等离子桌面基础 _ 标清.mp4
openSUSE 桌面介绍:KDE 等离子桌面基础 _ 标清.mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
[terry@pc:~/Videos] 一 8 月 03 - 15:28:08]
1010 => $ file 美國海軍核子動力航空母艦.mp4
美國海軍核子動力航空母艦.mp4: ISO Media, MP4 v2 [ISO 14496-14]
上次 `zypper dup’ 之前是 VLC 是正常的,现在可以播放 MP4 Base Media v1 [IS0 14496-12:2003] 格式的 .mp4,播放 MP4 v2 [ISO 14496-14] 格式却只有声音没有图像;Kaffeine 播放这两种格式都可以。VLC 命令行有以下报错信息:
[terry@pc:~/Videos] 一 8 月 03 - 15:25:05]
1005 => $ vlc 美國海軍核子動力航空母艦.mp4
VLC media player 2.2.1 Terry Pratchett (Weatherwax) (revision 2.2.1-0-ga425c42)
[00000000007b50d8] core libvlc: 正在以默认界面运行 vlc。使用“cvlc”可以无界面模式使用 vlc。
service is "org.kde.StatusNotifierItem-20803-1"
Registering a client interface to the KStatusNotifierWatcher
[VS] Software VDPAU backend library initialized
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_37
libva info: va_openDriver() returns 0
[00007f7a6cf84078] avcodec decoder: Using OpenGL/VAAPI/libswscale backend for VDPAU for hardware decoding.
[h264 @ 0x7f7a6cf98ca0] hardware accelerator failed to decode picture
[h264 @ 0x7f7a6d024d00] hardware accelerator failed to decode picture
[h264 @ 0x7f7a6d06c480] hardware accelerator failed to decode picture
[h264 @ 0x7f7a6d0b3be0] hardware accelerator failed to decode picture
[00007f7a48001268] vdpau_display vout display error: video mixer surface width capabilities query failure: VDP_STATUS_NO_IMPLEMENTATION
[h264 @ 0x7f7a6cf98ca0] hardware accelerator failed to decode picture
[VS] error (vdpVideoSurfaceGetBitsYCbCr): not implemented conversion VA FOURCC -> VDP_YCBCR_FORMAT_YV12
[00007f7a488f00b8] vdpau_chroma filter error: video surface export failure: VDP_STATUS_INVALID_Y_CB_CR_FORMAT
[VS] error (vdpVideoSurfaceGetBitsYCbCr): not implemented conversion VA FOURCC -> VDP_YCBCR_FORMAT_YV12
[00007f7a488f00b8] vdpau_chroma filter error: video surface export failure: VDP_STATUS_INVALID_Y_CB_CR_FORMAT
[h264 @ 0x7f7a6d024d00] hardware accelerator failed to decode picture
……
系统版本是 openSUSE 20150714 Tumbleweed,VLC 相关版本如下:
[terry@pc:~/Videos] 一 8 月 03 - 15:49:14]
1012 => $ zypper se --detail /vlc\|libvdpau\|libx265/ | grep ^i
i | libvdpau1 | 软件包 | 1.1-1.2 | x86_64 | repo-oss
i | libvdpau_nouveau | 软件包 | 10.6.2-117.1 | x86_64 | repo-oss
i | libvdpau_r300 | 软件包 | 10.6.2-117.1 | x86_64 | repo-oss
i | libvdpau_r600 | 软件包 | 10.6.2-117.1 | x86_64 | repo-oss
i | libvdpau_radeonsi | 软件包 | 10.6.2-117.1 | x86_64 | repo-oss
i | libvdpau_va_gl1 | 软件包 | 0.3.4-5.2 | x86_64 | repo-oss
i | libvlc5 | 软件包 | 2.2.1-286.3 | x86_64 | packman
i | libvlccore8 | 软件包 | 2.2.1-286.3 | x86_64 | packman
i | libx265-10 | 软件包 | 0.10hg20140324-5.6 | x86_64 | (系统软件包)
i | libx265-32 | 软件包 | 0.32hg20140928-2.10 | x86_64 | (系统软件包)
i | libx265-43 | 软件包 | 1.5-1.7 | x86_64 | (系统软件包)
i | libx265-51 | 软件包 | 1.6-1.6 | x86_64 | (系统软件包)
i | libx265-59 | 软件包 | 1.7-1.6 | x86_64 | packman
i | vlc | 软件包 | 2.2.1-286.3 | x86_64 | packman
i | vlc-codecs | 软件包 | 2.2.1-286.3 | x86_64 | packman
i | vlc-gnome | 软件包 | 2.2.1-286.3 | x86_64 | packman
i | vlc-noX | 软件包 | 2.2.1-286.3 | x86_64 | packman
i | vlc-noX-lang | 软件包 | 2.2.1-286.3 | noarch | packman
i | vlc-qt | 软件包 | 2.2.1-286.3 | x86_64 | packman
2 个视频文件的详细信息如下:
[terry@pc:~/Videos] 一 8 月 03 - 15:50:17]
1013 => $ ffmpeg -i openSUSE\ 桌面介绍:KDE\ 等离子桌面基础 _ 标清.mp4
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
……
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'openSUSE 桌面介绍:KDE 等离子桌面基础 _ 标清.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.22.103
Duration: 00:08:34.69, start: 0.085333, bitrate: 370 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 512x288 [SAR 1:1 DAR 16:9], 296 kb/s, 15 fps, 15 tbr, 15360 tbn, 30 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 24000 Hz, stereo, fltp, 69 kb/s (default)
Metadata:
handler_name : SoundHandler
At least one output file must be specified
[terry@pc:~/Videos] 一 8 月 03 - 15:55:10]
1014 => $ ffmpeg -i 美國海軍核子動力航空母艦.mp4
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
……
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '美國海軍核子動力航空母艦.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2013-12-06 04:40:13
Duration: 00:45:21.17, start: 0.000000, bitrate: 547 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360, 448 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s (default)
Metadata:
creation_time : 2013-12-06 04:41:07
handler_name : IsoMedia File Produced by Google, 5-11-2011
At least one output file must be specified
临时解决办法:
参考链接 [1] 里说有可能是 `libvdpau_va_gl1’ 的问题,不关 VLC 什么事。于是就打开 VLC -> 工具 -> 偏好设置,(快捷键:Ctrl-P)切换到「输入 / 编解码器」,在「硬件加速解码」的下拉菜单选择「VA-API 视频解码器,通过 X11」、「VA-API 视频解码器,通过 DRM」或者「关闭」都可以看到图像,保存选项以后不需要重启 VLC,先停止播放视频后,再点击播放即可。「dummy 视频解码器」花屏也不能看。
那位高人有更彻底的办法,还请多多指教,顺便也科普下「VDPAU 视频解码器」和前面的解码器的区别,填补一下我在多媒体方面的空白!
参考链接:
[packman] [PM] vlc 2.2.0-261.1 (openSUSE 13.2/x86_64) [Bug: No video on VLC 2.2]](http://lists.links2linux.de/pipermail/packman/2015-March/013491.html)
How to identify video formats from command line on Linux