Como faço para parar de gravar vídeos? (Driver da Nvidia, gerenciador de janelas que não é de composição)

35

Eu tenho esse problema que aparentemente afeta muitos usando o driver proprietário da Nvidia:

Rasgo de vídeo : linhas horizontais finas (geralmente perto da parte superior da tela) quando há muito movimento ou ação panorâmica no vídeo.

(Nota: voltar ao driver nouveau padrão não é uma opção, pois o gerenciamento de energia aparentemente inexistente gasta minha bateria várias vezes mais rápido)

Eu tentei Totem, Parole e VLC, e o lacrimejamento ocorre com todos eles. O melhor resultado foi o uso X11 outputno VLC, mas ainda existe uma ação relativamente moderada.

Hardware: MacBook Air 3,2 - que possui uma Nvidia GeForce 320M.

Existem duas correções comuns para rasgar com drivers prop da Nvidia:

  1. Desative a composição , pois os drivers proprietários da Nvidia geralmente não funcionam bem com os gerenciadores de janelas de composição no Linux (o Compiz é uma exceção que eu conheço). Mas eu uso um gerenciador de janelas extremamente leve (Awesome window manager) que nem é capaz de compor (ou qualquer efeito interessante). Eu também tenho esse problema no Xfce, onde a composição está desabilitada.

  2. Ativando a sincronização com o VBlank. Para habilitar isso, defino a opção nvidia-settingse a inicio automaticamente, como acontece nvidia-settings -lcom meus outros programas de inicialização automática. Isso parece funcionar, porque quando corro glxgears, recebo:

    $ 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
    

    E quando eu verifico a taxa de atualização usando nvidia-settings:

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

    Tudo isso sugere que a sincronização com o VBlank está ativada. Pelo que entendi, isso foi projetado com precisão para parar de rasgar, e muitos problemas das pessoas estão chegando glxgearsa produzir algo como a informação correta. Não entendo por que não está funcionando para mim.

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

Exemplo de rasgo observado ::rasgando vídeo

Chan-Ho Suh
fonte
você pode colar o seu arquivo xorg.conf por favor? Você experimentou Option "TripleBuffer" "1"no seu arquivo xorg.conf?
fossfreedom
Eu tentei TripleBuffer; parece ajudar um pouco, mas não muito. Eu vou colar meu xorg.conf.
Chan-Ho Suh
Você está usando monitores duplos?
Alistair Buxton
Mesmo problema em 12.10 com o Flash no navegador, embora não haja rasgos no VLC que eu possa ver, nem ao arrastar janelas. Você encontrou uma solução desde então?
Bleep Bloop

Respostas:

18

Uma coisa a tentar que pode funcionar. Abra nvidia-settings e vá para a seção powermizer. Escolha "Desempenho Máximo" no menu suspenso e você verá o seu nível do powermizer saltar para a velocidade mais rápida.

Depois de fazer isso, tente o vídeo.

No passado, descobri que o vsync não funciona quando a placa nvidia está na configuração mais lenta do powermizer.

mjnichol
fonte
Obrigado! Isso funcionou para mim usando o driver proprietário da nvidia (310.19) no Arch Linux. Eu tenho tentado resolver isso por um bom tempo agora. Uma questão tão estranha.
Reid
É possível controlar essa configuração na linha de comando? Para que eu possa habilitá-lo ao iniciar um reprodutor de vídeo (e desabilitá-lo depois que o reprodutor for fechado)?
panzi
1
Ah nvidia-settings -a GPUPowerMizerMode=1define para desempenho e nvidia-settings -a GPUPowerMizerMode=2para automático.
panzi
11

Se você estiver usando monitores duplos, o driver nvidia poderá sincronizar apenas com o vblank de um dos monitores, a menos que eles usem exatamente a mesma taxa de atualização. E eu quero dizer exatamente . Isso é efetivamente impossível, a menos que ambos os monitores sejam exatamente do mesmo tipo. Caso o driver da nvidia esteja sincronizando com a tela errada (por exemplo, sincronizando com a tela incorporada quando você quiser assistir a um filme na TV externa), você pode substituir a opção. Na documentação do driver da nvidia:

Ao usar __GL_SYNC_TO_VBLANK com o TwinView, o OpenGL pode sincronizar apenas com um dos dispositivos de exibição; isso pode causar danos no dispositivo de exibição para o qual o OpenGL não está sincronizando. Você pode usar a variável de ambiente __GL_SYNC_DISPLAY_DEVICE para especificar para qual dispositivo de exibição o OpenGL deve sincronizar. Você deve definir essa variável de ambiente com o nome de um dispositivo de exibição; por exemplo "CRT-1". Procure a linha "Dispositivo (s) de exibição conectado (s):" no seu arquivo de log X para obter uma lista dos dispositivos de exibição presentes e seus nomes.

Eu configurei isso permanentemente em / etc / environment - basta adicionar algo assim em uma nova linha:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"

Alistair Buxton
fonte
Oi Alistair. Obrigado pela sugestão, mas eu uso apenas uma única exibição.
Chan-Ho Suh
7

Eu também estava sofrendo com o rompimento de vídeo no meu processador Intel Sandy Bridge. Isso funcionou para mim. Coloquei as seguintes linhas em "/ etc / environment" -

CLUTTER_PAINT = desabilitar-recortado-redesenhar: desabilitar-
abater CLUTTER_VBLANK = Verdadeiro

e funcionou. Pressione enter no final e copie e cole essas linhas. Pode ser necessário reiniciar. Tente.

BRKsays
fonte
2
Obrigado pela sugestão, mas essas são variáveis ​​de ambiente do Gnome3 (como as usadas pelo Gnome Shell). Eu uso um gerenciador de janelas muito mínimo, portanto isso não se aplica a mim. Além disso, não tenho um processador Sandy Bridge.
Chan-Ho Suh
Esta solução corrigiu o problema de laceração que eu estava tendo na área de trabalho do Cinnamon (Gerenciador de janelas do Mutter) e nos drivers da nvidia 313 na 13.04. Desculpe por publicar um post antigo, mas obrigado.
askuhn
4

Aqui está como resolvi problemas de vsync para vídeo no meu notebook ASUS K50IN com a NVIDIA GeForce G102M . Estou ciente de que sua milhagem pode variar, pois os cartões são diferentes, mas você pode experimentá-lo ... O truque para mim foi usar os barebones MPlayer (mas não o MPlayer2!). Não funciona com nenhum dos outros jogadores.

  1. Faça a mágica comum de compiz no ccsm

    • Em Composto, desative a opção Detectar taxa de atualização e digite a atual atual do seu monitor manualmente.
    • Ativei 'Copy to Texture', não tenho certeza se isso ajudou ou não.
    • Em OpenGL: Tex. Filter - Melhor
    • A sincronização com o VBlank está ativada
    • Unity Plugin: (não tenho certeza se isso ajudou, mas supostamente melhora a velocidade) Panel Opacity - 1.0000, o mesmo para o Launcher Opacity. Dash Blur - Static
  2. Faça a mágica usual da nvidia-settings:

    • Ative Sync to VBlank nas configurações XVideo e OpenGL
    • Defina Configurações de imagem como Alta qualidade em Configurações do OpenGL
    • Em Configuração da tela, defina sua resolução manualmente e defina sua taxa de atualização de Automático para sua taxa de atualização atual.
  3. Instale mplayer e vdpau (NÃO mplayer2 !!! Isso é novo e experimental e, pelo menos para mim, estava atrasado com o VDPAU)

    • Pacotes: mplayer libvdpau1 vdpau-va-driver
  4. Configurar o MPlayer (eu tentei o gnome-mplayer também, mas não tem o mesmo resultado do que eu tentei)

    • Abra o arquivo ~ / .mplayer / config ou crie-o se você não o tiver. Você também pode precisar criar a pasta .mplayer . Deve conter o seguinte:
[default]
ao=pulse
vo=vdpau

Mude para para alsa se você removeu o áudio do pulso.

Reinicie o X efetuando logoff / logon novamente.

Experimente, YMMV como sempre. Descobri que, especialmente em versões não LTS ou com drivers beta, isso pode não funcionar mais, dependendo do codec do vídeo.

Amir Dizdarević
fonte
1

Isso funcionou para mim em um driver ATI radeon, portanto, pode funcionar para você:

Adicione um arquivo de configuração (por exemplo, case /etc/X11/xorg.conf.d/20-nouveau.conf)

constituído por:

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

EXA é a estrutura para composição de vídeo; não parece vsnc por padrão.

Também pode valer a pena tentar um software diferente (por exemplo, vlc) para reproduzir vídeo.

Mark Williams
fonte
1
Como mencionei no meu post, alternar para o driver padrão não é uma opção.
Chan-Ho Suh
1

Não tenho certeza se isso vai ajudá-lo, mas funcionou para mim. Abra as configurações da nvidia e altere a Frequência de Automático para 60. E pressione Aplicar. Isso resolveu meus problemas com o rasgo do vídeo e a tremulação geral da área de trabalho. Infelizmente eu tenho que fazer isso toda vez que reiniciar.

vicentec
fonte
1
Como expliquei na minha postagem, minha taxa de atualização de exibição é de 60 Hz. Quanto ao seu problema, siga esta resposta .
Chan-Ho Suh
1

Eu estava enfrentando os mesmos problemas de rompimento de vídeo. No meu caso, observei que o desmembramento ocorre apenas no modo de tela cheia. O problema parece estar no dimensionamento do vídeo para tela cheia. Sempre que o tamanho original do vídeo reproduzido e as proporções de resolução da tela não corresponderem, haverá uma redução no vídeo. Definir a proporção no smplayer para a proporção da tela corrigiu o problema para mim.

por exemplo, eu estava reproduzindo um vídeo de 1280 x 714 em tela cheia, havia um rasgo no vídeo. Quando forcei a proporção do vídeo para 16: 9, a reprodução foi suave.

Devo observar que a causa raiz do problema permanece lá e é irritante. Como a proporção não é mantida original, haverá alguma deformação no vídeo. No entanto, é melhor assistir sem lágrimas;)

focknvidia
fonte
1

Eu uso o Ubuntu 12.04LTS 64bit e tenho uma nvidia gtx 660ti.

Eu sofria com a ruptura de vídeos por mais de um mês até encontrar uma solução.

Abra as configurações do servidor nvidia x -> PowerMizer -> Configurações do PowerMizer (próximo à parte inferior) e, onde diz "Modo preferido", altere a configuração de Adaptável para Preferir desempenho máximo.

user144925
fonte
1

A atualização para a versão 319 do PPA resolveu o problema:

Se após a inicialização, ele for executado no modo à prova de falhas, entre em recuperação e execute sudo nvidia-xconfig. Feliz reprodução de vídeo!

BrozzSama
fonte
0

Se você não estiver usando o monitor duplo, há outra possibilidade. Existem dois tipos diferentes de sincronização para o vblank: um para o XVideo e outro para o OpenGL. Em nvidia-settings, um está em "X Server XVideo Settings" e o outro em "OpenGL / Settings". Qual deles realmente afeta o seu software de reprodução de vídeo pode depender de qual plug-in de saída está usando.

Alistair Buxton
fonte
O VLC tem opções para essas duas saídas e eu tentei as duas.
Chan-Ho Suh
0

Não tenho certeza da sua descrição se você está realmente vendo lacrimejamento; normalmente, rasgar parece que a imagem é dividida horizontalmente em duas ou três seções, com as partes não correspondentes. Isso acontece porque a parte superior da imagem e a parte inferior não são provenientes do mesmo quadro no vídeo. A Wikipedia tem um bom exemplo simulado de ruptura de tela . Linhas horizontais finas parecem diferentes, mais como pentear artefatos de desentrelaçamento deficiente, embora talvez seja apenas difícil de descrever.

Você não menciona nenhum detalhe do vídeo que está tentando assistir, como resolução, codificação e se está entrelaçado ou progressivo, e se o desentrelaçamento está ativado no VLC. Também pode valer a pena verificar se o processamento de vídeo está sendo descarregado para a GPU ou se a CPU está fazendo todo o trabalho. Você confirmou que pode visualizar com êxito o mesmo vídeo em um hardware diferente ou no MacBook usando o OS X?

Você diz que tentou com a composição desabilitada no XFCE, mas provavelmente não faria mal tentar adicionar:

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

no seu /etc/X11/xorg.conf apenas para ter certeza. Além disso, outra sugestão não mencionada até agora é adicionar:

Option "UseEvents" "True"

nas seções Dispositivo ou Tela do seu xorg.conf.

ATUALIZAR:

A captura de tela em anexo definitivamente mostra lacrimejamento! Se, de outra forma, o player estiver decodificando o vídeo (ou seja, sem lentidão na gravação, apenas rasgando), provavelmente não importa se é a CPU ou a GPU que está decodificando. O VLC tem uma opção na página Configurações de vídeo em Preferências para ativar e desativar "Saída de vídeo acelerada"; se estiver ativado, deve estar usando a GPU para decodificar. Se você alternar essa configuração no VLC e executar topem um terminal enquanto reproduz o vídeo, verá uma diferença no uso da CPU entre as duas configurações. Você também pode tentar desativar qualquer desentrelaçamento no VLC para ver se isso faz diferença.

Eu tenho duas outras sugestões:

Não vejo nada obviamente errado com o seu xorg.conf, mas você pode verificar duas vezes se as configurações de sincronização com vblank (nas configurações de vídeo do X Server XV e nas configurações de OpenGL) estão armazenadas corretamente em .nvidia-settings-rc. Algumas pessoas executam nvidia-settings como root ou usam o gksudo (para que ele possa atualizar o /etc/X11/xorg.conf), mas isso pode resultar no armazenamento das configurações em /root/.nvidia-settings-rc em vez de ~ /. nvidia-settings-rc. Deveria estar pegando sua própria cópia, mas para evitar qualquer dúvida, você deve verificar as duas configurações do vblank ao executar nvidia-settings como você; não esqueça de clicar em "Salvar configuração atual" na página inferior das configurações. Se você executar:

nvidia-settings -q=XVideoTextureSyncToVBlank -q=SyncToVBlank

você deverá ver as duas configurações definidas como 1. Você provavelmente também deve verificar se o carregamento automático das configurações está funcionando, reiniciando e executando o comando acima novamente.

A outra coisa que você poderia tentar seria atualizar / fazer o downgrade dos drivers da nvidia. Eu experimentei rasgar algumas atualizações menores da versão do driver antes; definitivamente existem versões "boas" e "ruins" dos drivers da nvidia e as mais recentes nem sempre são as melhores. Você pode tentar atualizar usando o X-swat PPA:

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

E você pode tentar fazer o downgrade para uma versão anterior disponível para 12.04:

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

dependendo se você possui o amd64 ou o i386 instalado. Clique no número da versão à direita que você deseja tentar, faça o download do arquivo .deb e instale com:

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

Por exemplo, devido a um bug nvidia não relacionado, tive que fazer o download deste:

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

a partir de

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

e instalei usando:

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

Um outro ponto minúsculo: outra resposta menciona a alteração da taxa de atualização de Automático para 60Hz, e você diz que já está definido como 60Hz. No entanto, o xorg.conf anexado possui nvidia-auto-select em metamodes (na seção Screen), o que sugere que não é fixo. No entanto, sua definição de Monitor oferece apenas 60.0, portanto, talvez isso seja inconseqüente. Pode ser interessante fazer backup e mover o xorg.conf e executar novamente nvidia-xconfig e nvidia-settings para ver se você obtém uma configuração diferente.

David Edwards
fonte
Olá David. Fiz upload de uma imagem do meu suposto rasgo :-) Diga-me se ele corresponde a "rasgo". Isso acontece praticamente em qualquer vídeo que eu assisto, então não achei que valesse a pena entrar em detalhes. Você tem alguma sugestão sobre o que testar especificamente? Eu tentei essas opções (e as removi posteriormente), mas talvez haja alguma combinação que eu deva tentar? Se você puder ver o meu xorg.conf colado, deixe-me saber se há algo aparentemente errado. Como verifico se a GPU não está fazendo o trabalho? Por fim, sim, os mesmos vídeos nunca apresentam problemas no OS X na mesma máquina.
Chan-Ho Suh
O driver nouveau não parece ter o mesmo problema. A única coisa que consegui diagnosticar que parece diferente é que, com o nouveau, o FPS é de cerca de 600 sem nenhuma configuração adicional necessária para mim.
Chan-Ho Suh
Sim, isso parece rasgar. Desculpe por duvidar :-)
David Edwards
Adicionei mais sugestões com base nos seus comentários.
David Edwards
Infelizmente, sem sorte. Acho que talvez a única coisa a fazer é esperar que a Nvidia melhore o suporte para a GeForce 320M, embora me pergunte por que o Nouveau não tem problemas.
Chan-Ho Suh
0

Além do post anterior de David: se você deseja instalar os drivers proprietários da NVidia mais recentes usando o X-swat PPA, também pode adicioná-lo às suas fontes apt:

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

Isso instalará a versão mais recente e manterá você atualizado sobre suas entregas.

Yanok
fonte
0

Desculpe, esta resposta é um pouco para o openSuSE, não para o Ubuntu, mas finalmente consegui trabalhar com essas alterações,

  • Desativar efeitos de composição / janela temporariamente (alt + shift + f12 no openSuSE)
  • Use o VLC com a configuração "Vídeo" definida como "Saída de vídeo OpenGL (experimental)". "Saída de vídeo acelerada (sobreposição)" também está marcada para mim. Estou usando o VLC 2.1.1, se isso importa.
  • Defina as configurações do PowerMizer para desempenho, como na resposta de mjnichol
  • Defina as configurações do OpenGL como altas, como na resposta de Amir Dizdarević

Espero que ajude! Imagino que haja alguma configuração para fazê-lo funcionar com a composição, mas recomendo pelo menos desabilitar a composição para teste. Minha configuração é um monitor 4K e uma placa de vídeo GTX 650.

gatoatigrado
fonte
0

Você pode corrigir isso no VLC alterando a saída de vídeo para "OpenGL GLX".

user279078
fonte
0

Estou executando o Elementary OS Luna de 64 bits (baseado no Ubuntu 12.04 LTS) e tive o mesmo problema. Pesquisando, finalmente encontrei um método que FUNCIONA e, obviamente, inclui a solução "Configurações do Powermizer para desempenho", como muitos outros membros da equipe já disseram.

O problema é que, após a reinicialização, essas configurações são restauradas para a configuração "Automática" padrão e, aparentemente, o aplicativo Nvidia-Settings não salva corretamente as novas configurações do Powermizer. NÃO SE PREOCUPE!!!

SIGA AS INSTRUÇÕES ABAIXO, É MUITO MUITO SIMPLES:

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

Como o artigo diz, faça um Aplicativo de Inicialização e você estará pronto para começar !!!! CONFIE EM MIM, ISTO FUNCIONA!!! Muito obrigado a Aquablue por postar isso e, é claro, a Mike, da Nvidia Customer Care, que forneceu a solução !!!

Para sua informação, eu tenho um Phenom II X4, 8 GB de RAM DDR3, Corsair SSD, GTX 650, Elementary Luna de 64 bits.

Spyros P.
fonte
0

Eu poderia pegar a janela com o cursor, movê-la e consertar o rasgo. Então, parece que existem alguns problemas de retorno de chamada no X.

Para mim, a correção do vlc foi:

vlc -> ferramentas -> preferências -> vídeo -> no menu suspenso 'saída' escolha x11 video output(XCB)

abr
fonte
-2

Parece que você está executando um gerenciador de janelas leve (presumivelmente openbox). Se for esse o caso, é possível que você esteja usando o xcompmgr como um gerenciador composto para obter efeitos na área de trabalho, como sombras, transparências etc. No meu caso, desativar o xcompmgr resolveu o mesmo problema: rasgar enquanto assiste a vídeos, especialmente aqueles em HD (que consomem muita CPU). Aparentemente, o rasgo ocorreu devido a um erro no xcompmgr, que é um projeto abandonado há muito tempo. Para desativar o xcompmgr, você pode executar "killall xcompmgr". Isso deve funcionar. Espero que ajude! Saludos! Pablo.

Usemos Linux
fonte
Não parece que você leu meu post com muito cuidado. Aliás, você não deveria ter que matar xcompmgr. Apenas não o inicie.
Chan-Ho Suh