Как мне остановить разрыв видео? (Драйвер пропуска Nvidia, оконный менеджер без компоновки)

35

У меня есть проблема, которая, похоже, огорчает многих, используя проприетарный драйвер Nvidia:

Разрывание видео : тонкие горизонтальные линии (обычно около верхней части моего дисплея), когда в видео много панорамирования или действия.

(Примечание: переключение обратно на драйвер nouveau по умолчанию не вариант, так как, казалось бы, несуществующее управление питанием разряжает мою батарею в несколько раз быстрее)

Я пробовал Totem, Parole и VLC, и разрывы происходят со всеми из них. Наилучшим результатом было использование X11 outputVLC, но все еще есть разрывы с относительно умеренным действием.

Аппаратное обеспечение: MacBook Air 3,2 - у которого есть Nvidia GeForce 320M.

Существует два распространенных способа исправления разрывов с помощью драйверов Nvidia:

  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.conf : http://paste.ubuntu.com/992056/

Пример наблюдаемого разрыва :разрывая видео

Чан-Хо Су
источник
вы можете pastebin.com ваш файл xorg.conf, пожалуйста? Вы экспериментировали с Option "TripleBuffer" "1"файлом xorg.conf?
fossfreedom
Я пробовал TripleBuffer; похоже, немного помогает, но не сильно. Я вставлю свой xorg.conf.
Чан-Хо Су
Вы используете двойные мониторы?
Алистер Бакстон
Та же проблема в 12.10 с Flash в браузере, хотя я не вижу разрывов в VLC и при перетаскивании окон. Вы нашли решение с тех пор?
Bleep Bloop

Ответы:

18

Одна вещь, чтобы попробовать это может сработать. Откройте nvidia-settings и перейдите в раздел powermizer. Выберите «Максимальная производительность» в раскрывающемся списке, и вы увидите, как уровень вашего powermizer подскочил до максимальной скорости.

Как только вы это сделаете, попробуйте видео.

В прошлом я обнаружил, что vsync не работает, когда карта nvidia работает на самой медленной настройке powermizer.

mjnichol
источник
Спасибо! Это сработало для меня, используя проприетарный драйвер nvidia (310.19) в Arch Linux. Я уже давно пытаюсь решить эту проблему. Такая странная проблема.
Рейд
Можно ли управлять этим параметром из командной строки? Чтобы я мог включить его при запуске видеоплеера (и отключить после закрытия плеера)?
Panzi
1
Ах. nvidia-settings -a GPUPowerMizerMode=1устанавливает его на производительность и nvidia-settings -a GPUPowerMizerMode=2на авто.
Panzi
11

Если вы используете двойные мониторы, драйвер nvidia может синхронизироваться только с vblank одного из дисплеев, если они не используют точно такую ​​же частоту обновления. И я имею в виду именно . Это фактически невозможно, если оба монитора не имеют одинаковый тип. Если драйвер nvidia синхронизируется с неверным дисплеем (например, синхронизируется со встроенным дисплеем, когда вы хотите посмотреть фильм на внешнем телевизоре), вы можете отменить его выбор. Из документации драйвера nvidia:

При использовании __GL_SYNC_TO_VBLANK с TwinView OpenGL может синхронизироваться только с одним из устройств отображения; это может привести к повреждению устройства отображения, с которым не синхронизируется OpenGL. Вы можете использовать переменную окружения __GL_SYNC_DISPLAY_DEVICE, чтобы указать, с каким устройством отображения OpenGL должен синхронизироваться. Вы должны установить эту переменную среды на имя устройства отображения; например "ЭЛТ-1". Найдите строку «Подключенные устройства отображения:» в файле журнала X, чтобы получить список имеющихся устройств отображения и их названий.

Я установил это навсегда в / etc / environment - просто добавьте что-то вроде этого в новую строку:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"

Алистер Бакстон
источник
Привет Алистер. Спасибо за предложение, но я использую только один дисплей.
Чан-Хо Су
7

Я тоже страдал от разрыва видео в моем процессоре Intel Sandy Bridge. Это сработало для меня. Я помещаю следующие строки в "/ etc / environment" -

CLUTTER_PAINT = отключить-обрезать-перерисовать: отключить-отбраковать
CLUTTER_VBLANK = True

и это сработало. Нажмите ввод в конце и скопируйте и вставьте эти строки. Это может потребовать перезагрузки. Попытайся.

BRKsays
источник
2
Спасибо за предложение, но это переменные среды Gnome3 (например, используемые в Gnome Shell). Я использую очень минимальный оконный менеджер, так что это не относится ко мне. Кроме того, у меня нет процессора Sandy Bridge.
Чан-Хо Су
Это решение устранило проблему с разрывом, которая была у меня на рабочем столе Cinnamon (оконный менеджер Mutter) и драйверах nvidia 313 13 апреля. Извините за столкновение со старым постом, но спасибо.
Askuhn
4

Вот как я решил vsync для видео на своем ноутбуке ASUS K50IN с NVIDIA GeForce G102M . Я знаю, что ваш пробег может отличаться, так как карты разные, но вы можете попробовать ... У меня была хитрость в использовании базовых MPlayer (но не MPlayer2!). Это не работает ни с одним из других игроков.

  1. Сделать обычную магию compiz в ccsm

    • Под Composite отключите функцию «Определить частоту обновления» и введите текущую частоту монитора вручную.
    • Я включил «Копировать в текстуру», не уверен, помогло это или нет.
    • Под OpenGL: Tex. Filter - лучший
    • Синхронизация с VBlank включена
    • Плагин Unity: (не уверен, что это помогло, но якобы улучшает скорость) Панель Opacity - 1,0000, то же самое для непрозрачности Launcher. Тире Blur - Статический
  2. Сделайте обычную магию nvidia-settings:

    • Включить синхронизацию с VBlank в настройках XVideo и OpenGL
    • Установите параметры изображения в высокое качество в настройках 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, или с бета-версиями драйверов, это может больше не работать в зависимости от кодека видео.

Амир Диздаревич
источник
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
Как я уже упоминал в своем посте, переключение на драйвер по умолчанию не вариант.
Чан-Хо Су
1

Не уверен, что это поможет тебе, но у меня это сработало. Откройте nvidia-settings и измените Frecuency с Auto на 60. И нажмите «Применить». Это решило мои проблемы с разрывом видео и общим мерцанием рабочего стола. К сожалению, я должен делать это каждый раз, когда перезагружаюсь.

vicentec
источник
1
Как я объяснил в моем посте, частота обновления моего дисплея составляет 60 Гц. Что касается вашей проблемы, следуйте этому ответу .
Чан-Хо Су
1

У меня были те же самые проблемы с разрывом видео. В моем случае я заметил, что разрыв происходит только в полноэкранном режиме. Проблема, кажется, в масштабировании видео на весь экран. Всякий раз, когда исходный размер воспроизводимого видео и соотношения разрешения экрана не совпадают, в видео происходит разрыв. Установка соотношения сторон в smplayer и соотношения сторон дисплеев устранила проблему для меня.

Например, я воспроизводил видео размером 1280x714 в полноэкранном режиме, в видео была разрыв. Когда я увеличил соотношение сторон видео до 16: 9, воспроизведение было плавным.

Я должен отметить, что коренная причина проблемы остается там и раздражает. Так как соотношение сторон не сохраняется оригинальным, в видео будет некоторая деформация. Однако лучше смотреть без слез;)

focknvidia
источник
1

Я использую Ubuntu 12.04LTS 64bit, и у меня есть NVIDIA GTX 660ti.

Я страдал от разрыва видео более месяца, пока не нашел решение.

Откройте настройки сервера nvidia x -> PowerMizer -> Настройки PowerMizer (внизу) и там, где написано «Предпочитаемый режим», измените настройку с « Адаптивный» на « Предпочитать максимальную производительность».

user144925
источник
1

Обновление до версии 319 с PPA решило проблему:

Если после загрузки он работает в отказоустойчивом режиме, перейдите в recovery и запустите sudo nvidia-xconfig. Приятного воспроизведения видео!

BrozzSama
источник
0

Если вы не используете двойной монитор, есть другая возможность. Существует два вида синхронизации с vblank: один для XVideo и один для OpenGL. В настройках nvidia один находится в разделе «Настройки X Server XVideo», а другой в разделе «OpenGL / Настройки». Какая из них действительно влияет на ваше программное обеспечение для воспроизведения видео, может зависеть от того, какой выходной плагин он использует.

Алистер Бакстон
источник
VLC имеет опции для этих двух выходов, и я попробовал их оба.
Чан-Хо Су
0

Я не уверен в вашем описании, действительно ли вы видите разрыв; обычно слезы выглядят так, как будто картинка разделена по горизонтали на две или три секции, причем детали не совпадают. Это происходит потому, что верхняя часть изображения и нижняя часть не совпадают с одним кадром в видео. Википедия имеет хорошую имитацию пример из экрана слезотечения . Тонкие горизонтальные линии звучат по-другому, больше похоже на расчесывание артефактов из-за плохой деинтерлейсинга, хотя, возможно, это просто сложно описать.

Вы не упоминаете какие-либо детали видео, которое вы пытаетесь просмотреть, такие как его разрешение, кодирование, а также, является ли оно чересстрочным или прогрессивным, и включено ли деинтерлейсинг в VLC. Может также стоить проверить, выгружается ли обработка видео в графический процессор или процессор выполняет всю работу. Подтвердили ли вы, что вы можете успешно просматривать одно и то же видео на другом оборудовании или на MacBook с помощью OS X?

Вы говорите, что пытались отключить композитинг в XFCE, но, вероятно, не мешало бы добавить:

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

на ваш /etc/X11/xorg.conf просто чтобы быть уверенным. Кроме того, еще одно предложение, не упомянутое до сих пор, заключается в добавлении:

Option "UseEvents" "True"

в разделы Device или Screen вашего xorg.conf.

ОБНОВИТЬ:

Прикрепленный скриншот определенно показывает разрыв! Если проигрыватель в противном случае идет в ногу с декодированием видео (то есть без замедлений заикания, просто разрыв), то, вероятно, не имеет значения, декодирование выполняет процессор или графический процессор. VLC имеет опцию на странице настроек видео в настройках для включения и выключения «Ускоренный вывод видео»; если он включен, он должен использовать графический процессор для декодирования. Если вы переключаете эту настройку в VLC и запускаете topв терминале во время воспроизведения видео, вы должны увидеть разницу в загрузке ЦП между этими двумя настройками. Вы также можете попробовать отключить деинтерлейсинг в VLC, чтобы увидеть, имеет ли это значение.

У меня есть два других предложения:

Я не вижу ничего явно неправильного в вашем xorg.conf, но вы можете дважды проверить, правильно ли хранятся обе настройки синхронизации с vblank (в настройках X Server XVideo и OpenGL) в .nvidia-settings-rc. Некоторые люди запускают nvidia-settings от имени root или используют gksudo (поэтому он может обновить /etc/X11/xorg.conf), но это может привести к тому, что настройки будут храниться в /root/.nvidia-settings-rc, а не в ~ /. NVIDIA-настройка-RC. Это должна быть ваша собственная копия, но чтобы избежать каких-либо сомнений, вы должны проверить обе настройки vblank при запуске nvidia-settings от вашего имени; не забудьте нажать «Сохранить текущую конфигурацию» на нижней странице настроек. Если вы запускаете:

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-current или https://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

Еще один крошечный момент: еще один ответ упоминает об изменении частоты обновления с Авто на 60 Гц, и вы говорите, что она уже установлена ​​на 60 Гц. Однако в прикрепленном xorg.conf есть метаданные nvidia-auto-select (в разделе «Экран»), что говорит о том, что это не исправлено. Тем не менее, ваше определение монитора предлагает только 60,0, так что, возможно, это несущественно. Может быть интересно выполнить резервное копирование и переместить ваш xorg.conf, а затем повторно запустить nvidia-xconfig и nvidia-settings, чтобы увидеть, есть ли у вас другая конфигурация.

Дэвид Эдвардс
источник
Привет Дэвид. Я загрузил изображение моего предполагаемого разрыва :-) Пожалуйста, скажите мне, соответствует ли оно «разрыву». Это происходит почти во всех видео, которые я смотрю, поэтому я не думал, что стоит вдаваться в подробности. Есть ли у вас какие-либо предложения о том, что конкретно проверить? Я пробовал эти варианты (и впоследствии удалил их), но, возможно, есть какая-то комбинация, которую я должен попробовать? Если вы можете посмотреть на мой вставленный xorg.conf, дайте мне знать, если что-то не так. Как проверить, не работает ли GPU? Наконец, да, те же видео никогда не имеют проблемы в OS X на той же машине.
Чан-Хо Су
У водителя нуво, кажется, нет той же самой проблемы. Единственная вещь, которую мне удалось диагностировать, которая кажется другой, - это то, что с Nouveau FPS составляет около 600 без какой-либо дополнительной конфигурации, необходимой мне.
Чан-Хо Су
Да, это похоже на разрыв. Извините за сомнение :-)
Дэвид Эдвардс
Я добавил дополнительные предложения на основе ваших отзывов.
Дэвид Эдвардс
К сожалению, не повезло. Думаю, что единственное, что нужно сделать, это подождать, пока Nvidia улучшит поддержку GeForce 320M, хотя мне интересно, почему у Nouveau нет проблем.
Чан-Хо Су
0

В дополнение к предыдущему посту Дэвида: если вы хотите установить последние проприетарные драйверы NVidia с использованием X-swat PPA, вы также можете добавить его в свои подходящие источники:

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

Это установит последнюю версию и будет держать вас в курсе их поставок.

Yanok
источник
0

Извините, этот ответ в какой-то степени относится к openSuSE, а не к Ubuntu, но я наконец-то получил работу с этими изменениями,

  • Временно отключите эффекты композитинга / окон (alt + shift + f12 в openSuSE)
  • Используйте VLC с настройкой «Видео», установленной на «Вывод видео OpenGL (экспериментальный)». «Ускоренный вывод видео (Overlay)» также проверен для меня. Я использую VLC 2.1.1, если это имеет значение.
  • Установите настройки PowerMizer на производительность, как в ответе mjnichol
  • Установите высокие настройки OpenGL, как в ответе Амира Диздаревича

Надеюсь, это поможет! Я предполагаю, что есть некоторые настройки, чтобы он работал с композитингом, но я рекомендую по крайней мере отключить композитинг для тестирования. Моя установка - монитор 4K и видеокарта GTX 650.

gatoatigrado
источник
0

Вы можете исправить это для VLC, изменив вывод видео на «OpenGL GLX».

user279078
источник
0

Я использую 64-битную элементарную ОС Luna (на основе Ubuntu 12.04 LTS), и у меня возникла та же проблема. Осматривая, я наконец нашел метод, который РАБОТАЕТ, и, очевидно, он включает в себя решение «Настройки Powermizer для производительности», как уже говорили многие другие люди.

Проблема заключается в том, что после перезапуска эти настройки восстанавливаются до значения по умолчанию «Авто», и, очевидно, приложение Nvidia-Settings не сохраняет должным образом новые настройки Powermizer. НЕ БЕСПОКОИТЬСЯ!!!

ПРОСТО СЛЕДИТЕ ЗА РУКОВОДСТВОМ НИЖЕ, ЭТО ОЧЕНЬ ПРОСТО:

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

Как написано в статье, создайте стартап-приложение, и все готово! ПОВЕРЬ МНЕ ЭТО РАБОТАЕТ!!! Большое спасибо Aquablue за публикацию этого сообщения и, конечно же, Майку из Nvidia Customer Care, который предоставил решение !!!

К вашему сведению, у меня Phenom II X4, 8 ГБ оперативной памяти DDR3, Corsair SSD, GTX 650, Elementary Luna 64-bit.

Спирос П.
источник
0

Я мог выбрать окно курсором, переместить окно, и оно исправило разрыв. Это похоже на некоторые проблемы с обратным вызовом в X.

Для меня исправление vlc было:

vlc -> инструменты -> настройки -> видео -> в выпадающем меню 'output' выберите x11 video output(XCB)

абр
источник
-2

Кажется, что вы используете какой-то легкий оконный менеджер (предположительно openbox). Если это так, возможно, вы используете xcompmgr в качестве составного менеджера для получения эффектов рабочего стола, таких как тени, прозрачные пленки и т. Д. В моем случае отключение xcompmgr решило эту же проблему: разрыв при просмотре видео, особенно в HD (которые интенсивно используют процессор). По-видимому, разрыв произошел из-за ошибки в xcompmgr, который является давно заброшенным проектом. Чтобы отключить xcompmgr, вы можете выполнить killall xcompmgr. Это должно работать. Надеюсь, это поможет! Saludos! Пабло.

Usemos Linux
источник
Похоже, вы не очень внимательно прочитали мой пост. Кстати, вам не нужно убивать xcompmgr. Просто не начинайте это с самого начала.
Чан-Хо Су