Flash视频显示为蓝色

问题

从Ubuntu 11.10升级到Ubuntu 12.04后,无论是在浏览器还是播放器中播放的视频都是蓝色的。在11.10版本中也存在同样的问题。

我尝试卸载所有的Flash并重新安装,但没有任何改变。

是什么导致了蓝色的Flash视频?

Ubuntu 11.10 64位

Ubuntu 12.04LTS 64位


它是什么样子的

Blue flash videos


7https://bugs.launchpad.net/ubuntu/+source/flashplugin-nonfree/+bug/968647 - Somatik
19个回答

这里有一些误导性和错误的建议,所以让我们总结一下问题是什么,以及有哪些解决方案。
简而言之:
自从12.10(Quantal)以来,Ubuntu的最新版本包含了一个修补过的库版本。如果您仍然遇到蓝色视频的问题(不包括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

请在评论前阅读整篇文章。

问题

Flash Player自11.2版本以来在大多数平台上使用硬件视频加速。不幸的是,Linux上的加速不仅不受支持,而且基本上是无法使用的。以下情况下,Flash Player会交换视频中的颜色:

  • 您正在使用支持VDPAU的相当新的Nvidia GPU。
  • 您正在使用当前版本的Nvidia二进制驱动程序(旧版本不支持VDPAU)。
  • 您已安装libvdpau1软件包。
  • 网站上的播放器使用Stage Video - 这就是为仅影响YouTube和其他几个播放器的原因。

请参见Nvidia的Pierre-Loup Griffais的解释

这不是Nvidia驱动程序的错误。 Nvidia已经意识到这个问题,并且他们已经创建了一个解决方法。Nouveau驱动程序可能不受影响,因为视频解码支持尚未完成

这不是libvdpau的错误。 libvdpau只是一个包装器,允许视频播放器使用VDPAU解码(参见Stephen Warren的解释)。

这不是特定于Ubuntu的错误。其他发行版也受到影响,例如Arch

这个错误很可能出现在Flash Player中 - 尽管Adobe试图责怪Nvidia和无能的用户。在Adobe的错误跟踪器上有多份报告,所有这些报告都被拒绝为“无法重现”:

Adobe不会发布官方修复程序,因为基于NPAPI的Flash Player直到2017年才会接收安全补丁。希望到那时我们不再需要Flash Player。

解决方法

使用libvdpau 0.5

自Ubuntu 12.10起,可在官方存储库中获得libvdpau 0.4.1-6

此版本的libvdpau包括Stephen Warren的解决方法,如下所述。

请参阅发布公告

安装已修补的libvdpau(适当的补丁)

Stephen Warren为libvdpau创建了漂亮的补丁,它可以检测Flash Player并仅为其应用解决方法。该补丁可以使用/etc/vdpau_wrapper.cfg文件进行控制。

修补的libvdpau修复了颜色问题,并允许Flash Player使用VDPAU进行硬件叠加,仍然提供一些性能优势。
为使包装器正常工作,它需要识别Flash的使用。因此,Flash库必须命名为libflashplayer.so,并且必须在Firefox中启用插件包装器(在about:config中,dom.ipc.plugins.enabled.libflashplayer.sodom.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

(通过Launchpad上的Daniel Mario Vega

在您的系统中找到libflashplayer.so - 对于Ubuntu来说,如果您安装了adobe-flashplugin软件包,则位于/usr/lib/adobe-flashplugin/,或者对于flashplugin-installer软件包,则位于/usr/lib/flashplugin-installer/。 如果您在查找文件时遇到问题,请参考您的浏览器的about:plugins页面(可能需要稍微调整Firefox的情况)。

运行以下命令 - 假设您已安装了flashplugin-installeradobe-flasplugin

 cd /usr/lib/flashplugin-installer || cd /usr/lib/adobe-flashplugin/
sudo perl -pi.bak -e 's/libvdpau/lixvdpau/g' libflashplayer.so

更改在重新启动浏览器后生效。
这将修改Flash Player的二进制文件,使其搜索不存在的“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 可以与Chromium一起使用,但不幸的是,目前没有其他浏览器支持PPAPI。

禁用Flash Player的硬件加速

最简单且最不侵入的解决方法是禁用Flash Player的在显示设置中的硬件加速 - 右键点击Flash,选择“设置”...

然而,这并不容易,因为在复合管理器(Compiz,标准Unity)下以及浏览器显示滚动条时,设置窗口无响应。

要禁用硬件加速,请在全屏播放任何视频(例如YouTube)之后打开“设置”窗口。或者您可以暂时切换到Unity 2D或其他非复合窗口管理器。

更改将在刷新后生效。

缺点:这会导致Flash Player的矢量和位图操作都禁用了硬件加速。某些Flash游戏和电影可能会性能更差和/或图形质量较差。

卸载libvdpau

如果您想启用Flash Player的硬件加速功能,可以从系统中卸载libvdpau,这将有效地阻止Flash Player使用VDPAU。

运行:

sudo apt-get remove libvdpau1

缺点:桌面播放器(如Totem和Mplayer)也无法使用硬件视频解码。这将导致播放过程中CPU使用率较高。此外,视频播放性能可能会受到影响(例如帧丢失或完全静止的画面),特别是当您拥有较慢的CPU并且正在观看1080p的视频时。

启用Flash Player硬件视频解码

大多数用户报告称,这导致Flash Player经常崩溃(可能是因为解码中的并发问题),但如果您感觉幸运,可以尝试一下。

这也是Flash-Aid附加组件所使用的相同方法。但不会改善情况。

运行:

sudo mkdir /etc/adobe
echo -e "EnableLinuxHWVideoDecode=1" | sudo tee /etc/adobe/mms.cfg > /dev/null

这将创建/etc/adobe/mms.cfg文件,并包含“EnableLinuxHWVideoDecode=1”的内容。这是唯一的方法,可以强制Flash Player在GPU上解码视频,但Adobe并不官方支持此功能。
要撤消此操作,请运行:
sudo rm /etc/adobe/mms.cfg

删除mms.cfg文件。

您可以尝试使用VDPAU_NVIDIA_NO_OVERLAY=1环境变量进一步提高Flash Player的稳定性,请参考Nvidia论坛

替换Flash播放器

(如Launchpad上的bowser所推荐)

使用FlashVideoReplacer Firefox插件,Literna Mágica或其他解决方案来替换Flash中的标准播放器为嵌入式视频播放器插件(如Totem - totem-mozilla - 或VLC - mozilla-plugin-vlc)。没有Flash Player,没有问题。

修补libvdpau(vdpau_trace hack)

有一个由Nvidia提供的非官方补丁,通过修改vdpau_trace来修复Flash Player在libvdpau级别上的bug。

需要注意的是,Stephen Warren提供的上述补丁在技术上更为优秀,应该优先使用。

非解决办法

以下解决方案只能部分地起作用,或者可能存在一些限制条件。

在YouTube上启用HTML5

http://www.youtube.com/html5上启用HTML5播放器并不适用于所有视频;有些YouTube视频无法在HTML5播放器上播放(例如由于缺乏广告支持)。然而,HTML5视频非常棒,你应该尽量使用它。

降级到Flash Player 11.1

Flash Player 11.1存在已知漏洞,这些漏洞在11.2中得到了修复。如果你愿意冒险,你应该清楚自己要承担的风险。

如果您仍然想降级,请尝试仍在维护的Flash Player 10.3 - 您可以在Adobe's archive中获得。

切换到不同的GPU

似乎只有少数Nvidia GPU受影响,特别是Quadro 2000和GeForce GT 430。两者都具有VDPAU功能集C,但大多数功能集C的GPU也受到影响。 如果您拥有上述任何一种GPU,请告诉我们on Launchpad此错误是否影响您。


8非常有帮助和信息丰富的文本。我通过从提到的仓库https://launchpad.net/~tikhonov/+archive/misc中提取deb文件中的libvdpau.so.1.0.0,将其放置在我的openSUSE 12.2的/usr/lib64目录下,成功解决了问题 - 完美!谢谢! - RushPL
新一代的GPU肯定有这个问题(使用特性集C)。我就是其中之一。 - Victor
1@Victor 是的,我注意到了;那只是一个理论,而且是错误的。奇怪的是,两个特定(而且非常不同)的GPU没有受到影响,我更倾向于认为记者们可能漏掉了什么,比如他们没有安装libvdpau(关于Quatro 2000的负面报告来自Adobe的代表)。 - jnv
4非常感谢您花时间将问题分解并提供了许多解决方案,并为每个解决方案都进行了解释。对我来说,应用libpauv1补丁效果很好,只需要重新启动浏览器就能应用解决方案。谢谢! - dusktreader
有没有适用于10.04的修补过的libvdpau可用? - emacsomancer
@BeSlayed 我不知道是否有适用于Lucid的软件包可用,但你可以尝试手动安装较新版本的软件包。你也可以尝试自己应用补丁- http://lists.freedesktop.org/archives/vdpau/2012-May/000022.html - 或者尝试其他任何解决方法;使用字符串替换 s/libvdpau/lixvdpau/g 效果很好,可以在任何地方使用。 - jnv
在12.04 32位系统上,我没有安装libvdpau1,并且仍然在一些YouTube视频中出现蓝色偏色。当我从官方的Ubuntu稳定软件源中安装了libvdpau1后,偏色问题消失了。 - Boris B.
只是移除了一个简单的软件包(libpvdpau1),对我来说有帮助:) 我很开心。 - teodozjan
我认为应该更新答案…将PPA列为首选项总是很危险;因为私有PPA就是私下维护的。在这种情况下,PPA不支持12.04之后的任何发布版。此外:如何知道PPA是否正在获取底层库的安全相关更改? - GhostCat
@EdGunter:此外,在当前版本中并不需要。这是一个社区维基,你可以随意编辑它。 - jnv
@jnv: 嗯,我正在使用Ubuntu 12.10 64位系统;最近升级了最新的内核和NVIDIA驱动程序;还安装了最新的libpvdpau...结果Opera现在给我展示蓝色电影。 - GhostCat
根据changelog - http://is.gd/MKdji4 - 在12.10中存在的libvdpau 4.1-6应该已经修补过了,所以你可能遇到了相反的问题。请检查你的系统上是否存在/etc/vdpau_wrapper.cfg文件,并尝试将其中一个或两个选项设置为0。 - jnv
1我选择了“阻止Flash Player找到libvdpau”解决方案,并确认它有效。libflashplayer.so文件的位置是在/usr/lib/mozilla/plugins/libflashplayer.so,并且对Opera也适用。 - ulkas

更新:请查看此解决方案以获得适当的修复。在此提到的解决方案会导致许多人崩溃。

这是由新版Flash中的错误引起的,Adobe拒绝修复。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硬件加速。不幸的是,可能不会有新的Flash版本来修复这个问题,除非进行手动配置修改,因为引入此错误的Flash版本也是Adobe将在Linux上发布的最后一个Flash版本。
如果这对您造成不稳定,请通过删除之前创建的目录来恢复更改。
sudo rm -r /etc/adobe

或者你可以尝试将/etc/adobe/mms.cfg文件简化为只有一行:OverrideGPUValidation=true,通过使用sudo gedit /etc/adobe/mms.cfg进行编辑。

谢谢,这个解决了我在Ubuntu 11.10(adobe-flashplugin 11.2.202.228-0oneiric1)上的问题。这并不是Linux上的最新版本Flash,未来将会有安全更新,并且较新的版本将随Google Chrome捆绑发布。 - Mateusz Stachowski
16在mms.cfg中启用这些功能会导致Flash经常崩溃。 - user41313
4是的,解决了蓝屏问题,但是崩溃频繁到了无法使用的地步。 - Hubro
3这解决了蓝色偏色的问题,但对我来说会导致不稳定。 - fohswe
1这个命令经常导致Flash插件崩溃,我也遇到过。你要如何恢复到之前的状态? - RockScience
"EnableLinuxHWVideoDecode=1" 使Flash崩溃(并且YouTube无法跳过),而"OverrideGPUValidation=true"足以解决蓝屏问题。我将尝试在几分钟内编辑上述帖子。 - Bazon
好的,尝试通过添加提示来编辑它,以删除"EnableLinuxHWVideoDecode=1"这一行。请参考http://ubuntuforums.org/showpost.php?p=11949854&postcount=22。 - Bazon
现在它像疯子一样崩溃 :) - umpirsky

修复(解决方法)

问题: 所有网页浏览器的Flash播放器视频都是蓝色的

  • Chromium
  • Google Chrome
  • Firefox

两个Flash插件导致Flash视频出现蓝色叠加层,因此需要移除。

  • Adobe - flashplugin
  • Flashplugin - installer

解决方案(功能不如Adobe Flash插件强大,但可行)

  • 安装Lightspark(以及任何浏览器插件) 或者
  • 安装Gnash(以及任何浏览器插件)

移除:

  • Gnash浏览器插件
  • Lightspark浏览器插件
  • 用于Unix的视频解码和显示API(库)libvdpau1
  • Flashplugin - installer

安装:

adobe-flashplugin 重新启动浏览器,对我有效。

可能的解决方法2

安装:

  • libvdpau1

Flash设置

  • 在Flash中禁用硬件加速。

打开浏览器并导航到Flash视频(YouTube、Adobe Flash网站等),右键单击,选择设置,然后禁用硬件加速。

如果无法禁用硬件加速,请登录Unity 2D环境。

BUG: https://bugs.launchpad.net/ubuntu/+source/unity/+bug/968489

OBS:如果问题仍然存在,请重新启动机器。


1对我来说,仅仅安装libvdpau1就解决了问题,而其他几个解决方法都没有起作用。我正在运行Ubuntu 11.10,并使用NVIDIA驱动程序295.33。 - Chiara Coetzee
libvdpau1已经在我的Ubuntu 12.04 64位系统中安装好了。不过,禁用硬件加速对我来说解决了问题。我使用的是与@Derrick Coetzee相同的Nvidia驱动程序,但在Precise和Gnome Shell上。 - titaniumtux
4我似乎无法点击禁用硬件加速的选项。 - RolandiXor
1移除libvdpau1对我在Firefox和Chrome上测试的所有网站都有效。如果有帮助的话,我使用的是Nvidia 440 GT显卡。 - Luis Alvarado
4如果您无法取消选中Flash设置中的硬件加速选项,请尝试在全屏模式下进行操作 - 前往例如YouTube,在全屏模式下打开任何视频,并打开Flash设置(右键单击> 设置...);窗口应该是响应的。如果浏览器窗口有滚动条,则组合式窗口管理器下的设置对话框将无响应。 - jnv
@jnv说的对我有用 - 我不得不右键单击>设置两三次,然后对话框才出现。 - Mendhak
我的设置窗口无法操作,打开后无法点击。 - umpirsky

好的,这是我在解决这个问题时的经验(在Ubuntu 12.04 64位,nVidia驱动程序上):
- 删除flashplugin-installer并安装adobe-flashplugin(未解决
这个方法在重新启动之前有效。但由于我使用的是64位系统(我得到的印象是它的效果最好),所以我保留了adobe-flashplugin。
- 更改驱动程序版本(未解决
起初我使用的是nvidia-current-updates,然后我将其更改为nvidia-current。但这并没有解决问题。根据此刻的写作,Synaptic显示驱动程序版本相同(295.33)。
- 在Firefox中安装Flash-Aid插件(基本解决了问题,但不稳定
只要我激活了硬件加速选项(不要与下面的选项混淆),这个方法就有效。无论我是从存储库安装Flash插件还是从Adobe下载安装beta版,都可以。然而,在修复蓝色色调的同时,插件变得非常不稳定,并且在与Flash对象交互时频繁崩溃。
- 激活Youtube上的HTML5视频(解决了在Youtube上的问题
虽然我只在Youtube视频中遇到了这个问题,但我不能确定其他网站和视频是否也受到影响。根据其他人的建议,在Youtube.com上访问youtube.com/html5,如果您想激活或停用Youtube.com上的HTML5视频。
禁用Flash视频的硬件加速(修复了问题)。
这对我来说是最好的方法(但是根据pst007x在这个帖子中的建议,我必须使用Unity 2D登录)。蓝色色调消失了,视频稳定了。我担心CPU负载会增加,但是通过测试,我发现启用或禁用硬件加速对性能没有影响(我在Google的频道中使用了一个1080p的视频进行测试),开始时大约为40%,加载完全后降至20%。

对于YouTube来说,我找到了一个快速解决方法,就是加入他们的HTML5测试版

这个方法非常有效...从我所看到的情况来看,似乎只有YouTube受到了这个老问题的再次困扰...

实际上,最好开始使用HTML5。你必须记住,当涉及到Linux时,Flash已经走向了末路。然后我们都将不得不使用Google Chrome,而不是其他任何浏览器 :(


2不适用于带有广告的视频。 - waspinator

我在移除Flash播放器后解决了这个问题,然后通过从Adobe官网下载Flash并通过Ubuntu软件中心手动安装它来重新安装了Flash。

试试这个:

sudo apt-get purge flashplugin-installer
sudo apt-get install adobe-flashplugin

+1 我之前也遇到过同样的问题(10.04版本),我相当确定这是我解决它的方法。 - Aaron
2不幸的是问题仍然存在。 - enedene
2好的,那么请按照这里的说明尝试禁用Flash硬件加速。 - SirCharlo
我有同样的问题,在Youtube上。Vimeo似乎可以正常工作。切换到HTML5可以解决Youtube上的问题。我暂时通过清除flashplugin-installer并安装adobe-flashplugin来修复它,但在重新启动后问题又出现了。至于禁用硬件加速,对我来说是不可能的,因为一段时间以来我无法与弹出窗口进行交互(从11.10开始出现问题,现在在12.04上也是如此)。 - fohswe
在YouTube视频上点击右键,选择设置,禁用硬件加速即可解决问题。这虽然不是一个理想的解决方案,但在Adobe修复之前,它是有效的。 - enedene
太酷了!至少现在它能用... - SirCharlo
@foh1981 已知的合成管理器问题,请在这里阅读:http://askubuntu.com/questions/117127/flash-video-appears-blue/117426#comment155661_117426 - jnv
@jnv 感谢你的建议!登出并重新登录Unity 2D真是有点烦人 :) - fohswe

我解决了这个问题(使用基于Ubuntu Oneiric的Linux Mint Lisa),通过将NVIDIA驱动程序回滚到173版本。
更新:不幸的是,NVIDIA驱动程序173版本在MP4视频中产生了与推荐的(更新的)NVIDIA驱动程序在Flash视频中产生的相同的蓝色色调。这有点令人恼火:我要么喝到太冷的咖啡,要么喝到太甜的咖啡。
另外一个更新:我通过访问首选项并将色调滑块全部向右推来修复了Totem中的MP4问题。热而不过甜。

如果您安装了最新版本的Flash并且使用了Nvidia驱动程序,这可能会成为一个问题。尝试右键单击Flash视频,并在设置中禁用硬件加速。这对我起作用了。

我在升级后又遇到了这个问题。我发现要使/etc/vdpau_wrapper.cfg中的enable_flash_uv_swap选项起作用,Flash库文件(或符号链接)必须命名为libflashplayer.so(我的是flashplayer-alternative.so)。所以我只需将flashplayer-alternative.so重命名为libflashplayer.so,然后它就开始工作了。
更多信息请参见[ANNOUNCE] libvdpau 0.5

如果在/proc/self/cmdline中找到"libflashplayer",并且在/etc/vdpau_wrapper.cfg中找到字符串"enable_flash_uv_swap=1",则应用此解决方法。