하드웨어 비디오 인코더 nvenc in GTX 1050 Ti ffmpeg

NVIDIA Pascal GPU family


얼마전에 VGA 를 650 ti 에서 1050 ti 로 교체했는데
과연 세대 가 변한 만큼 VGA 의 하드웨어 비디오 인코더는 얼마나 성능 차이를 보일까 하여 테스트를 해봤다.
참고로 nvenc(nvdec) 는 cuda core 와는 분리되어 있기에 하이엔드 라인업이나 메인스트림 라인업이나 그닥 차이가 없을 것으로 생각된다.

소스 = mpeg2video, 1920x1080, 40000 kb/s, 인터레이스 영상
테스트 = ffmpeg -i INPUT -vf bwdif=1 -r 60000/1001 -c:v h264_nvenc -global_quality 32 -c:a aac OUTPUT

결과
650 ti = frame= 9038 fps= 83 q=31.0 Lsize= 110395kB time=00:02:30.80 bitrate=5996.9kbits/s speed=1.38x
1050 ti = frame= 9038 fps=189 q=31.0 Lsize= 108021kB time=00:02:30.80 bitrate=5867.9kbits/s speed=3.16x

1050 ti 가 대략 2.3 배 정도 빨라졌으며 특이한 점은 똑같은 명령 하에서 결과물의 용량이 다르게 나왔다는 점이다.

추가 테스트 - intel core i3 6100
ffmpeg -i INPUT -vf bwdif=1 -r 60000/1001 -c:v libx264 -crf 23 -c:a aac OUTPUT
결과 = frame= 9038 fps= 24 q=-1.0 Lsize= 133429kB time=00:02:30.80 bitrate=7248.1kbits/s speed=0.401x

nvenc는 x264와 비교해서 품질을 양보하는 대신 빠른 속도를 제공해주는 솔루션이다.
그래서 그런지 여러 인코딩 기본 설정 값들이 x264와 비교해보면 속도를 위주로 셋팅되어 있으며
이는 '실시간으로 영상을 녹화한다' 또는 '스트리밍을 한다'는 것에 방점을 맞춘 결과라 생각된다.

x264 vs nvenc


ps. 참조 > https://developer.nvidia.com/nvidia-video-codec-sdk

덧글

  • sa 2017/02/25 17:02 # 삭제 답글

    안녕하세요?
    NVENC 관련해서 여쭤보고싶은게 있습니다.
    windows 7 64bit / Visual studio 2010 / GTX 1060 환경에서
    비디오코덱 SDK 다운을 받아서 설정을 하고
    명령인수를 넣으 2010환경에서 프로젝트를 돌렸는데,
    인코더가 돌지를 않습니다. 아무키나 누르라더군요

    usage : NvEncoder하고 파라미터 종류가 뜨는 것으로 보아
    설정은 얼추 된것 같은데 돌지 않으니 답답합니다 ㅜㅜ..

    현재 넣어둔 명령인수는 -i rec.yuv -o out.h265 -size 416 240 -codec 1 -preset hp -fps 25 입니다.
  • tomcat 2017/02/26 03:52 #

    제가 프로그래머가 아니기에 질문하신 덧글만 보고 무엇에서 뭐가 문제가 되었는지는 알수가 없습니다.
댓글 입력 영역