web-dev-qa-db-ja.com

ビデオのティアリングを停止するにはどうすればよいですか? (Nvidia propドライバー、非合成ウィンドウマネージャー)

私は、プロプライエタリのNvidiaドライバーを使用している多くの人を苦しめているような問題を抱えています。

ビデオのティアリング:ビデオに多くのパンまたはアクションがある場合の細い水平線(通常はディスプレイの上部近く)。

(注:存在しないように見える電源管理によってバッテリーが数倍速く消耗するため、デフォルトのnouveauドライバーに戻すことはオプションではありません)

Totem、Parole、VLCを試してみましたが、それらすべてで裂け目が発生しました。最良の結果は、VLCでX11 outputを使用することでしたが、比較的穏やかなアクションで引き裂かれたままです。

ハードウェア: MacBook Air 3,2-Nvidia GeForce 320Mを搭載しています。

Nvidia propドライバーを使用したティアリングには、2つの一般的な修正があります。

  1. 合成をオフにする。Nvidia独自のドライバーは通常、Linuxでウィンドウマネージャーを合成する際にNiceを再生しないためです(Compizは私が知っている例外です)。しかし、私は非常に軽量なウィンドウマネージャ(Awesomeウィンドウマネージャ)を使用していますが、これは合成(またはクールな効果)さえもできません。合成が無効になっている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/

観察された引き裂きの例:: video tearing

35
Chan-Ho Suh

may動作することを試してみてください。 nvidia-settingsを開き、powermizerセクションに移動します。ドロップダウンで[最大パフォーマンス]を選択すると、パワーマイザーのレベルが最高速度にジャンプするのがわかります。

それが終わったら、ビデオを試してください。

過去に、nvidiaカードが最も遅いpowermizer設定にある場合、vsyncが機能しないことがわかりました。

18
mjnichol

デュアルモニターを使用している場合、nvidiaドライバーは、まったく同じリフレッシュレートを使用しない限り、いずれかのディスプレイのvblankにのみ同期できます。そして、私は正確にを意味します。両方のモニターがまったく同じタイプでない限り、これは事実上不可能です。 nvidiaドライバーが間違ったディスプレイと同期している場合(たとえば、外部テレビで映画を見たいときに内蔵ディスプレイと同期している場合)、その選択をオーバーライドできます。 nvidiaドライバーのドキュメントから:

TwinViewで__GL_SYNC_TO_VBLANKを使用する場合、OpenGLはディスプレイデバイスの1つにのみ同期できます。これにより、OpenGLが同期していないディスプレイデバイスで破損が発生する可能性があります。環境変数__GL_SYNC_DISPLAY_DEVICEを使用して、OpenGLが同期するディスプレイデバイスを指定できます。この環境変数をディスプレイデバイスの名前に設定する必要があります。たとえば、「CRT-1」。 Xログファイルで「Connected display device(s):」という行を探して、存在するディスプレイデバイスとその名前のリストを探します。

私はこれを/ etc/environmentに永続的に設定しました-新しい行に次のようなものを追加するだけです:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"

11
Alistair Buxton

私も、Intel Sandy Bridgeプロセッサでビデオの破損に苦しんでいました。これは私のために働いた。 「/ etc/environment」に次の行を追加します-

CLUTTER_Paint = disable-clipped-redraws:disable-culling
CLUTTER_VBLANK = True

そしてそれは働いた。最後にEnterを押し、これらの行をコピーして貼り付けます。再起動が必要な場合があります。それを試してみてください。

7
BRKsays

NVIDIA GeForce G102Mを使用して、ASUS K50INノートブックのビデオのvsync問題を解決した方法を次に示します。カードが異なるためマイレージが変わる可能性があることは承知していますが、試してみることができます...私にとっての秘Theは、ベアボーンMPlayer(MPlayer2ではない!)を使用することでした。他のプレーヤーでは機能しません。

  1. Ccsmで通常のcompizマジックを行う

    • [コンポジット]で[リフレッシュレートの検出]をオフにし、モニターの現在のレートを手動で入力します。
    • 「テクスチャにコピー」をオンにしましたが、それが役立つかどうかはわかりません。
    • OpenGLの場合:Tex。Filter-Best
    • VBlankへの同期はオンです
    • Unityプラグイン:(これが役立つかどうかはわかりませんが、速度が向上すると言われています)Panel Opacity-1.0000、Launcher Opacityでも同じです。ダッシュぼかし-静的
  2. 通常のnvidia-settingsマジックを実行します。

    • 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

Pulseオーディオを削除した場合は、aoをalsaに変更します。

再度ログアウト/ログインしてXを再起動します。

YMMVをいつものように試してみてください。特にLTS以外のリリースやベータ版ドライバーでは、ビデオのコーデックによってはこれが機能しなくなることがあります。

4

これがあなたを助けるかどうかはわかりませんが、それは私のために働いた。 nvidia-settingsを開き、FrecuencyをAutoから60に変更します。Applyを押します。これにより、ビデオの破損や一般的なデスクトップのちらつきに関する問題が解決しました。残念ながら、再起動するたびにこれを行う必要があります。

1
vicentec

これは、ATI radeonドライバー上で私のために働いたので、あなたのために働くかもしれません:

構成ファイルを追加します(例/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
Mark Williams

私はまったく同じビデオの涙の問題を経験していました。私の場合、ティアダウンはフルスクリーンモードでのみ発生します。問題は、ビデオをフルスクリーンにスケーリングすることにあるようです。再生されたビデオの元のサイズと画面解像度の比率が一致しない場合、ビデオが破損します。 smplayerのアスペクト比をディスプレイのアスペクト比に設定すると、問題が解決しました。

例えば私は1280x714サイズのビデオをフルスクリーンで再生していましたが、ビデオに裂け目がありました。ビデオのアスペクト比を16:9に強制したため、再生はスムーズでした。

問題の根本原因がそこにとどまり、迷惑であることに注意する必要があります。アスペクト比は元のままなので、ビデオに多少の変形が生じます。しかし、涙を流さずに見た方が良い;)

1
focknvidia

PPAからバージョン319にアップグレードすると、問題が解決しました。

起動後、フェイルセーフモードで実行された場合は、リカバリに入り、Sudo nvidia-xconfigを実行します。幸せなビデオ再生!

1
BrozzSama

Ubuntu 12.04LTS 64bitを使用していますが、nvidia gtx 660tiがあります。

解決策が見つかるまで、1か月以上にわたってビデオの破損に苦しんでいました。

Opennvidia x server settings->PowerMizer->PowerMizer Settings(下部近く)、および「Preferreded Mode」と表示されている場所で、設定をAdaptiveから最大パフォーマンスを優先します。

1
user144925

デュアルモニターを使用していない場合、別の可能性があります。 vblankへの同期には、XVideo用とOpenGL用の2​​種類があります。 nvidia-settingsでは、1つは「X Server XVideo Settings」の下にあり、もう1つは「OpenGL/Settings」の下にあります。ビデオ再生ソフトウェアに実際に影響するのは、使用している出力プラグインによって異なります。

0
Alistair Buxton

64ビットのElementary OS Luna(Ubuntu 12.04 LTSベース)を実行していますが、同じ問題が発生しました。他の多くの人々がすでに言っているように、私はついにWORKSであり、明らかに「Powermizer settings to Performance」ソリューションを含むメソッドを見つけました。

問題は、再起動後にこれらの設定がデフォルトの「自動」設定に復元され、明らかにNvidia-SettingsアプリケーションがPowermizerの新しい設定を適切に保存しないことです。心配無用!!!

以下の指示に従うだけで、簡単です:

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

記事にあるように、スタートアップアプリケーションを作成すれば、準備完了です!!!! TRUST ME IT WORKS !!!これを投稿してくれたAquablueと、もちろんソリューションを提供してくれたNvidia Customer CareのMikeに感謝します!!!

参考までに、Phenom II X4、8GB DDR3 RAM、Corsair SSD、GTX 650、Elementary Luna 64ビットがあります。

0
Spyros P.

あなたの説明から、実際に涙が出ているかどうかはわかりません。通常、裂け目は、画像が水平方向に2つまたは3つのセクションに分割され、パーツが一致しないように見えます。これは、画像の上部と下部がビデオの同じフレームから来ていないために発生します。ウィキペディアには、 画面の引き裂き がシミュレートされています。 combing 悪いインターレース解除によるアーチファクトのように、細かい水平線は異なって聞こえますが、説明するのは難しいかもしれません。

解像度、エンコード、インターレースまたはプログレッシブ、VLCでインターレース解除がオンになっているかどうかなど、視聴しようとしているビデオの詳細については言及しません。ビデオ処理が GPU にオフロードされているかどうか、またはCPUがすべての作業を行っているかどうかも確認する価値があります。同じビデオを異なるハードウェアで、またはMac XでOS Xを使用して正常に表示できることを確認しましたか?

XFCEで合成を無効にして試してみたと言いますが、追加しようとしても問題ないでしょう。

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

/etc/X11/xorg.confに確認してください。また、これまで言及されていなかったもう1つの提案は、以下を追加することです。

Option "UseEvents" "True"

xorg.confのDeviceまたはScreenセクションに移動します。

更新:

添付のスクリーンショットは間違いなくティアリングを示しています!それ以外の場合、プレーヤーがビデオのデコードに遅れていない場合(つまり、どもりのスローダウンはなく、ティアリングのみ)、デコードを実行するのがCPUかGPUかは問題ではありません。 VLCの[設定]の[ビデオ設定]ページには、[高速ビデオ出力]をオンまたはオフにするオプションがあります。オンの場合、GPUを使用してデコードする必要があります。 VLCでその設定を切り替え、ビデオの再生中に端末でtopを実行すると、2つの設定のCPU使用率に違いが見られるはずです。 VLCのインターレース解除をオフにして、違いが生じるかどうかを確認することもできます。

他に2つの提案があります。

Xorg.confに明らかに問題はありませんが、vblank設定(X Server XVideo設定とOpenGL設定)への同期が.nvidia-settings-rcに正しく保存されていることを再確認できます。 nvidia-settingsをrootとして、またはgksudoを使用して実行します(したがって/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-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

もう1つの小さな点:もう1つの答えは、リフレッシュレートを自動から60Hzに変更することであり、すでに60Hzに設定されていると言います。ただし、添付されたxorg.confにはメタモード(画面セクション)でnvidia-auto-selectがあり、修正されていないことが示唆されています。ただし、モニター定義では60.0しか提供されないため、これは重要ではありません。 xorg.confをバックアップして移動し、nvidia-xconfigとnvidia-settingsを再実行して、異なる構成を取得するかどうかを確認するのは興味深いかもしれません。

0
David Edwards

ビデオ出力を「OpenGL GLX」に変更することにより、VLCでこれを修正できます。

0
user279078

カーソルでウィンドウを選択し、ウィンドウを移動すると、破損が修正されました。 Xのコールバックの問題のようです。

私にとって、vlcの修正は次のとおりでした。

vlc->ツール->設定->ビデオ->「出力」ドロップダウンでx11 video output(XCB)を選択

0
abr

申し訳ありませんが、この回答はUbuntuではなくopenSuSEのものですが、最終的にこれらの変更で機能するようになりました。

  • 合成/ウィンドウ効果を一時的に無効にします(openSuSEでAlt + Shift + F12)
  • 「ビデオ」設定を「OpenGLビデオ出力(実験的)」に設定してVLCを使用します。 「加速ビデオ出力(オーバーレイ)」もチェックされています。問題があればVLC 2.1.1を使用しています。
  • Mjnicholの答えのように、PowerMizer設定をパフォーマンスに設定します
  • AmirDizdarevićの答えのように、OpenGL設定を高く設定します

それが役に立てば幸い!合成で動作させるための設定があると思いますが、少なくともテストでは合成を無効にすることをお勧めします。私のセットアップは、4KモニターとGTX 650グラフィックスカードです。

0
gatoatigrado

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
Yanok