如何停止视频撕裂?(Nvidia prop驱动程序,非复合窗口管理器)


35

我有这个问题,似乎在使用专有Nvidia驱动程序时会困扰很多人:

视频撕裂视频中有很多平移或动作时,水平细线(通常在显示器顶部附近)。

(注意:切换回默认的nouveau驱动程序不是一种选择,因为它似乎不存在的电源管理使我的电池快消耗了好几倍)

我尝试过图腾,假释和VLC,所有这些都发生撕裂。最好的结果是X11 output在VLC中使用,但仍会以相对适度的动作进行撕裂。

硬件: MacBook Air 3,2-具有Nvidia GeForce 320M。

使用Nvidia prop驱动程序有两个常见的修复方法:

  1. 关闭合成,因为Nvidia专有驱动程序通常在Linux上与合成窗口管理器配合不好(我知道Compiz是个例外)。但是我使用了一个非常轻量级的窗口管理器(Awesome window manager),它甚至不能合成(或任何很酷的效果)。我在Xfce中也遇到了这个问题,在这里我禁用了合成。

  2. 启用与VBlank的同步。 为此,我将其设置为nvidia-settings,然后像nvidia-settings -l其他自动启动程序一样自动启动它。这似乎可行,因为当我跑步时glxgears,我得到:

    $ glxgears
     Running synchronized to the vertical refresh.  The framerate should be
    approximately the same as the monitor refresh rate.
    303 frames in 5.0 seconds = 60.500 FPS
    300 frames in 5.0 seconds = 59.992 FPS
    

    当我使用nvidia-settings以下命令检查刷新率时:

    $ nvidia-settings -q RefreshRate
    Attribute 'RefreshRate' (wampum:0.0; display device: DFP-2): 60.00 Hz.
    

    所有这些表明启用与VBlank的同步。据我了解,这是专门为防止撕裂而设计的,很多人的问题甚至是glxgears输出正确的信息。我不明白为什么它对我不起作用。

xorg.confhttp : //paste.ubuntu.com/992056/

观察到的撕裂示例::视频撕裂


您可以pastebin.com您的xorg.conf文件吗?您是否Option "TripleBuffer" "1"在xorg.conf文件中进行了实验?
fossfreedom

我尝试过TripleBuffer;似乎有所帮助,但作用不大。我将粘贴我的xorg.conf
陈浩(Chan-Ho Suh)2012年

您是否正在使用双显示器?
阿利斯泰尔·巴克斯顿

在浏览器中使用Flash在12.10中存在相同的问题,尽管在我看到的VLC中也没有撕裂,也没有在拖动窗口时出现撕裂。从那以后您找到解决方案了吗?
Bleep Bloop

Answers:


18

尝试一件事可能会起作用。打开nvidia设置,然后转到powermizer部分。在下拉菜单中选择“最高性能”,您应该会看到功率调节器级别跳到最快的速度。

完成此操作后,请尝试播放视频。

过去,我发现当nvidia卡处于最慢的powermizer设置时,vsync不起作用。


谢谢!这在Arch Linux上使用专有的nvidia驱动程序(310.19)为我工作。我已经尝试解决这个问题了一段时间了。真奇怪。
里德

是否可以从命令行控制此设置?这样就可以在启动视频播放器时启用它(并在关闭播放器后将其禁用)?
panzi 2014年

1
啊。nvidia-settings -a GPUPowerMizerMode=1将其设置为性能和nvidia-settings -a GPUPowerMizerMode=2自动。
panzi 2014年

11

如果使用双显示器,则除非驱动程序使用完全相同的刷新率,否则nvidia驱动程序只能同步到其中一台显示器的vblank。我的意思是确切的。除非两个监视器都是完全相同的类型,否则这实际上是不可能的。如果nvidia驱动程序同步到错误的显示器(例如,当您想在外部电视上观看电影时同步到内置显示器),则可以覆盖它的选择。从nvidia驱动程序文档中:

当将__GL_SYNC_TO_VBLANK与TwinView一起使用时,OpenGL只能同步到其中一台显示设备。这可能会导致未与OpenGL同步的显示设备上的撕裂损坏。您可以使用环境变量__GL_SYNC_DISPLAY_DEVICE来指定OpenGL应同步到的显示设备。您应该将此环境变量设置为显示设备的名称。例如“ CRT-1”。在X日志文件中查找“已连接的显示设备:”行,以获取当前显示设备及其名称的列表。

我已经在/ etc / environment中永久设置了它-只需在新行中添加如下内容:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"


嗨,Alistair。感谢您的建议,但我只使用一个显示器。
陈浩(Chan-Ho Suh)

7

我的Intel沙桥处理器也遭受了视频撕裂的困扰。这对我有用。我在“ / etc / environment”中添加了以下几行-

CLUTTER_PAINT =禁用剪切重绘:禁用剔除
CLUTTER_VBLANK =真

而且有效。在末尾按Enter键,然后复制粘贴这些行。可能需要重新启动。试试吧。


2
感谢您的建议,但这是Gnome3环境变量(例如Gnome Shell使用的变量)。我使用的窗口管理器非常小,因此不适用于我。此外,我没有Sandy Bridge处理器。
Chan-Ho Suh

该解决方案解决了Cinnamon桌面(Mutter窗口管理器)和13.04上的nvidia 313驱动程序上出现的撕裂问题。抱歉,您碰到了一条旧帖子,但谢谢。
askuhn 2013年

4

这是我通过NVIDIA GeForce G102M解决了华硕K50IN笔记本上视频的vsync问题的方法。我知道由于卡的不同,您的里程可能会有所不同,但是您可以尝试一下...对我来说,诀窍是使用准系统MPlayer(但不能使用MPlayer2!)。它不适用于其他任何播放器。

  1. 在ccsm中执行通常的compiz魔术

    • 在“复合”下,关闭“检测刷新率”,然后手动输入显示器的当前刷新率。
    • 我打开了“复制到纹理”,不确定是否有帮助。
    • 在OpenGL下:Tex。Filter-最佳
    • 与VBlank同步已开启
    • Unity插件:(不确定是否有帮助,但据称可以提高速度)面板不透明度-1.0000,与启动器不透明度相同。破折号模糊-静态
  2. 做通常的nvidia设置魔术:

    • 在XVideo和OpenGL设置下启用与VBlank同步
    • 在OpenGL设置下将“图像设置”设置为“高质量”
    • 在“显示配置”下,手动设置分辨率,然后将“刷新率”从“自动”设置为当前的刷新率。
  3. 安装mplayer和vdpau(不是mplayer2 !!!这是新的实验性工具,至少对我来说,对VDPAU不太满意)

    • 软件包:mplayer libvdpau1 vdpau-va-driver
  4. 设置MPlayer(我也尝试过gnome-mplayer,但是它的效果不像我尝试的一样)

    • 打开文件〜/ .mplayer / config或创建它(如果没有)。您可能还必须创建文件夹.mplayer。它应包含以下内容:
[default]
ao=pulse
vo=vdpau

如果您删除了脉冲音频,请将ao更改为alsa。

通过注销/再次登录来重新启动X。

像往常一样尝试一下,YMMV。我发现,尤其是在非LTS版本或带有beta驱动程序的情况下,根据视频的编解码器,此方法可能不再起作用。


1

这在ATI radeon驱动程序上对我有用,因此可能对您有用:

添加一个配置文件(例如case /etc/X11/xorg.conf.d/20-nouveau.conf)

包括以下内容:

Section "Device"
    Option      "EXAVsync"  "True"
    Option      "GLXVBlank" "True"
    Identifier  "Nvidia card"
    Driver      "nouveau"
EndSection

EXA是合成视频的框架;默认情况下,它似乎不是vsnc。

尝试使用其他软件(例如vlc)播放视频可能也值得。


1
正如我在帖子中提到的那样,切换到默认驱动程序不是一种选择。
Chan-Ho Suh 2012年

1

不知道这是否会帮助您,但是对我有用。打开nvidia设置并将“频率”从“自动”更改为60。然后按“应用”。这解决了我的视频撕裂和桌面闪烁的问题。不幸的是,每次重启我都必须这样做。


1
正如我在帖子中所解释的,我的显示刷新率 60 Hz。至于您的问题,请遵循此答案
Chan-Ho Suh 2012年

1

我遇到了同样的视频撕裂问题。就我而言,我观察到拆卸仅在全屏模式下发生。问题似乎在于将视频缩放到全屏。每当播放的视频的原始大小与屏幕分辨率之比不匹配时,视频就会被撕毁。将smplayer中的纵横比设置为显示纵横比对我来说解决了这个问题。

例如,我正在全屏播放1280x714大小的视频,视频中有裂痕。当我将视频的长宽比设置为16:9时,播放非常流畅。

我必须指出,问题的根本原因仍然存在,并且很烦人。由于长宽比未保持原始状态,因此视频中会出现一些变形。但是最好不要流泪;)


1

我使用的是Ubuntu 12.04LTS 64位,并且有nvidia gtx 660ti。

在寻找解决方案之前,我一直遭受视频撕裂一个多月的困扰。

打开nvidia x服务器设置 -> PowerMizer- > PowerMizer设置(位于底部附近),并在显示“首选模式”的位置将设置从“ 自适应 ”更改为“ 首选最大性能”。



0

如果您不使用双显示器,则还有另一种可能性。vblank有两种不同的同步方式:一种用于XVideo,另一种用于OpenGL。在nvidia-settings中,一个位于“ X Server XVideo设置”下,另一个位于“ OpenGL /设置”下。哪一个实际上会影响您的视频播放软件,可能取决于它使用的是哪个输出插件。


VLC为这两个输出提供选项,我都尝试了它们。
Chan-Ho Suh 2012年

0

从您的描述中我无法确定您是否真的眼泪汪汪;通常,撕裂看起来像是将图片水平分为两部分或三部分,并且部分不匹配。发生这种情况是因为图片的顶部和底部不是来自视频中的同一帧。维基百科有一个很好的模拟例子屏幕撕裂。细水平线的声音不同,更像是梳理从去隔行差文物,但也许这是很难形容。

您不会提及您要观看的视频的任何详细信息,例如其分辨率,编码,是隔行扫描还是逐行扫描,以及是否已在VLC中启用了去隔行扫描。还可能值得检查视频处理是否正在转移到GPU上,或者CPU是否正在完成所有工作。您是否已确认可以使用OS X在不同的硬件或MacBook上成功观看相同的视频?

您说您尝试过在XFCE上禁用合成功能,但是尝试添加它可能不会受到损害:

Section "Extensions"
    Option "Composite" "Disable"
EndSection

可以肯定地将其保存到/etc/X11/xorg.conf中。另外,到目前为止还没有提到的另一项建议是添加:

Option "UseEvents" "True"

到xorg.conf的“设备”或“屏幕”部分。

更新:

随附的屏幕截图肯定显示出撕裂!如果播放器以其他方式跟上解码视频的步伐(即没有卡死的减速,只是撕裂),那么由CPU还是GPU进行解码就可能无关紧要。VLC在“首选项”的“视频设置”页面上具有一个选项,可以打开和关闭“加速视频输出”。如果开启,则应该使用GPU进行解码。如果您在VLC中切换该设置并top在播放视频的同时在终端中运行,则应该看到这两个设置之间的CPU使用率有所不同。您也可以尝试关闭VLC中的任何去隔行功能,以查看是否有区别。

我还有另外两个建议:

我没有看到您的xorg.conf明显有问题,但是您可以仔细检查两个同步到vblank设置(在X Server XVideo设置和OpenGL设置上)是否正确存储在.nvidia-settings-rc中。有些人以root身份或使用gksudo运行nvidia-settings(因此它可以更新/etc/X11/xorg.conf),但这可能导致设置存储在/root/.nvidia-settings-rc中而不是〜/中。 nvidia-settings-rc。它应该可以选择您自己的副本,但是为了避免任何疑问,您在运行nvidia-settings时应该同时检查两个vblank设置。不要忘记点击设置底部页面上的“保存当前配置”。如果您运行:

nvidia-settings -q=XVideoTextureSyncToVBlank -q=SyncToVBlank

那么您应该会看到两个设置都被设置为1。您可能还应该通过重新引导并再次运行上述命令来检查自动加载设置是否正常工作。

您可以尝试的另一件事是升级/降级nvidia驱动程序。我以前曾经历过一些次要的驱动程序版本更新的经历;肯定有nvidia驱动程序的“好”和“坏”版本,而最新的驱动程序并不总是最好的。您可以尝试使用X-swat PPA进行升级:

https://launchpad.net/~ubuntu-x-swat/+archive/x-updates

您可以尝试将其降级到适用于12.04的早期版本:

https://launchpad.net/ubuntu/precise/amd64/nvidia-currenthttps://launchpad.net/ubuntu/precise/i386/nvidia-current

取决于您是否安装了amd64或i386。单击要尝试的右侧的版本号,下载.deb文件,然后使用以下方法安装:

sudo dpkg --install <name of file>.deb

例如,由于不相关的nvidia错误,我必须下载此文件:

http://launchpadlibrarian.net/90395807/nvidia-current_290.10-0ubuntu2_amd64.deb

https://launchpad.net/ubuntu/precise/amd64/nvidia-current/290.10-0ubuntu2

并使用以下命令进行安装:

sudo dpkg --install nvidia-current_290.10-0ubuntu2_amd64.deb

另一个要点:另一个答案提到将刷新率从“自动”更改为60Hz,您说它已经设置为60Hz。但是,您附加的xorg.conf在元模式下(在“屏幕”部分中)具有nvidia-auto-select,这表明它不是固定的。但是,您的Monitor定义仅提供60.0,因此这可能无关紧要。备份并移动xorg.conf,然后重新运行nvidia-xconfig和nvidia-settings以查看是否获得了不同的配置,可能会很有趣。


嗨,大卫。我上传了一张我涉嫌流泪的图像:-)请告诉我它是否与“撕裂”匹配。在我观看的任何视频中几乎都发生了这种情况,因此我认为不值得详细介绍。您对要测试的内容有什么建议吗?我已经尝试过这些选项(并随后删除了它们),但是也许我应该尝试一些组合?如果您可以查看我粘贴的xorg.conf,请告诉我是否有任何看似不对劲的地方。如何检查GPU是否无法正常工作?最后,是的,相同的视频永远不会在同一台计算机的OS X中出现问题。
Chan-Ho Suh

新手驱动程序似乎没有相同的问题。我唯一能够诊断出的似乎与众不同的是,对于nouveau,FPS约为600,而我不需要任何其他配置。
Chan-Ho Suh 2012年

是的,那看起来确实像在流泪。抱歉,我们很抱歉:-)
戴维·爱德华兹

根据您的反馈,我添加了更多建议。
戴维·爱德华兹

不幸的是,没有运气。我认为也许唯一要做的就是等待Nvidia改善对GeForce 320M的支持,尽管我不知道为什么Nouveau没有问题。
陈浩(Chan-Ho Suh)2012年

0

除了David以前的文章:如果您想使用X-swat PPA安装最新的NVidia专有驱动程序,还可以将其添加到您的apt来源中:

sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current

这将安装最新版本,并让您了解有关其交付的最新信息。


0

抱歉,这个答案在某种程度上是针对openSuSE的,而不是Ubuntu的,但我终于做到了与这些更改一起使用,

  • 暂时禁用合成/窗口效果(openSuSE中的alt + shift + f12)
  • 将VLC的“视频”设置设置为“ OpenGL视频输出(实验性)”。还为我检查了“加速视频输出(覆盖)”。如果有问题,我正在使用VLC 2.1.1。
  • 按照mjnichol的答案将PowerMizer设置设置为性能
  • 将OpenGL设置设置为高,如AmirDizdarević的回答

希望能帮助到你!我想象有一些设置可以使其与合成一起使用,但是我建议至少禁用合成以进行测试。我的设置是4K显示器和GTX 650图形卡。


0

您可以通过将视频输出更改为“ OpenGL GLX”来为VLC修复此问题。


0

我正在运行64位Elementary OS Luna(基于Ubuntu 12.04 LTS),但遇到了相同的问题。到处搜索,我终于找到了一种工作方法,很明显,它确实包括了“ Powermizer设置为性能”解决方案,正如许多其他人已经说过的那样。

问题在于,重新启动后,这些设置将还原为默认的“自动”设置,并且显然Nvidia-Settings应用程序无法正确保存Powermizer的新设置。不用担心!!!

只需按照以下说明进行操作,就非常简单:

http://ubuntu.aspcode.net/view/635400140124705175636416/nvidia-settings-powermizer-performance-mode-on-12044-64位

如文章所述,创建一个启动应用程序,您就很好了!相信我的作品!!!非常感谢Aquablue发布此帖子,当然还要感谢Nvidia客户服务部的Mike提供了解决方案!!!

仅供参考,我有一个Phenom II X4、8GB DDR3 RAM,Corsair SSD,GTX 650,Elementary Luna 64位。


0

我可以用光标拾取窗口,移动窗口,然后将其固定。所以似乎是X中的一些回调问题。

对我来说,vlc修复是:

vlc->工具->首选项->视频->在“输出”下拉列表中选择 x11 video output(XCB)


-2

看来您正在运行一些轻量级的窗口管理器(大概是openbox)。如果是这种情况,则有可能您将xcompmgr用作合成管理器来获取桌面效果,例如阴影,透明胶片等。就我而言,关闭xcompmgr可以解决相同的问题:在观看视频时尤其是在观看视频时会撕裂高清(CPU密集型)。显然,由于xcompmgr中的错误导致了流泪,这是一个长期被放弃的项目。要关闭xcompmgr,您可以执行“ killall xcompmgr”。那应该工作。希望能帮助到你!礼炮!巴勃罗。


您似乎不太仔细地阅读了我的帖子。顺便说一句,您不必杀人xcompmgr。只是不要首先开始。
Chan-Ho Suh 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.