Vídeo da Logitech C920 travando no OBS do Ubuntu Linux2 min leitura
Como resolvi o problema do vídeo da webcam Logitech C920 travando no OBS do Ubuntu Linux.
Quando estava fazendo alguns testes com alguns softwares de gravação de vídeo, como o OBS Studio ou o GUVCviewer, o vídeo travava muito. O estranho era que o problema não ocorria quando fazia videoconferência pelo Zoom ou Appear.in.
Pesquisando no Google por “logitech c920 obs ubuntu performance“, encontrei uma resposta no fórum do Manjaro que falava para alterar a configuração do formato de vídeo de entrada para YV12 (emulated). Pronto, problema resolvido!
Fiz abaixo um vídeo para demonstrar o problema que eu estava tendo, veja como os movimentos ficam todos “travados” em relação ao áudio. Fazer qualquer movimento mais rápido era impossível.
A configuração padrão da câmera é YUYV 4:2:2 e ainda não consegui encontrar o motivo deste problema acontecer.
Durante minha pesquisa, descobri como ver os formatos que a câmera suporta e tive a seguinte saída:
$ v4l2-ctl --list-formats --device 2 ioctl: VIDIOC_ENUM_FMT Type: Video Capture [0]: 'YUYV' (YUYV 4:2:2) [1]: 'H264' (H.264, compressed) [2]: 'MJPG' (Motion-JPEG, compressed)
Aparentemente o formato que estava travando é suportando pela câmera. Verifiquei também todas as informações adicionais dela:
$ v4l2-ctl --all --device 2 Driver Info: Driver name : uvcvideo Card type : HD Pro Webcam C920 Bus info : usb-0000:00:14.0-4 Driver version : 5.0.15 Capabilities : 0x84a00001 Video Capture Metadata Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format Priority: 2 Video input : 0 (Camera 1: ok) Format Video Capture: Width/Height : 1920/1080 Pixel Format : 'MJPG' (Motion-JPEG) Field : None Bytes per Line : 0 Size Image : 4147200 Colorspace : sRGB Transfer Function : Default (maps to sRGB) YCbCr/HSV Encoding: Default (maps to ITU-R 601) Quantization : Default (maps to Full Range) Flags : (...)
Também não identifiquei nada relevante nessas informações. Como consegui resolver o problema, acabei parando minha pesquisa por aí.
Em uma publicação no fórum do OBS encontrei alguém falando que em webcams o formato interno utilizado geralmente é MJPEG e que emulando um formato de vídeo no OBS pode reduzir a banda (bandwidth) dos dispositivos USB e possibilitar uma maior resolução/framerate.
Se você tiver uma ideia do porque o problema está ocorrendo, deixe um comentário abaixo para matar a minha curiosidade.
O que sei dizer é que o formato de subamostragem das informações de cor 4:2:2 é utilizado em vídeos de altíssima qualidade requerendo, entretanto, alta taxa de processamento. Diversas aplicações comerciais de alta qualidade trabalham com uma taxa de subamostragem inferior, como 4:2:0.
https://pt.wikipedia.org/wiki/Chroma_subsampling
O Motion Jpeg trata cada quadro/frame do vídeo como uma imagem e aplica nele uma compressão baseada em compressão de imagens estáticas (JPEG).
O H.264 é um padrão de compressão desenvolvido nativamente para vídeo, consegue explorar mais as informações reduntantes presentes no vídeo (entre quadros, por exemplo), permitindo alcançar um fluxo de dados resultantes de menor taxa, quando comparado com o Motion JPEG, porém com alta qualidade de imagem. O H.264 deve requerer, entretanto, mais processamentos para a codificação e decodificação.
Espero ter ajudado de alguma forma.
Abraço!
Obrigado pela ótima explicação!
Isso ai deve ajudar muita gente. Acabou que quando rodei o OBS para testar sua sugestão, estava tudo resolvido sozinho. Bruxarias da tecnologia. De qualquer maneira, deixei