우분투에서 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.