GPU를 사용하여 h264를 인코딩 할 수 있습니까? 그래픽 카드를 지원하는지 어떻게 알 수 있습니까? GPU가

핸드 브레이크를 사용하여 컴퓨터에서 h264 인코딩 속도를 높일 수있는 더 나은 그래픽 카드가 있는지 궁금합니다.

그렇다면 어떤 그래픽 카드를 지원하는지 어떻게 알 수 있습니까?

GPU가 h264의 하드웨어 디코딩을 수행 할 수 있지만 인코딩에 대해서는 잘 모르겠습니다.



답변

수동 브레이크를 사용하면 대답은 ‘아니오’입니다. 핸드 브레이크는 CPU 전용 h.264 인코더이지만 비디오 스케일링에는 OpenCL을 사용할 수 있으며 비디오 디코딩에는 DXVA를 일부 지원합니다.

slhck에 의해 연결된 질문은 MediaCoder을 언급 하지만 Nvidia 그래픽 카드 또는 2 세대 그래픽 코어가있는 Intel CPU가 필요합니다.

더 이상 사용되지 않는 구형 제품, 특히 Badaboom 및 ATi Avivo 소프트웨어가 있습니다.

Nvidia 및 Intel 그래픽 프로세서를 사용하여 인코딩 프로세스 속도를 높일 수는 있지만 수명이 다해 새로운 그래픽 카드를 지원하지 않는 Badaboom .

ATi는 더 이상 사용할 수 없지만 AMD 비디오 변환기가 포함 된 AMD 코덱 패키지에 병합되기 전에 “Avivo”라고하는 자체 비디오 인코더를 가지고있었습니다.


답변

x264는 이제 OpenCL 인코딩 가속을 지원합니다. 가속 속도는 그래픽 카드의 성능에 달려 있습니다. GTS 450에서는 아무것도 얻지 못하고 느린 카드에서는 실제로 인코딩 속도가 느려집니다. 더 나은 카드가 도움이 될 수 있습니다. x264 명령 줄에 –opencl을 추가하기 만하면됩니다. 핸드 브레이크는 동일한 x264 라이브러리를 사용 하며 최신 빌드에서 동일한 OpenCL 가속화를 제공 한다고 생각 합니다.


답변

https://trac.ffmpeg.org/wiki/HWAccelIntro

FFmpeg는 하드웨어 가속을위한 서브 시스템을 제공합니다.

하드웨어 가속을 통해 특정 장치 (일반적으로 그래픽 카드> 또는 다른 특정 장치)를 사용하여 멀티미디어 처리를 수행 할 수 있습니다. 이를 통해 전용 하드웨어를 사용하여 까다로운 계산을 수행하는 동시에 CPU에서 이러한 계산을 해제 할 수 있습니다. 일반적으로 하드웨어 가속을 사용하면 특정 하드웨어 장치 (일반적으로 GPU)가 비디오 스트림 디코딩 및 인코딩 또는 비디오 필터링과 관련된 작업을 수행 할 수 있습니다.

FFmpeg 도구를 사용할 때 -hwaccel옵션 을 통해 HW 지원 디코딩이 활성화 되어 특정 디코더 가 활성화됩니다 . 각각의 디코더는 특정한 제한을 가질 수있다 (예를 들어, H.264 디코더는베이스 라인 프로파일만을 지원할 수있다). HW 지원 인코딩은 특정 인코더 (예 : nvenc_h264)를 사용하여 활성화됩니다. 필터링 HW 지원 처리는 일부 필터에서만 지원되며이 경우 필터 옵션을 통해 OpenCL 코드를 활성화합니다.

몇 가지 하드웨어 가속 표준 API가 있으며 그중 일부는 FFmpeg에 의해 어느 정도 지원됩니다.

“-hwaccel auto”옵션을 사용하면 인코딩 세션에 사용할 하드웨어 기반 가속 디코딩을 선택할 수 있습니다. 입력 전에이 매개 변수를 “auto”로 추가 할 수 있습니다 (x264가 OpenCL 지원으로 컴파일 된 경우 -x264opts 매개 변수를 추가 할 수 있습니다).

ffmpeg -hwaccel auto -i input -vcodec libx264 -x264opts opencl output

죄송합니다. “-hwaccel”에 사용할 수있는 모든 옵션을 나열하는 방법을 기억할 수 없습니다.

또한 이것을 시도 할 수 있습니다 :
https://wiki.archlinux.org/index.php/Hardware_video_acceleration


답변

현재 핸드 브레이크는 다음과 같은 H.264 / AVC 용 하드웨어 가속 인코더를 지원합니다.

  1. Intel QuickSync (Windows 및 Linux). 이 기능은 통합 그래픽을 활성화하고 운영 체제에 노출 된 최소한 Intel 기반 Sandybridge (2 세대 코어) 시리즈 프로세서 라인과 호환됩니다. 허용 가능한 인코딩 품질을위한 권장 하드웨어 : Haswell (4 세대 코어 시리즈) 이상에서는 성능이 매우 뛰어난 미세한 대상 수준 (TU), 미리보기 기능 ( LA-BRC 및 ICQ 인코딩 모드 등)의 개념을 도입했습니다 . 핸드 브레이크 설명서의 사용 안내서를 참조 하십시오 .

  2. NVIDIA의 NVENC :이를 위해서는 고성능 소비자 SKU (GTX 시리즈) 및 전문 라인업 (케플러 이상을 기반으로 한 Quaadro 및 Tesla GPU) 이상의 NVIDIA Kepler (GK +) 시리즈 GPU 이상이 필요합니다 . 이것은 Windows와 Linux 모두에서 사용할 수 있습니다.

NVENC를 사용하면 소비자 SKU에서 최대 2 개의 동시 인코딩 세션으로 인위적으로 제한되는 반면, 프로페셔널 라인업은 이에 영향을받지 않습니다. 특정 인코더 기능에 대한 참조는 GPU 매트릭스를 참조하십시오 . 최상의 인코더 성능과 품질을 얻으려면 최신 PascalVolta GPU 반복을 따르십시오 .

선택적으로 :

  1. AMD AMF의 인코딩 지원은 Windows 전용 현재 야간 빌드에서도 사용할 수 있습니다. AMD의 AMF ( 모든 GCN + SKU 의 하드웨어에 내장 된 VCE 엔코더 를 사용함)에 대한 특별 참고 사항은 Polaris (RX 400+ 시리즈) 및 Vega 와 같은 최신 하드웨어에서는 H.264 / AVC를위한 고급 엔코더 튜닝입니다. HEVC 인코딩 지원을 도입하면서 더 이상 사용되지 않습니다. AMD가 중단 한 것은 앞서 언급 한 하드웨어 기반 인코더 (QuickSync 및 NVENC)가 회귀없이 세대에 구현 한 기능인 적응 양자화 (AQ)를 지원하지 않는 B 프레임 인코딩이었습니다. 또한 예상되는 것에 대한 처리량 메트릭에 대한 참고 사항 에서이 내용을 참조하십시오 .

애플의 지원에 관한 한, 이것은 임시적 이다. 핸드 브레이크의 범위를 넘어 구현 된 VideoToolBox API도 매우 제한된 컨트롤 세트를 가지고있는 것 같습니다. 핸드 브레이크가이를 업스트림으로 채택하더라도 품질 유지 및 처리량 측면에서 기적을 기대하지 마십시오.

현재와 ​​같이 플랫폼에서 최신 인코더 기능을 사용하려면 최신 야간 빌드를 사용해야 할 수도 있습니다. 이것은 확실히 미래에 바뀔 것입니다.