Jak zatrzymać rozrywanie wideo? (Sterownik prop Nvidia, menedżer okien niekompozytowy)

35

Mam ten problem, który na pozór dotyka wielu korzystających z zastrzeżonego sterownika Nvidia:

Łzawienie wideo : drobne poziome linie (zwykle w górnej części ekranu), gdy w filmie jest dużo panoramowania lub akcji.

(Uwaga: powrót do domyślnego sterownika w stylu nouveau nie jest opcją, ponieważ jego pozornie nieistniejące zarządzanie energią wyczerpuje moją baterię kilka razy szybciej)

Próbowałem Totem, zwolnienia warunkowego i VLC, i łzawienie występuje z nimi wszystkimi. Najlepszym rezultatem było zastosowanie X11 outputw VLC, ale nadal występuje łzawienie przy stosunkowo umiarkowanym działaniu.

Sprzęt: MacBook Air 3,2 - który ma kartę Nvidia GeForce 320M.

Istnieją dwie typowe poprawki dla rozrywania sterowników napędów Nvidia:

  1. Wyłącz komponowanie , ponieważ prawnie zastrzeżone sterowniki Nvidia zwykle nie działają dobrze z menedżerami okien do komponowania w Linuksie (Compiz jest wyjątkiem, o którym wiem). Ale używam bardzo lekkiego menedżera okien (Awesome menedżera okien), który nawet nie jest zdolny do komponowania (ani żadnych fajnych efektów). Mam również ten problem w Xfce, gdzie mam wyłączone komponowanie.

  2. Włączanie synchronizacji z VBlank. Aby to włączyć, włączam tę opcję, nvidia-settingsa następnie uruchamiam ją automatycznie, tak jak w nvidia-settings -lprzypadku innych programów autostartu. To wydaje się działać, ponieważ kiedy biegam glxgears, dostaję:

    $ 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
    

    A kiedy sprawdzam częstotliwość odświeżania za pomocą nvidia-settings:

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

    Wszystko to sugeruje, że synchronizacja z VBlank jest włączona. Jak rozumiem, jest to dokładnie zaprojektowane, aby zatrzymać łzawienie, a problemem wielu ludzi jest nawet uzyskanie czegoś w rodzaju glxgearsprawidłowych informacji. Nie rozumiem, dlaczego to dla mnie nie działa.

xorg.conf : http://paste.ubuntu.com/992056/

Przykład zaobserwowanego rozdarcia :łzawienie wideo

Chan-Ho Suh
źródło
czy możesz pastebin.com plik xorg.conf, proszę? Czy eksperymentowałeś z Option "TripleBuffer" "1"plikiem xorg.conf?
fossfreedom
Próbowałem TripleBuffer; wydaje się, że to trochę pomaga, ale niewiele. Wkleję moje xorg.conf.
Chan-Ho Suh
Czy używasz podwójnych monitorów?
Alistair Buxton
Ten sam problem w wersji 12.10 z Flashem w przeglądarce, chociaż nie widać łez w VLC, które widzę, ani podczas przeciągania okien. Czy od tego czasu znalazłeś rozwiązanie?
Bleep Bloop

Odpowiedzi:

18

Jedna rzecz do wypróbowania, która może zadziałać. Otwórz ustawienia NVIDIA i przejdź do sekcji Powermizer. Wybierz z menu rozwijanego opcję „Maksymalna wydajność”, a poziom powermizera powinien wzrosnąć do największej prędkości.

Gdy to zrobisz, wypróbuj wideo.

W przeszłości odkryłem, że vsync nie działa, gdy karta nvidia ma najwolniejsze ustawienie powermizera.

mjnichol
źródło
Dziękuję Ci! Działa to dla mnie przy użyciu zastrzeżonego sterownika NVIDIA (310.19) w Arch Linux. Od dłuższego czasu próbuję to rozwiązać. Taki dziwny problem.
Reid
Czy można kontrolować to ustawienie z wiersza poleceń? Czy mogę go włączyć po uruchomieniu odtwarzacza wideo (i wyłączyć go po zamknięciu odtwarzacza)?
panzi
1
Ach nvidia-settings -a GPUPowerMizerMode=1ustawia go na wydajność i nvidia-settings -a GPUPowerMizerMode=2na auto.
panzi
11

Jeśli używasz podwójnych monitorów, sterownik nvidia może zsynchronizować się z vblank jednego z wyświetlaczy, chyba że użyje dokładnie tej samej częstotliwości odświeżania. I mam na myśli dokładnie . Jest to praktycznie niemożliwe, chyba że oba monitory są tego samego typu. W przypadku, gdy sterownik nvidia synchronizuje się z niewłaściwym wyświetlaczem (na przykład synchronizuje się z wbudowanym wyświetlaczem, gdy chcesz oglądać film na zewnętrznym telewizorze), możesz zmienić jego wybór. Z dokumentacji sterownika nvidia:

Podczas korzystania z __GL_SYNC_TO_VBLANK z TwinView, OpenGL może synchronizować tylko z jednym urządzeniem wyświetlającym; może to spowodować uszkodzenie łez na urządzeniu wyświetlającym, z którym OpenGL nie synchronizuje. Możesz użyć zmiennej środowiskowej __GL_SYNC_DISPLAY_DEVICE, aby określić, z którym urządzeniem wyświetlającym OpenGL ma się synchronizować. Powinieneś ustawić tę zmienną środowiskową na nazwę urządzenia wyświetlającego; na przykład „CRT-1”. Poszukaj wiersza „Podłączone urządzenia wyświetlające:” w pliku dziennika X, aby uzyskać listę obecnych urządzeń wyświetlających i ich nazw.

Ustawiłem to na stałe w / etc / environment - po prostu dodaj coś takiego w nowym wierszu:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"

Alistair Buxton
źródło
Cześć Alistair. Dzięki za sugestię, ale używam tylko jednego wyświetlacza.
Chan-Ho Suh
7

Ja również cierpiałem na zrywanie wideo w moim procesorze Intel Sand Sand Bridge. To zadziałało dla mnie. Umieszczam następujące wiersze w „/ etc / environment” -

CLUTTER_PAINT = disable-clipped-przerysowanie: disable-culling
CLUTTER_VBLANK = True

i zadziałało. Naciśnij enter na końcu i skopiuj wklej te linie. Może to wymagać ponownego uruchomienia. Spróbuj.

BRKsays
źródło
2
Dzięki za sugestię, ale są to zmienne środowiskowe Gnome3 (takie jak używane przez Gnome Shell). Używam bardzo minimalnego menedżera okien, więc to mnie nie dotyczy. Ponadto nie mam procesora Sandy Bridge.
Chan-Ho Suh
To rozwiązanie naprawiło problem łzawienia, który miałem na pulpicie Cinnamon (menedżer okien Mutter) i sterownikach NVIDIA 313 13.04. Przepraszam, że wpadłem na stary post, ale dziękuję.
askuhn
4

Oto jak rozwiązałem problemy vsync dla wideo na moim notebooku ASUS K50IN z NVIDIA GeForce G102M . Wiem, że twój przebieg może się różnić, ponieważ karty są różne, ale możesz to wypróbować ... Sztuką było dla mnie korzystanie z MPlayera bez systemu operacyjnego (ale nie MPlayer2!). Nie działa z żadnym innym graczem.

  1. Wykonuj zwykłą magię compiz w ccsm

    • W obszarze Composite wyłącz Wykryj częstotliwość odświeżania i ręcznie wprowadź bieżącą monitor.
    • Włączyłem opcję „Kopiuj do tekstury”, nie jestem pewien, czy to pomogło, czy nie.
    • W OpenGL: Tex. Filter - Best
    • Synchronizacja z VBlank jest włączona
    • Wtyczka Unity: (nie jestem pewien, czy to pomogło, ale rzekomo poprawia szybkość) Panel Opacity - 1,0000, to samo dla Launcher Opacity. Dash Blur - Statyczny
  2. Wykonaj zwykłą magię ustawień NVIDIA:

    • Włącz synchronizację z VBlank w ustawieniach XVideo i OpenGL
    • Ustaw Ustawienia obrazu na Wysoka jakość w ustawieniach OpenGL
    • W obszarze Konfiguracja wyświetlania ustaw rozdzielczość ręcznie, a następnie ustaw częstotliwość odświeżania z Auto na bieżącą częstotliwość odświeżania.
  3. Zainstaluj mplayer i vdpau (NIE mplayer2 !!! To jest nowe i eksperymentalne i przynajmniej dla mnie było opóźnione w VDPAU)

    • Pakiety: mplayer libvdpau1 vdpau-va-driver
  4. Skonfiguruj MPlayera (próbowałem też gnome-mplayer, ale nie ma takiego samego rezultatu, jak próbowałem)

    • Otwórz plik ~ / .mplayer / config lub utwórz go, jeśli go nie masz. Konieczne może być również utworzenie folderu .mplayer . Powinien zawierać:
[default]
ao=pulse
vo=vdpau

Zmień ao na alsa, jeśli usunąłeś pulsujący dźwięk.

Uruchom ponownie X, ponownie się wylogowując / logując.

Wypróbuj, YMMV jak zawsze. Przekonałem się, że szczególnie w wersjach innych niż LTS lub ze sterownikami beta może to już nie działać w zależności od kodeka wideo.

Amir Dizdarević
źródło
1

To działało dla mnie w sterowniku ATI radeon, więc może działać dla ciebie:

Dodaj plik konfiguracyjny (np. Case /etc/X11/xorg.conf.d/20-nouveau.conf)

składający się z:

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

EXA to platforma do komponowania wideo; domyślnie nie wydaje się vsnc.

Warto również wypróbować inne oprogramowanie (np. VLC) do odtwarzania wideo.

Mark Williams
źródło
1
Jak wspomniałem w moim poście, przejście na domyślny sterownik nie jest opcją.
Chan-Ho Suh
1

Nie jestem pewien, czy to ci pomoże, ale zadziałało dla mnie. Otwórz ustawienia nvidia i zmień Frecuency z Auto na 60. I naciśnij Apply. To rozwiązało moje problemy z rozrywaniem wideo i ogólnym migotaniem pulpitu. Niestety muszę to robić przy każdym ponownym uruchomieniu.

Vicentec
źródło
1
Jak wyjaśniłem w moim poście, moja częstotliwość odświeżania wyświetlacza wynosi 60 Hz. Jeśli chodzi o problem, zastosuj się do tej odpowiedzi .
Chan-Ho Suh
1

Miałem te same problemy z łzami wideo. W moim przypadku zaobserwowałem, że odrywanie odbywa się tylko w trybie pełnoekranowym. Problem wydaje się polegać na skalowaniu wideo do pełnego ekranu. Ilekroć oryginalny rozmiar odtwarzanego wideo i proporcje rozdzielczości ekranu nie są takie same, w filmie pojawia się łza. Ustawienie proporcji w smplayer na proporcje ekranów naprawiło dla mnie problem.

np. odtwarzałem film w rozmiarze 1280x714 na pełnym ekranie, w filmie była łza. Gdy wymusiłem współczynnik proporcji wideo do 16: 9, odtwarzanie było płynne.

Muszę zauważyć, że podstawowa przyczyna problemu pozostaje tam i jest denerwująca. Ponieważ proporcje nie są zachowane w oryginalnym formacie, na filmie wystąpią pewne deformacje. Lepiej jednak oglądać bez łez;)

focknvidia
źródło
1

Używam Ubuntu 12.04LTS 64bit i mam NVIDIA GTX 660ti.

Cierpiałem z powodu rozdarcia wideo przez ponad miesiąc, aż znalazłem rozwiązanie.

Otwórz ustawienia serwera nvidia x -> PowerMizer -> Ustawienia PowerMizer (u dołu) i tam, gdzie jest napisane „Tryb preferowany”, zmień ustawienie z Adaptacyjnego na Preferuj maksymalną wydajność.

użytkownik144925
źródło
0

Jeśli nie używasz podwójnego monitora, istnieje inna możliwość. Istnieją dwa różne rodzaje synchronizacji z vblank: jeden dla XVideo i jeden dla OpenGL. W ustawieniach nvidia, jeden znajduje się w „X Server XV Video Settings”, a drugi w „OpenGL / Settings”. To, które faktycznie wpływa na oprogramowanie do odtwarzania wideo, może zależeć od używanej wtyczki wyjściowej.

Alistair Buxton
źródło
VLC ma opcje dla tych dwóch wyjść i wypróbowałem je oba.
Chan-Ho Suh
0

Z twojego opisu nie jestem pewien, czy rzeczywiście widzisz łzę; normalnie łzawienie wygląda, jakby obraz został podzielony poziomo na dwie lub trzy sekcje, a części nie pasowały do ​​siebie. Dzieje się tak, ponieważ górna część obrazu i dolna część nie pochodzą z tej samej klatki w filmie. Wikipedia ma dobre symulowane przykład na rozrywanie obrazu . Drobne poziome linie brzmią inaczej, bardziej jak czesanie artefaktów ze złego usuwania przeplotu, chociaż może to po prostu trudne do opisania.

Nie wspominasz o żadnych szczegółach filmu, który próbujesz obejrzeć, takich jak jego rozdzielczość, kodowanie, czy jest on z przeplotem lub progresywny oraz czy masz włączoną funkcję usuwania przeplotu w VLC. Warto również sprawdzić, czy przetwarzanie wideo jest odciążane na GPU lub czy procesor wykonuje całą pracę. Czy potwierdziłeś, że możesz z powodzeniem oglądać ten sam film na innym sprzęcie lub na MacBooku za pomocą OS X?

Mówisz, że próbowałeś z wyłączonym komponowaniem w XFCE, ale prawdopodobnie nie zaszkodzi próba dodania:

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

na twój /etc/X11/xorg.conf dla pewności. Kolejną niewymienioną do tej pory sugestią jest dodanie:

Option "UseEvents" "True"

do sekcji Urządzenie lub Ekran twojego xorg.conf.

AKTUALIZACJA:

Załączony zrzut ekranu zdecydowanie pokazuje łzawienie! Jeśli odtwarzacz w inny sposób nadąża za dekodowaniem wideo (tj. Brak spowalniania jąkania, tylko łzawienie), prawdopodobnie nie ma znaczenia, czy dekodowanie wykonuje procesor czy GPU. VLC ma opcję na stronie ustawień wideo w Preferencjach, aby włączyć lub wyłączyć „Przyspieszone wyjście wideo”; jeśli jest włączony, powinien używać GPU do dekodowania. Jeśli zmienisz to ustawienie w VLC i uruchomisz topterminal podczas odtwarzania wideo, powinieneś zobaczyć różnicę w wykorzystaniu procesora między tymi dwoma ustawieniami. Możesz także spróbować wyłączyć usuwanie przeplotu w VLC, aby zobaczyć, czy to robi różnicę.

Mam dwie inne sugestie:

Nie widzę nic oczywistego złego w twoim xorg.conf, ale możesz dokładnie sprawdzić, czy obie synchronizacje z ustawieniami vblank (na X Server XVideo Settings i OpenGL Settings) są poprawnie przechowywane w .nvidia-settings-rc. Niektóre osoby uruchamiają ustawienia nvidia jako root lub używając gksudo (aby można było zaktualizować /etc/X11/xorg.conf), ale może to spowodować zapisanie ustawień w /root/.nvidia-settings-rc zamiast ~ /. nvidia-settings-rc. Powinno to być pobieranie twojej kopii, ale aby uniknąć jakichkolwiek wątpliwości, powinieneś sprawdzić oba ustawienia vblank podczas uruchamiania nvidia-settings. nie zapomnij nacisnąć „Zapisz bieżącą konfigurację” na dolnej stronie ustawień. Jeśli uruchomisz:

nvidia-settings -q=XVideoTextureSyncToVBlank -q=SyncToVBlank

powinieneś zobaczyć, że oba ustawienia są ustawione na 1. Prawdopodobnie powinieneś również sprawdzić, czy jednak automatyczne ładowanie ustawień działa, ponownie uruchamiając i ponownie uruchamiając powyższe polecenie.

Inną rzeczą, którą możesz wypróbować, jest uaktualnienie / obniżenie wersji sterowników NVIDIA. Wcześniej miałem do czynienia z łzawieniem niektórych drobnych aktualizacji wersji sterowników; zdecydowanie są dobre i złe wersje sterowników NVIDIA, a najnowsze nie zawsze są najlepsze. Możesz spróbować zaktualizować za pomocą X-swat PPA:

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

I możesz spróbować obniżyć do wcześniejszej wersji dostępnej dla 12.04:

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

w zależności od tego, czy masz zainstalowany amd64 czy i386. Kliknij numer wersji po prawej stronie, którą chcesz spróbować, pobierz plik .deb, a następnie zainstaluj za pomocą:

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

Na przykład z powodu niezwiązanego błędu NVIDIA musiałem pobrać to:

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

z

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

i zainstalowałem go za pomocą:

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

Jeszcze jedna drobna kwestia: jedna inna odpowiedź wspomina o zmianie częstotliwości odświeżania z Auto na 60Hz i mówisz, że jest już ustawiona na 60Hz. Jednak załączony plik xorg.conf ma nvidia-auto-select w metamodach (w sekcji Ekran), co sugeruje, że nie jest naprawiony. Jednak twoja definicja Monitora oferuje tylko 60,0, więc może to nie ma znaczenia. Tworzenie kopii zapasowej i przeniesienie pliku xorg.conf może być interesujące, a następnie ponownie uruchom nvidia-xconfig i nvidia-settings, aby sprawdzić, czy otrzymasz inną konfigurację.

David Edwards
źródło
Cześć David. Przesłałem obraz mojej rzekomej łzy :-) Powiedz mi, czy pasuje do „łzy”. Zdarza się to prawie na każdym filmie, który oglądam, więc nie sądziłem, że warto było się skupić na szczegółach. Czy masz jakieś sugestie na temat tego, co konkretnie przetestować? Wypróbowałem te opcje (a następnie je usunąłem), ale może jest jakaś kombinacja, którą powinienem wypróbować? Jeśli możesz spojrzeć na mój wklejony plik xorg.conf, daj mi znać, czy coś jest pozornie nie w porządku. Jak sprawdzić, czy GPU nie wykonuje pracy? Wreszcie, tak, te same filmy nigdy nie mają problemu w systemie OS X na tym samym komputerze.
Chan-Ho Suh
Nouveau driver nie wydaje się mieć tego samego problemu. Jedyną rzeczą, którą udało mi się zdiagnozować, która wydaje się inna, jest to, że w przypadku secesji FPS wynosi około 600 bez żadnej dodatkowej konfiguracji, której potrzebuję.
Chan-Ho Suh
Tak, to wygląda na łzawienie. Przepraszam, że wątpię :-)
David Edwards
Dodałem dalsze sugestie na podstawie Twojej opinii.
David Edwards
Niestety nie ma szczęścia. Myślę, że może jedyne, co trzeba zrobić, to poczekać, aż Nvidia poprawi obsługę GeForce 320M, chociaż zastanawiam się, dlaczego Nouveau nie ma problemów.
Chan-Ho Suh
0

Oprócz poprzedniego postu Davida: jeśli chcesz zainstalować najnowsze sterowniki NVidia przy użyciu X-swat PPA, możesz również dodać go do swoich źródeł apt:

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

Spowoduje to zainstalowanie najnowszej wersji i będzie na bieżąco informować o ich dostawach.

Yanok
źródło
0

Przepraszam, ta odpowiedź jest nieco dla openSuSE, a nie Ubuntu, ale w końcu udało mi się pracować z tymi zmianami,

  • Tymczasowo wyłącz efekty kompozycji / okna (Alt + Shift + F12 w openSuSE)
  • Użyj VLC z ustawieniem „Wideo” ustawionym na „Wyjście wideo OpenGL (eksperymentalne)”. „Przyspieszone wyjście wideo (nakładka)” jest również dla mnie zaznaczone. Używam VLC 2.1.1, jeśli to ma znaczenie.
  • Ustaw ustawienia PowerMizer na wydajność, tak jak w odpowiedzi mjnichola
  • Ustaw wysokie ustawienia OpenGL, jak w odpowiedzi Amira Dizdarevicia

Mam nadzieję, że to pomoże! Wyobrażam sobie, że istnieje pewne ustawienie, które sprawi, że będzie działać z komponowaniem, ale zalecam przynajmniej wyłączenie komponowania na czas testowania. Moja konfiguracja to monitor 4K i karta graficzna GTX 650.

gatoatigrado
źródło
0

Możesz to naprawić w przypadku VLC, zmieniając wyjście wideo na „OpenGL GLX”.

użytkownik279078
źródło
0

Korzystam z 64-bitowego systemu operacyjnego Elementary Luna (opartego na Ubuntu 12.04 LTS) i miałem ten sam problem. Rozglądając się, w końcu znalazłem metodę, która DZIAŁA i oczywiście zawiera rozwiązanie „Powermizer settings to Performance”, jak już wiele innych osób mówiło.

Problem polega na tym, że po ponownym uruchomieniu te ustawienia zostają przywrócone do domyślnego ustawienia „Auto” i najwyraźniej aplikacja Nvidia-Settings nie zapisuje poprawnie nowych ustawień Powermizera. NIE MARTWIĆ SIĘ!!!

POSTĘPUJ POSTĘPUJ PONIŻSZE INSTRUKCJE, TO SOOOOO PROSTE:

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

Jak mówi artykuł, zrób aplikację startową i możesz zacząć !!!! ZAUFAJ MI TO DZIAŁA!!! Ogromne podziękowania dla Aquablue za opublikowanie tego i oczywiście dla Mike'a z działu obsługi klienta Nvidii, który dostarczył rozwiązanie !!!

FYI, mam Phenom II X4, 8 GB pamięci DDR3 RAM, Corsair SSD, GTX 650, Elementary Luna 64-bit.

Spyros P.
źródło
0

Mogłem wybrać okno za pomocą kursora, przesunąć okno, a to naprawiło łzawienie. Wygląda to na pewne problemy z wywołaniem zwrotnym w X.

Dla mnie poprawka VLC była następująca:

vlc -> narzędzia -> preferencje -> wideo -> z rozwijanego menu „wyjście” wybierz x11 video output(XCB)

abr
źródło
-2

Wygląda na to, że korzystasz z lekkiego menedżera okien (prawdopodobnie openbox). W takim przypadku możliwe jest, że używasz xcompmgr jako menedżera kompozytu, aby uzyskać efekty pulpitu, takie jak cienie, folie itp. W moim przypadku wyłączenie xcompmgr rozwiązało ten sam problem: łzawienie podczas oglądania filmów, zwłaszcza tych w HD (które wymagają dużej mocy obliczeniowej). Najwyraźniej łzawienie nastąpiło z powodu błędu w xcompmgr, który jest projektem dawno opuszczonym. Aby wyłączyć xcompmgr, możesz wykonać polecenie „killall xcompmgr”. To powinno działać. Mam nadzieję, że to pomoże! Saludos! Pablo

Usemos Linux
źródło
Nie wydaje się, żebyś bardzo uważnie przeczytał mój post. Nawiasem mówiąc, nie powinieneś zabijać xcompmgr. Po prostu nie zaczynaj tego.
Chan-Ho Suh