우분투에서 NVENC를 설치 / 컴파일하는 방법은 무엇입니까?


답변:


19

항상 FFmpeg를 사용하여 개발을 계속하면 목표가 여러 번 바뀌고 nvenc 및 FFmpeg의 경우에도 마찬가지입니다. 3 단계가 있습니다 :

  1. 나만의 롤 : 2016 년 8 월 27 일 이전에 nvenc를 빌드하기 위해 자신의 헤더를 추적해야했습니다. 어리 석고 약간 혼란 스럽습니다.
  2. 소스에 내장 : 2016 년 8 월 27 일 FFmpeg 소스의 일부로 필요한 헤더가 통합되어 git에서 FFmpeg 소스를 컴파일하거나 현재 git에서 잘라낸 '릴리스'버전을 사용할 수 있습니다.
  3. nv-codec-headers 사용 : 2018 년 2 월 26 일 NVidia 헤더가 FFmpeg 소스에서 제거되었습니다 . 이 헤더에 대한 작업을 계속하기 위해 별도의 git 저장소 가 작성되었습니다. 현재 nvenc 및 친구들에게 액세스하려면 git의 FFmpeg 뿐만 아니라 이러한 헤더를 설치해야합니다 .

두 단계가 필요합니다.

1. nv-codec-headers 패키지를 설치하십시오 :

다음과 같은 터미널 명령으로 충분합니다.

sudo apt-get install make git
mkdir $HOME/nv-codec-headers_build && cd $HOME/nv-codec-headers_build
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make && sudo make install

어떤 이유로 든 마음이 바뀌어 빌드 디렉토리뿐만 아니라 설치된 파일 을 완전히 제거 하려면 다음 두 터미널 명령을 실행하십시오.

sudo rm -v /usr/local/{lib/pkgconfig/ffnvcodec.pc,include/ffnvcodec/*.h}
rm -rfv $HOME/nv-codec-headers_build

그리고 당신의 시스템은 청소되었습니다. 그러나 계속하려면 다음 단계를 수행하십시오.

2. FFmpeg 컴파일 :

잘 테스트 된이 안내서를 사용하십시오.

nv-codec-headers됩니다 자동으로 인식 (여분의 ./configure옵션이 필요하지 않습니다) 및 nvenc이 성공적으로 구축 될 것이다.

테스트 :

Bionic Beaver LTS에서 이것을 테스트했으며 결과는 다음과 같습니다.

andrew@ilium:~$ ffmpeg -encoders 2>/dev/null | grep nvenc
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
andrew@ilium:~$

위와 비슷한 그림이 표시 되고 지원되는 그래픽 카드 가 있으면 바로 갈 수 있습니다. :)

노트:

  • 최신 버전은 Video Codec SDK 버전 9.1.23에 해당하며 NVidia 드라이버 버전 435.21 이상이 필요합니다.
  • 이전 버전 : 이제 nv-codec-headers의 자동 github 사본이 있으며 이전 버전 의 헤더 를 사용하기에 완벽한 tarball을 만듭니다 . 헤더를 업데이트 할 수 없거나 업데이트하지 않으려는 이전 버전의 NVidia 드라이버와 동기화하려는 경우에 좋습니다.
  • FFmpeg를위한 하드웨어 가속 가이드 : FFmpeg Wiki는 컴파일 및 사용을 위한 표준 섹션 인 FFmpeg와 일반적인 하드웨어 가속을위한 가이드입니다 .

이 자세한 안내서에 대해 대단히 감사합니다. 테스트 섹션에서 비슷한 결과를 얻었습니다. nVidia 드라이버 외에도 FFMPEG가 설치된 GPU를 사용하도록 Cuda SDK를 설치해야합니까?
Kimberly W

@KimberlyW 내 시스템에 필요하지 않습니다, 지금 막 테스트했습니다 ...
andrew.46

@ andrew.46 나는 당신이 말한 것을했지만 여전히 vp9에 대한 하드웨어 가속이 없습니다 : /
Freedo

@Freedo 불행히도 nvenc는 H.264 및 HEVC 인코딩 용입니다.
andrew.46

1
트윗 담아 가기 그러나이 답변에서 제공 한 nv 코덱 헤더를 간단하게 제거하지는 않습니까?
andrew.46

0

@ andrew.46 귀하의 응답이 훌륭합니다, 감사합니다. 이것을 평판으로 올리려면 저의 평판이 임계 값보다 낮습니다. 가능하면 다음 정보를 사용하여 답변을 확장하십시오.

이전 버전으로 되돌리려면 https://github.com/FFmpeg/nv-codec-headers/releasesnv-codec-headers 에서 이전 릴리스를 다운로드하여 컴파일 하십시오 .

ffmpeg최신 버전으로 컴파일하는 경우 필요할 수 nv-codec-headers있지만 그래픽 드라이버가 아직 필요한 최소 CUDA API 버전을 처리하지 않는 버전입니다 nv-codec-headers. ffmpeg비디오 스트림 트랜스 코딩에 실패 하는 증상이 나타 납니다. 필자의 경우 nv-codec-headersCUDA API 9.1이 필요 nvidia-driver했지만 배포 (테스트) 의 최신 버전은 여전히 ​​9.0을 사용하는 버전이었습니다.

이전 버전으로 되 돌리는 것이 nv-codec-headersNvidia에서 최신 드라이버를 직접 다운로드하여 배포판의 업데이트 메커니즘 외부에 구축하는 것보다 안전합니다.


감사! 나는 이것을 '노트'섹션에 추가했습니다.
andrew.46
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.