PC/VLC에서 4k hdr 비디오를 재생하면 GPU를 사용하는 대신 CPU가 최대화됩니다.

PC/VLC에서 4k hdr 비디오를 재생하면 GPU를 사용하는 대신 CPU가 최대화됩니다.

PC 및/또는 VLC가 GPU 대신 4K 비디오를 재생하기 위해 CPU를 사용하는 이유가 무엇인지 파악하는 데 도움이 필요합니다. (시스템 성능 그래프에는 항상 GPU 사용량이 2~5%, CPU 스레드 일부 또는 전부에서 30~80% 정도가 표시되기 때문에 비디오에 관계없이 항상 비디오 렌더링에 CPU를 사용하는 것 같습니다.)

내가 아는 것은 다음과 같습니다.

  • 놀이이 비디오2160p 60fps의 YouTube 브라우저에서는 코어의 절반에서 80%의 CPU 사용량으로 잘 작동합니다. 하지만 시스템 모니터에서는 여전히 GPU 사용량이 많지 않습니다. 놀이똑같다그러나 VLC의 비디오는 내 Ryzen 5 6 코어 12 스레드 4.2GHz CPU를 100% 사용하며 기껏해야 끊김 현상이 발생하고 일반적으로 가만히 있습니다. [편집] 비디오는 mp4, mkv, webm의 3가지 형식으로 모두 4k@60으로 받았습니다. MKV 및 WEBM은 브라우저/yt와 동일한 리소스(CPU)를 사용하지만 FPS는 60fps가 아닌 20fps 미만으로 더 낮습니다. 그러나 MP4는 내가 설명한 대로 내 CPU를 100% 사용하고 끊김 현상이 발생합니다.
  • VLC는 하드웨어 가속을 사용하도록 설정되어 있으며 모든 옵션(자동, direct3D 11, directx DXVA 2.0)을 시도하고 변경 후 vlc(심지어 PC까지)를 다시 시작했지만 차이가 없었습니다.
  • 최신 VLC(3.0.11)를 사용하고 있습니다.
  • GPU는 gtx 1660Ti입니다. 이는 과잉 마력 이상이어야 하며 120Hz VR 등을 수행할 수 있으며 최신 nvidia 드라이버를 사용합니다. 다른/통합 그래픽 카드가 없습니다.

내 시스템에 일종의 코덱/드라이버가 없기 때문에 VLC가 기본적으로 CPU 렌더링으로 설정될 수 있습니까? 그리고 VLC보다 더 나은 fps로 실행되지만 여전히 CPU만 사용하는 것으로 보이는 내 브라우저에 대한 동일한 질문입니다. 또한 어떤 하드웨어에서 어떤 디코딩이 지원되고 어떤 코덱이 필요한지 어떻게 알 수 있나요? VLC가 GPU를 사용하여 현재 비디오를 렌더링하고 있지 않은지 여부를 알려주는 로그나 내용을 어떻게 찾을 수 있으며 그 이유는 무엇입니까?

GPU에서 비디오를 디코딩하는 것이 왜 그렇게 어려운가요? 물리학 계산, 메시 생성, 포인트 클라우드 조각, 소수 분해, 100% 전체 데모씬 셰이더토이 스타일 비디오 게임 실행과 같은 오래된 작업에 대해 GPGPU 계산을 수행하는 컴퓨팅 셰이더를 작성할 수 있다면 비디오는 어떨까요? 일부 코덱은 매우 독특하고 CPU용으로 설계되었을 수도 있지만 확실히 2019-2020 게임용 GPU는 6코어 CPU나 형편없는 스마트폰의 ARM 칩 비디오 모듈보다 더 나은 성능을 발휘할 수 있습니다.


[업데이트] 인코딩과 관련이 있다는 것을 발견했습니다. MP4 컨테이너의 비디오는 GPU를 전혀 사용하지 않지만 MKV 및 WEBM은 GPU를 사용합니다.

여기에 이미지 설명을 입력하세요

YouTube MP4가 다음을 사용하는 것 같습니다.AV1 코덱 인코딩나머지 2개는 사용VP9 인코딩. 둘 다 오픈 소스 형식이므로 VLC는 이를 처리하는 데 문제가 없습니다.

또한비디오 카드가 없는 것 같습니다.지금은 디코더를 칩에 통합하고 있습니다. 그러나 ASIC이 있든 없든 GPU 자체가 GPGPU 방식으로 이를 디코딩할 수 없다는 의미는 아닙니다(AV1에 대한 위키피디아 항목에서도 언급됨). 어느 쪽이든 이것이 내 문제를 해결하지는 못하지만 이유를 설명합니다.

답변1

문제가 인코딩과 관련되어 있음을 발견했습니다. Youtube는 비디오를 3개의 컨테이너로 패키징합니다. vlc에서 재생할 때 MP4 컨테이너는 GPU를 전혀 사용하지 않는 반면, 다른 2개의 컨테이너 MKV 및 WEBM은 GPU를 사용합니다.

여기에 이미지 설명을 입력하세요

YouTube MP4가 다음을 사용하는 것 같습니다.AV1 코덱 인코딩나머지 2개는 사용VP9 인코딩. 둘 다 오픈 소스 형식이므로 VLC는 이를 처리하는 데 문제가 없지만 어떤 이유로 GPU에서 AV1을 재생할 수 없습니다. 따라서 질문은 vlc/windows가 gpu에서 av1을 재생할 수 없는 이유가 됩니다.

또한비디오 카드가 없는 것 같습니다.지금은 AV1 디코더를 칩에 통합합니다(h.264 및 h.265에서 했던 것처럼). 그러나 ASIC 등이 있든 없든 GPU 자체가 GPGPU 방식으로 디코딩할 수 없다는 의미는 아닙니다(AV1에 대한 위키피디아 항목에서도 언급됨). 어느 쪽이든 이것이 내 문제를 100% 해결하지는 않지만 이유를 설명하고 지금 무엇을 찾아야 하는지 알고 있습니다(GPU에서 AV1을 재생하는 방법 - 그러나 일상에서 AV1을 얼마나 자주 접하게 될지는 모르겠습니다) 인생은 없어도 지금은 행복해요)

답변2

차이점의 원인은 VLC가 자체 코덱을 사용하는 반면 브라우저는 시스템에 설치된 코덱을 사용한다는 것입니다.

여러 해상도로 비디오를 다운로드했습니다. "isom(isom/iso2/mp41)"으로 식별된 코덱을 사용하고 시도해 보았습니다.

  • VLC 사용 시, 8K 버전 - 비디오 없음
  • VLC, 4K 버전 - 프레임 간 간격이 커서 비디오가 불안정함(정지)
  • MP-HC(x64), 8K 및 4K 버전 - 유동적이지만 모든 코어를 100% 및 GPU의 약 30-50% 사용했습니다.
  • Chrome YouTube 사용 - CPU 및 GPU를 거의 사용하지 않고 유연하지만 720p가 제공되는 최대 해상도입니다.
  • Firefox YouTube 사용 - 4K 버전, 유동적, 적은 CPU, 20-50% GPU
  • 하지만 8K 및 4K 비디오 파일이 삭제되었을 때Firefox 또는 Chrome에 직접 연결하면 기본적으로 비디오 재생이 작동하지 않았습니다.

내 결론은 이 코덱은 많은 리소스를 필요로 하며 대부분의 플레이어에게 상당히 골치 아픈 문제라는 것입니다. YouTube를 사용할 때 브라우저는 사용하려는 해상도보다 훨씬 낮은 해상도를 사용하여 속임수를 씁니다.

관련 정보