GPU를 사용하여 h264를 인코딩 할 수 있습니까?


13

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

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

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


관련 : 가속화 된 비디오 압축 – 어떤 식 으로든이를 위해 NVIDIA 카드를 갖고 돈을 쓰려고합니다.
slhck

다른 관련 블로그 게시물 : GPU를 사용하여 비디오 인코딩
slhck

들어 H.264 인코딩, 핸드 브레이크는 소프트웨어 인코더 사용 x264 (가 VideoLAN)를 . 아래의 일부 답변은 핸드 브레이크가 x264 또는 hw (GPU) 구현을 사용할 수있는 ffmpeg를 사용함을 의미합니다. 이 오래된 (하지만 여전히 관련) 질문은 아마 있지만 없는 요구 "빠른 인코딩 H.264 만드는 방법"보다는 "어떻게 빠른 핸드 브레이크를 만들기 위해"하지만. 답변에는 유효 기간이 있습니다 (일부는 이미 만료 됨). 하지만 지금은 ML 및 / 또는 일괄 처리를 수행하는 경우 구현을 하드웨어와 일치시켜야 할 수도 있습니다.
Michael

FWIW,이 발견 ffmeg에서 코멘트 흥미를 : "하드웨어 인코더는 일반적으로 x264 같은 좋은 소프트웨어 인코더보다 훨씬 낮은 품질의 출력을 생성하지만, 일반적으로 더 빨리 그리고 많은 CPU 리소스를 사용하지 않는 (즉, 그들은 메이크업에 더 높은 비트 레이트를 필요로한다. 동일한 지각 품질로 출력하거나 동일한 비트 전송률로 낮은 지각 품질로 출력합니다.) "
michael

답변:


7

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

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

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

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

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


그래서 지금 AMD CPU를 사용하고 있는데, 이것이 시간 낭비라는 것을 의미합니까? NVIDIA 카드 일 수 있습니까?-CUDA를 지원해야합니까?
peter

이 링크 인 en.wikipedia.org/wiki/CUDA 를 발견 했는데 , 이는 많은 NVIDIA 카드가 CUDA를 지원한다는 것을 나타냅니다.
피터

GPU를 사용하여 비디오를 인코딩하는 데 도움 이 될 수 있는 AMD 소프트웨어 패키지 링크로 답변을 업데이트 했지만 HD2000 시리즈 카드 이상이 필요합니다. CPU가 강력하지만 예산 그래픽 카드가 있으면 핸드 브레이크 속도가 더 빠를 수 있습니다.
Mokubai

Badaboom은 2012 년 4 월 18 일부로 수명이 다했습니다.
HVS 2016 년

2
위의 답변은 더 이상 정확하지 않습니다.
totaam

4

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


OpenCL 인코딩 가속을 어떻게 사용합니까?
Dr.jacky

2

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


유용한 것으로 보이지만 질문에 구체적으로 대답하지는 않습니다. ffmpeg와 그 인수가 OP에 도움이되는 방법을 보여주는 세부 정보를 추가하는 방법은 무엇입니까?
music2myear

이 답변 은 h.264 인코딩을 위해 핸드 브레이크 대신 ffmpeg 사용한다는 것을 의미 합니다.이 질문은 아마도 인코딩하는 가장 빠른 방법을 요구하기 때문에 아마 괜찮습니다 .GPU가이를 가능하게 할 것으로 가정합니다. 모든 GPU가 똑같이 강력하지는 않으며 (예 : 통합 GPU와 전용) CPU에는 라이브러리가이를 지원하도록 컴파일 된 경우 라이브러리가 활용할 수있는 최적화 기능도 있습니다. 따라서 "하드웨어 가속"은 CPU를 통하든 GPU를 통하든 올바른 길입니다.
michael

0

현재 핸드 브레이크는 다음과 같은 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도 매우 제한된 컨트롤 세트를 가지고있는 것 같습니다. 핸드 브레이크가이를 업스트림으로 채택하더라도 품질 유지 및 처리량 측면에서 기적을 기대하지 마십시오.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.