Flash 视频显示为蓝色

pst*_*07x 246 flash nvidia vdpau

问题

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

我曾尝试卸载所有 Flash 并重新安装,但没有任何区别。

出现蓝色 Flash 视频的原因是什么?

Ubuntu 11.10 64 位

Ubuntu 12.04LTS 64 位


它看起来像什么

蓝色闪光视频

jnv*_*jnv 187

这里有一些误导和一些错误的建议,所以让我们总结一下问题是什么,有什么解决方案。

TL; 博士

自 12.10 (Quantal) 以来的最新版本 Ubuntu 包含该库的修补版本。如果您仍然遇到蓝色视频问题(不包括Blue Man Group),请查看此答案- 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
Run Code Online (Sandbox Code Playgroud)

否则,您可以修改 Flash Player 的库:

cd /usr/lib/flashplugin-installer || cd /usr/lib/adobe-flashplugin/
sudo perl -pi.bak -e 's/libvdpau/lixvdpau/g' libflashplayer.so
Run Code Online (Sandbox Code Playgroud)

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

问题

Flash Player 自 11.2 版起在大多数平台上使用硬件视频加速。不幸的是,Linux 中的加速不仅不受支持,而且基本上被破坏了。Flash Player 在以下条件下交换视频中的颜色:

  • 您正在使用具有VDPAU支持的全新 Nvidia GPU 。
  • 您正在使用当前版本的 Nvidia 二进制驱动程序(旧版本不支持 VDPAU)。
  • 您已经libvdpau1安装了软件包。
  • 网站上的播放器使用舞台视频– 这就是为什么只有 YouTube 和其他少数播放器受到影响的原因。

参见Nvidia 的 Pierre-Loup Griffis 的解释

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

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

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

这个错误很可能在 Flash Player 中——尽管 Adob​​e 试图责怪 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 并仅对其应用变通方法。可以使用 file.patch 控制补丁/etc/vdpau_wrapper.cfg

修补后的 libvdpau 修复了颜色并允许 Flash Player 将 VDPAU 用于硬件覆盖,这仍然提供了一些性能优势。

要使包装器工作,它需要识别 Flash 的使用。因此必须命名 Flash 库,libflashplayer.so并且必须在 Firefox 中启用插件包装器(在 中about:configdom.ipc.plugins.enabled.libflashplayer.so并且dom.ipc.plugins.enabled应该设置为true)。

对于 Precise (12.04) 和 Oneiric (11.10),您可以使用以下命令从Maxim Thikonov 的 PPA安装打补丁的 libvdapu :

sudo add-apt-repository ppa:tikhonov/misc
sudo apt-get update
sudo apt-get install libvdpau1
Run Code Online (Sandbox Code Playgroud)

更改应在重新启动后(或可能更早)生效。

阻止 Flash Player 查找 libvdpau

(通过Launchpad 上的 Daniel Mario Vega

libflashplayer.so在你的系统中找到——对于 Ubuntu,它要么在/usr/lib/adobe-flashplugin/adobe-flashplugin安装/usr/lib/flashplugin-installer/flashplugin-installer包的地方,要么在包中。about:plugins如果您在查找文件时遇到问题,请咨询您的浏览器(在 Firefox 的情况下可能需要稍作调整)。

运行以下命令 - 假设您已安装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
Run Code Online (Sandbox Code Playgroud)

更改在重新启动浏览器后生效。

这将修改 Flash Player 的二进制文件以搜索不存在的“lixvdpau”库而不是“libvdpau”。因此,它根本不会尝试使用 VDPAU 演示。

该命令会创建二进制文件的 libflashplayer.so.bak 备份,以防您遇到任何问题。

每次有 Flash Player 更新时,您都需要运行此命令,因为您的更改将被覆盖。

使用此解决方法,您可以保持硬件加速,安装 libvdpau1,与修补 libvdpau 相比,它非常容易应用。

将 Google Chrome 与 PepperFlash 结合使用

从版本 20 开始,Google Chrome 随附支持 PPAPI 的“Pepper”Flash Player 11.3(而不是 Firefox 等人使用的 NPAPI 上的 11.2)。PepperFlash 似乎不受此问题的影响,因为它似乎使用了全硬件加速。

PepperFlash可以与 Chromium 一起使用,但遗憾的是目前没有其他浏览器支持 PPAPI。

禁用 Flash Player 的硬件加速

最简单且侵入性最小的修复方法是在显示设置中禁用 Flash Player 的硬件加速——右键单击 Flash,选择设置...

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

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

更改在刷新后生效。

缺点:即使对于矢量和位图操作,这也会禁用 Flash Player 中的硬件加速。某些 Flash 游戏和电影的性能和/或图形可能更差。

卸载 libvdpau

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

跑:

sudo apt-get remove libvdpau1
Run Code Online (Sandbox Code Playgroud)

缺点:桌面播放器(如 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
Run Code Online (Sandbox Code Playgroud)

这将创建包含EnableLinuxHWVideoDecode=1内容的 /etc/adobe/mms.cfg 文件。这是实际强制 Flash Player 在 GPU 上解码视频的唯一方法,Adobe 不正式支持它。

要撤消此操作,请运行:

sudo rm /etc/adobe/mms.cfg
Run Code Online (Sandbox Code Playgroud)

删除 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 在 libvdpau 级别修复了 Flash Player 的错误。

请注意,Stephen Warren 的上述补丁在技术上更胜一筹,应该改用。

非解决方法

以下解决方案只能部分起作用,或者它们可能有一些注意事项。

在 YouTube 上启用 HTML5

http://www.youtube.com/html5 上启用 HTML5 播放器不适用于所有视频;某些 YouTube 视频仅对 HTML5 播放器不可用(例如由于缺乏广告支持)。但是 HTML5 视频很棒,无论如何您都应该使用它。

降级到 Flash Player 11.1

FP 11.1 中存在已知漏洞,这些漏洞已在 11.2 中修复。如果你想冒险,你应该知道你在做什么。

如果您仍想降级,请尝试仍在维护的 Flash Player 10.3 – 您可以在Adobe 的存档中获取

切换到不同的 GPU

似乎很少有 Nvidia GPU 不受影响,尤其是 Quadro 2000 和 GeForce GT 430。两者都有VDPAU 功能集 C,但除此之外,大多数功能集 C GPU 也会受到影响。如果您有任何上述 GPU,请在 Launchpad 上告诉我们此错误是否影响您。

  • 非常有用和信息丰富的文本。我通过从提到的存储库 https://launchpad.net/~tikhonov/+archive/misc 中找到的 deb 中提取 libvdpau.so.1.0.0 到我的 /usr/lib64 - 完美解决了我的 openSUSE 12.2 中的问题。谢谢! (8认同)
  • 感谢您花时间分解问题并提供许多解决方案,并为每个解决方案提供解释。应用 libpauv1 补丁对我来说效果很好,我只需要重新启动浏览器即可应用解决方案。谢谢! (4认同)

mni*_*ess 94

更新:请查看此解决方案以获得正确的修复。此处提到的解决方案导致许多尝试过的人崩溃。

这是由Adobe 拒绝修复的新 Flash 版本中的错误引起的。Launchpad 上还有一个错误报告讨论了这个问题(LP:#967091)。该错误仅在您使用 NVidia 二进制驱动程序并安装了 libvdpau 时出现。快速修复是向 Flash 配置添加一些额外设置。

sudo mkdir /etc/adobe
echo -e "EnableLinuxHWVideoDecode=1\nOverrideGPUValidation=true" | sudo tee /etc/adobe/mms.cfg > /dev/null
Run Code Online (Sandbox Code Playgroud)

这解决了问题,同时仍然具有 VDPAU 硬件加速。不幸的是,如果没有这个手动配置黑客,可能不会有新的 Flash 版本来解决这个问题,因为引入这个错误的 Flash 版本也是 Adob​​e 为 Linux 发布的最后一个 Flash 版本。

如果这导致您不稳定,请通过删除您之前创建的目录来恢复更改。

sudo rm -r /etc/adobe
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试将 /etc/adobe/mms.cfg 文件减少到

OverrideGPUValidation=true

使用 sudo gedit /etc/adobe/mms.cfg 进行编辑。

  • 在 mms.cfg 中启用这些功能会使 Flash 经常崩溃。 (16认同)
  • 是的,修复了蓝色问题,但经常崩溃,没用 (4认同)
  • 这解决了蓝色调的问题,但对我来说会导致不稳定。 (3认同)

pst*_*07x 52

修复(变通)

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

  • 谷歌浏览器
  • 火狐

两个 flash 插件都会导致 flash 视频出现蓝色覆盖,因此请删除。

  • Adobe - flashplugin
  • Flashplugin - 安装程序

解决方案(功能不如adobe flash plug in,但可以用)

  • 安装lightspark(加上任何浏览器插件)或
  • 安装 gnash(加上任何浏览器插件)

可能的修复 1

删除:

  • gnash 浏览器插件
  • gightspark 浏览器插件
  • Unix 的视频解码和演示 API(库)libvdpau1
  • flashplugin - 安装程序

安装:

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

可能的修复 2

安装:

  • libvdpau1

闪光灯设置

  • 在 Flash 中禁用硬件加速。

打开浏览器并导航到 Flash 视频(youtube、abobe flash 站点等),右键单击,设置并禁用硬件加速。

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

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

OBS:在坚持的情况下。重新启动机器。

  • 我似乎无法单击禁用硬件加速的选项。 (4认同)
  • 如果您无法取消选中 Flash 设置中的硬件加速选项,请在全屏模式下尝试 - 转到例如 YouTube,全屏打开任何视频,然后打开 Flash 设置(右键单击 > 设置...);窗口应该是响应式的。如果浏览器的窗口有滚动条,则设置对话框在复合 WM 下无响应。 (4认同)

foh*_*swe 14

好的,这是我解决这个问题的经验(在 Ubuntu 12.04 64 位,nVidia 驱动程序上):

  • 删除 flashplugin-installer 并安装 adobe-flashplugin(没有修复它

这一直有效,直到重新启动。但是我保留了 adobe-flashplugin,因为我使用的是 64 位(我觉得它效果最好)。

  • 更改驱动程序版本(未修复

起初我有 nvidia-current-updates,我把它改成了 nvidia-current。这并没有解决它。Synaptic 表示驱动程序版本在撰写本文时相同 (295.33)。

  • 在 Firefox 中安装 Flash-Aid 插件(修复了它,但不稳定

只要我激活了硬件加速选项,这就会起作用(不要与下面的选项混淆!!)。我是从存储库安装 Flash 插件还是从 Adob​​e 安装测试版都没有关系。然而,在修复蓝色色调时,该插件在与 Flash 对象交互时变得非常不稳定并不断崩溃。

  • 在 Youtube 上激活 HTML5 视频(在 Youtube 上修复

虽然我只在 Youtube 视频上遇到过这个问题,但我不能确定其他网站和视频不会受到影响。根据此处其他人的建议,如果您想在 Youtube.com 上激活或停用 HTML5 视频,请访问 youtube.com/html5。

  • 通过右键单击 Flash 视频禁用硬件加速(已修复)

这是最适合我的方法(但我必须按照本线程中 pst007x 的建议使用 Unity 2D 登录)。淡蓝色消失了,视频稳定了。我担心 CPU 工作负载会增加,但在使用和不使用硬件加速的测试中,我看不到任何变化(为此我使用了来自 Googles 频道的 1080p 视频),它从大约 40% 开始,然后在视频播放时下降到 20%已满载。


小智 9

无论如何,我对 YouTube 的快速解决方法是加入他们的HTML5 beta

它奏效了......从我所见,似乎只有 YouTube 受到这个老虫子再次抬起它丑陋的脑袋的影响......

实际上最好开始使用 HTML5。你必须记住,当谈到 Linux 时,Flash即将淘汰。然后我们都将不得不使用谷歌浏览器而不是别的:(

  • 不适用于带有广告的视频 (2认同)