当前位置: 首页>>技术教程>>正文


Flash视频呈蓝色

, , ,

问题描述

问题

从Ubuntu 11.10更新到Ubuntu 12.04后,无论是在浏览器还是播放器中播放,所有视频仍然是蓝色的。同样的问题也发生在11.10。

我试图卸载所有Flash和re-installed,但它没有区别。

什么是导致蓝色Flash视频?

Ubuntu 11.10 64bit

Ubuntu 12.04LTS 64位


它看起来像什么

nvidia,flash,vdpau,ubuntu

最佳解决方法

这里有一些误导和一些错误的建议,所以让我们总结出问题所在以及解决方案。

长话短说

自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在下面描述的解决方法。

See the release announcement

安装修补程序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.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

(通过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-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的二进制文件以搜索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视频并从设置中禁用硬件加速。它为我工作。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/133.html,未经允许,请勿转载。