问题描述
问题
从Ubuntu 11.10更新到Ubuntu 12.04后,无论是在浏览器还是播放器中播放,所有视频仍然是蓝色的。同样的问题也发生在11.10。
我试图卸载所有Flash和re-installed,但它没有区别。
什么是导致蓝色Flash视频?
Ubuntu 11.10 64bit
Ubuntu 12.04LTS 64位
它看起来像什么
最佳解决方法
这里有一些误导和一些错误的建议,所以让我们总结出问题所在以及解决方案。
长话短说
自12.10以来的最新版本(Quantal)包含该库的修补版本。如果您仍然遇到蓝色视频问题(不包括Blue Man Group),请查看this answer – Flash Player的库名称必须是libflashplayer.so
,否则libvdpau将不会应用该解决方法。你也可以看看/etc/vdpau_wrapper.cfg
文件。您可以禁用libvdpau应用的解决方法。
如果您有Oneiric(11.10)或Precise(12.04),请安装修补程序libvdpau:
sudo add-apt-repository ppa:tikhonov/misc
sudo apt-get update
sudo apt-get install libvdpau1
否则,您可以修改Flash Player的库:
cd /usr/lib/flashplugin-installer || cd /usr/lib/adobe-flashplugin/
sudo perl -pi.bak -e 's/libvdpau/lixvdpau/g' libflashplayer.so
在评论之前阅读整篇文章。
问题
自11.2版以来,Flash Player在大多数平台上使用硬件视频加速。不幸的是,Linux中的加速并不仅仅是不受支持的,而是基本上被打破了。 Flash Player在以下情况下交换视频中的颜色:
-
您正在使用VDPAU支持的相当新的Nvidia GPU。
-
您正在使用当前版本的Nvidia二进制驱动程序(旧版本不支持VDPAU)。
-
您安装了
libvdpau1
软件包。 -
该网站上的玩家使用Stage Video – 这就是为什么只有YouTube和其他玩家受到影响的原因。
参见the explanation by Pierre-Loup Griffais from Nvidia。
这不是Nvidia驱动程序中的错误。 Nvidia意识到这个问题,他们已经创建了一个解决方法。 Nouveau驱动程序不会受到影响,因为video decoding support is not yet finished。
这不是libvdpau中的错误。 libvdpau只是一个允许视频播放器使用VDPAU解码的包装(参见Stephen Warren’s explanation)。
这不是Ubuntu-specific错误。其他分布也受到影响,例如, Arch。
该错误很可能在Flash Player中 – 尽管Adobe试图谴责Nvidia和无能的用户。有关Adobe的错误跟踪器的多个报告,他们都被拒绝为“CannotReproduce”:
自从NPAPI-based Flash Player receives only security patches到2017年之后,将不会有Adobe的官方修复。希望到那时我们不需要Flash Player。
解决方法
使用libvdpau 0.5
自从Ubuntu 12.10 libvdpau 0.4.1-6
以来,在官方存储库中可用
此版本的libvdpau包含由Stephen Warren在下面描述的解决方法。
安装修补程序libvdpau(正确的修补程序)
Stephen Warren has created nice patch for libvdpau,它检测Flash Player并仅为其应用变通办法。该补丁可以使用/etc/vdpau_wrapper.cfg
文件进行控制。
修补过的libvdpau修复了颜色并允许Flash Player使用VDPAU进行硬件覆盖,这仍然提供了一些性能优势。
为了使包装工作,它需要识别Flash的使用。因此,Flash库必须命名为libflashplayer.so
,并且必须在Firefox中启用插件包装(在about:config
中,dom.ipc.plugins.enabled.libflashplayer.so
和dom.ipc.plugins.enabled
应设置为true
)。
对于Precise(12.04)和Oneiric(11.10),您可以使用以下命令从Maxim Thikonov’s PPA安装已修补的libvdapu:
sudo add-apt-repository ppa:tikhonov/misc
sudo apt-get update
sudo apt-get install libvdpau1
更改应在重新启动后生效(或可能更早)。
防止Flash Player找到libvdpau
(通过Daniel Mario Vega on Launchpad)
在您的系统中找到libflashplayer.so
– 对于Ubuntu,如果您安装了adobe-flashplugin
软件包,或者/usr/lib/flashplugin-installer/
对于flashplugin-installer
软件包,则它位于/usr/lib/adobe-flashplugin/
中。如果您在查找文件时遇到问题(可能需要a little tweaking in case of Firefox),请咨询您的浏览器的about:plugins
。
运行以下命令 – 假设您安装了flashplugin-installer
或adobe-flasplugin
:
cd /usr/lib/flashplugin-installer || cd /usr/lib/adobe-flashplugin/
sudo perl -pi.bak -e 's/libvdpau/lixvdpau/g' libflashplayer.so
更改将在重新启动浏览器后生效。
这将修改Flash Player的二进制文件以搜索non-existent “lixvdpau”库而不是”libvdpau”。因此它不会尝试使用VDPAU表示。
该命令创建二进制文件的libflashplayer.so.bak备份,以防遇到任何问题。
每次有Flash Player更新时,您都需要运行此命令,因为您的更改将被覆盖。
通过这种解决方法,您可以保持硬件加速,安装libvdpau1,与修补libvdpau相比,应用非常简单。
使用带有PepperFlash的Google Chrome
自20版以来,Google Chrome随附“Pepper” Flash Player 11.3,支持PPAPI(而非Firefox等使用的NPAPI上的11.2)。 PepperFlash似乎不受此问题的影响,因为它似乎使用全硬件加速。
PepperFlash can be used with Chromium,但不幸的是没有其他浏览器目前支持PPAPI。
禁用Flash Player的硬件加速
最简单和最不具侵入性的修复方法是禁用Flash Player的HW acceleration in Display settings – 右键单击Flash,选择设置…
但是,这并不容易,因为Settings窗口在复合管理器(Compiz,标准Unity)下无响应,并且浏览器显示滚动条。
要禁用硬件加速,请以全屏方式打开任何视频(例如在YouTube上),然后打开“设置…”窗口。或者您可以暂时切换到Unity 2D或其他non-composite WM。
刷新后更改生效。
缺点是:即使对于矢量和位图操作,也会禁用Flash Player中的硬件加速。一些Flash游戏和电影可能会有更差的性能和/或更差的图形。
卸载libvdpau
如果您希望启用Flash Player中的HW加速,则可以从系统中卸载libvdpau,这可以有效防止Flash Player使用VDPAU。
跑:
sudo apt-get remove libvdpau1
缺点:桌面玩家(如Totem和Mplayer)也无法使用硬件视频解码。这将导致播放期间CPU使用率更高。此外,视频播放性能可能会受到影响(例如丢失帧或完全冻结的图片),尤其是如果CPU速度较慢并且您正在观看1080p视频。
启用Flash Player硬件视频解码
大多数用户报告说,这会导致Flash Player频繁崩溃(可能是由于解码中的并发问题),但如果您感觉幸运,请尝试一下。
这也与Flash-Aid addon使用的方法相同。它不会让它变得更好。
跑:
sudo mkdir /etc/adobe
echo -e "EnableLinuxHWVideoDecode=1" | sudo tee /etc/adobe/mms.cfg > /dev/null
这将创建包含EnableLinuxHWVideoDecode=1
内容的/etc/adobe/mms.cfg文件。这是如何实际强制Flash Player在GPU上解码视频并且Adobe不正式支持的唯一方法。
要撤消此操作,请运行:
sudo rm /etc/adobe/mms.cfg
删除mms.cfg文件。
您可以尝试使用VDPAU_NVIDIA_NO_OVERLAY=1
环境变量进一步提高Flash Player的稳定性,请参阅Nvidia forums。
更换Flash播放器
(根据bowser on Launchpad的建议)
使用FlashVideoReplacer Firefox add-on,Literna Mágica或其他解决方案,用嵌入式视频播放器插件(如Totem – totem-mozilla
– 或VLC – mozilla-plugin-vlc
)替换Flash中的标准播放器。没有Flash Player,没问题。
补丁libvdpau(vdpau_trace黑客)
有一个unofficial patch by Nvidia通过黑客vdpau_trace修复了Flash Player在libvdpau级别的bug。
请注意,Stephen Warren提到的上述补丁在技术上是优越的,应该用来代替。
non-workarounds
以下解决方案只能部分工作,或者可能有一些注意事项。
在YouTube上启用HTML5
在http://www.youtube.com/html5上启用HTML5播放器不适用于所有视频;某些YouTube视频仅适用于HTML5播放器(例如由于缺少广告支持)。不过,HTML5视频非常棒,无论如何您都应该使用它。
降级到Flash Player 11.1
FP 11.1中有known vulnerabilities,它们在11.2中修复。如果你想冒险,你应该知道你在做什么。
如果您仍想降级,请尝试仍保留的Flash Player 10.3 – 您可以在Adobe’s archive中获取它
切换到不同的GPU
看起来Nvidia GPU几乎没有受到影响,特别是Quadro 2000和GeForce GT 430.两者都有VDPAU feature set C,但是大多数功能集C GPU也受到影响。如果您有任何上述GPU,请告诉我们on Launchpad此错误是否会影响您。
次佳解决方法
更新:请查看this solution以获得正确的修复。这里提到的解决方案导致许多尝试它的人崩溃。
这是由Adobe拒绝修复的新版Flash中的bug造成的。在Launchpad上还有一个关于此问题的错误报告(LP:#967091)。只有当您使用NVidia二进制驱动程序并安装了libvdpau时才会出现该错误。快速修复是为Flash配置添加一些额外的设置。
sudo mkdir /etc/adobe
echo -e "EnableLinuxHWVideoDecode=1\nOverrideGPUValidation=true" | sudo tee /etc/adobe/mms.cfg > /dev/null
这解决了问题,同时仍然具有VDPAU硬件加速功能。不幸的是,如果没有这个手册config-hack,可能不会有新的Flash版本来解决这个问题,因为引入这个错误的Flash版本也是Adobe将要发布的Linux版本的最后一个Flash版本。
如果这会导致您不稳定,请通过删除之前创建的目录来恢复更改。
sudo rm -r /etc/adobe
或者您可以尝试将/etc/adobe/mms.cfg文件简化为
OverrideGPUValidation=true
通过使用sudo gedit /etc/adobe/mms.cfg进行编辑。
第三种解决方法
修复(解决方法)
问题:所有网页浏览器的Flash播放器视频都是蓝色的
-
chrome
-
谷歌浏览器
-
火狐
这两个Flash插件都会导致Flash视频出现蓝色叠加层,因此请删除。
-
Adobe – flashplugin
-
Flashplugin – 安装程序
解决方案(不像Adobe Flash插件的功能,但它的工作原理)
-
安装lightspark(加上任何browser-plugins)或
-
安装gnash(加上任何browser-plugins)
可能的修复1
删除:
-
gnash浏览器plug-ins
-
gightspark浏览器plug-ins
-
适用于Unix(库)的视频解码和演示API libvdpau1
-
flashplugin – 安装程序
安装:
adobe-flashplugin Re-started浏览器,它为我工作。
可能的修复2
安装:
-
libvdpau1
闪存set-up
-
禁用Flash中的硬件加速。
打开浏览器并导航到Flash视频(youtube,abobe flash站点等)右键单击,设置并禁用硬件加速。
如果您无法禁用硬件加速,请登录到Unity 2D环境。
BUG:https://bugs.launchpad.net/ubuntu/+source/unity/+bug/968489
OBS:在持续的情况下。重新启动机器。
第四种方法
好的,下面是我解决这个问题的经验(在Ubuntu 12.04 64位nVidia驱动程序上):
-
删除flashplugin-installer并安装adobe-flashplugin(没有修复它)
这工作,直到重新启动。但是我保留了adobe-flashplugin,因为我使用的是64位(我的印象是它效果最好)。
-
更改驱动程序版本(没有修复它)
起初我有nvidia-current-updates,我将其更改为nvidia-current。这并没有解决它。突触显示驱动程序版本是相同的,截至撰写本文时(295.33)。
-
在Firefox中安装Flash-Aid add-on(固定排序但不稳定)
只要我激活了硬件加速选项(不要与下面的选项混淆!!),这就工作了。如果我从存储库安装Flash插件或从Adobe安装测试版,这并不重要。但是,在修复蓝色色调的同时,插件变得非常不稳定,并在与Flash对象交互时不断崩溃。
-
在Youtube上激活HTML5视频(在Youtube上修复它)
虽然我只在Youtube视频中遇到这个问题,但我无法确定其他网站和视频不受影响。根据其他人的建议,如果您想在Youtube.com上激活或停用HTML5视频,请访问youtube.com/html5。
-
通过Flash视频上的right-click禁用硬件加速(固定)
这对我来说最合适(但是我必须按照本主题中pst007x的建议使用Unity 2D登录)。蓝色色调消失,视频稳定。我担心CPU的工作负载会增加,但在有和没有硬件加速的测试中,我都看不到有任何变化(我使用了1080p的Googles频道的视频),开始时约为40%,视频下降到20%已完全加载。
第五种方法
无论如何,我的快速解决方案是加入他们的HTML5 beta。
它工作的一种享受……从我所看到的情况来看,似乎只有YouTube会受到这只老小虫重新抬头丑陋的头脑的影响……
实际上最好开始使用HTML5。你必须记住,当涉及到Linux时,Flash正在出路。那么我们都必须使用Google Chrome而没有其他:(
第六种方法
我在移除Flash播放器后解决了这个问题,然后通过从Adobe网站下载Flash并通过Ubuntu软件中心进行安装,从而手动安装了Flash。
第七种方法
我解决了这个问题(使用基于Ubuntu Oneiric的Linux Mint Lisa),将NVIDIA驱动程序重新编译回173版。
更新:不幸的是,NVIDIA驱动程序版本173在MP4视频中产生了与NVIDIA视频推荐(更新)版本相同的蓝色色调。这有点令人不快:我可以让我的咖啡太冷或太甜。
另一个更新:我可以通过访问首选项并将Hue滑块推到最右边来修复Totem中的MP4问题。热和不太甜。
第八种方法
尝试这个:
sudo apt-get purge flashplugin-installer
sudo apt-get install adobe-flashplugin
第九种方法
如果您使用最新版本的Flash安装了Nvidia驱动程序,则可能会出现问题。尝试右击Flash视频并从设置中禁用硬件加速。它为我工作。