Hi
I’m trying to build ffmpeg with NVENC on the AWS g4dn instance which has a Tesla T4, the OS is Ubuntu 18.04. My build script here:
#!/bin/bash
mkdir -p /usr/local/src
cd /usr/local/src
# Install Dependencies
apt-get update -qq && sudo apt-get -y install autoconf automake build-essential cmake git-core libsdl2-dev libtool libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev libx264-dev libx265-dev libfdk-aac-dev yasm nasm openssl libssl-dev gcc make
# Build Cuda Header
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers && sudo make install
cd ../
# Install CUDA Toolkit
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
chmod +x cuda_10.2.89_440.33.01_linux.run
sh cuda_10.2.89_440.33.01_linux.run
[code]
Path
export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Build ffmpeg.
git clone git.ffmpeg.org Git - ffmpeg.git/summary
cd ffmpeg
./configure --extra-cflags=“-I/usr/local/cuda/include” --extra-ldflags=“-L/usr/local/cuda/lib64” --enable-gpl --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-nonfree --enable-openssl --enable-nvenc --enable-cuda-nvcc --enable-cuvid --enable-libnpp --enable-nvdec --enable-filter=scale_cuda --enable-filter=thumbnail_cuda --enable-filter=yadif_cuda --enable-libfdk_aac --disable-ffplay --bindir=“/usr/local/bin”
make -j $(nproc)
[/code]
Everything is fine, but then when using ffmpeg to encode a sample H264 file, ffmpeg only encode at 0.1fps
ffmpeg -v verbose -hwaccel nvdec -hwaccel_output_format cuda -i den.mp4 -c:v h264_nvenc -b:v 2M -y output.mp4
ffmpeg version N-96097-g99f505d2df Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-gpl --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-nonfree --enable-openssl --enable-nvenc --enable-cuda-nvcc --enable-cuvid --enable-libnpp --enable-nvdec --enable-filter=scale_cuda --enable-filter=thumbnail_cuda --enable-filter=yadif_cuda --enable-libfdk_aac --disable-ffplay --bindir=/usr/local/bin
libavutil 56. 36.101 / 56. 36.101
libavcodec 58. 65.100 / 58. 65.100
libavformat 58. 35.101 / 58. 35.101
libavdevice 58. 9.101 / 58. 9.101
libavfilter 7. 69.101 / 7. 69.101
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
[h264 @ 0x55fb298f78c0] Reinit context to 1920x816, pix_fmt: yuv420p
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'den.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
creation_time : 2019-11-26T09:10:49.000000Z
Duration: 00:04:56.88, start: 0.000000, bitrate: 1407 kb/s
Stream #0:0(und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt709, progressive, left), 1920x804 (1920x816) [SAR 1:1 DAR 160:67], 44 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
creation_time : 2019-11-26T09:10:49.000000Z
handler_name : ISO Media file produced by Google Inc.
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc))
Press [q] to stop, [?] for help
[h264 @ 0x55fb2a2310c0] NVDEC capabilities:
[h264 @ 0x55fb2a2310c0] format supported: yes, max_mb_count: 65536
[h264 @ 0x55fb2a2310c0] min_width: 48, max_width: 4096
[h264 @ 0x55fb2a2310c0] min_height: 16, max_height: 4096
[h264 @ 0x55fb2a2310c0] Reinit context to 1920x816, pix_fmt: cuda
frame= 0 fps=0.0 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A [graph 0 input from stream 0:0 @ 0x55fb2a5514c0] w:1920 h:804 pixfmt:cuda tb:1/12800 fr:25/1 sar:1/1 sws_param:flags=2
[h264_nvenc @ 0x55fb29920640] Loaded Nvenc version 9.1
[h264_nvenc @ 0x55fb29920640] Nvenc initialized successfully
Output #0, mp4, to 'output.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
encoder : Lavf58.35.101
Stream #0:0(und): Video: h264 (h264_nvenc) (Main), 1 reference frame (avc1 / 0x31637661), cuda(left), 1920x804 [SAR 1:1 DAR 160:67], q=-1--1, 2000 kb/s, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
creation_time : 2019-11-26T09:10:49.000000Z
handler_name : ISO Media file produced by Google Inc.
encoder : Lavc58.65.100 h264_nvenc
Side data:
cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000 vbv_delay: N/A
frame= 3 fps=0.2 q=25.0 size= 0kB time=00:00:00.00 bitrate=4923.1kbits/s speed=6.28e-06xframe= 4 fps=0.2 q=25.0 size= 0kB time=00:00:00.04 bitrate= 9.6kbits/s speed=0.00174x frame= 5 fps=0.1 q=24.0 size= 0kB time=00:00:00.08 bitrate= 4.8kbits/s speed=0.00239x frame= 6 fps=0.1 q=23.0 size= 0kB time=00:00:00.12 bitrate= 3.2kbits/s speed=0.00272x frame= 7 fps=0.1 q=22.0 size= 0kB time=00:00:00.16 bitrate= 2.4kbits/s speed=0.00293x frame= 8 fps=0.1 q=21.0 size= 0kB time=00:00:00.20 bitrate= 1.9kbits/s speed=0.00306x frame= 9 fps=0.1 q=20.0 size= 0kB time=00:00:00.24 bitrate= 1.6kbits/s speed=0.00316x frame= 10 fps=0.1 q=19.0 size= 0kB time=00:00:00.28 bitrate= 1.4kbits/s speed=0.00324x frame= 11 fps=0.1 q=18.0 size= 0kB time=00:00:00.32 bitrate= 1.2kbits/s speed=0.0033x frame= 12 fps=0.1 q=17.0 size= 0kB time=00:00:00.36 bitrate= 1.1kbits/s speed=0.00335x frame= 13 fps=0.1 q=16.0 size= 0kB time=00:00:00.40 bitrate= 1.0kbits/s speed=0.00339x frame= 14 fps=0.1 q=15.0 size= 0kB time=00:00:00.44 bitrate= 0.9kbits/s speed=0.00342x frame= 15 fps=0.1 q=14.0 size= 0kB time=00:00:00.48 bitrate= 0.8kbits/s speed=0.00345x frame= 16 fps=0.1 q=13.0 size= 0kB time=00:00:00.52 bitrate= 0.7kbits/s speed=0.00347x frame= 17 fps=0.1 q=12.0 size= 0kB time=00:00:00.56 bitrate= 0.7kbits/s speed=0.00349x frame= 18 fps=0.1 q=11.0 size= 0kB time=00:00:00.60 bitrate= 0.6kbits/s speed=0.00351x frame= 19 fps=0.1 q=11.0 size= 0kB time=00:00:00.64 bitrate= 0.6kbits/s speed=0.00352x frame= 20 fps=0.1 q=10.0 size= 0kB time=00:00:00.68 bitrate= 0.6kbits/s speed=0.00354x frame= 21 fps=0.1 q=10.0 size= 0kB time=00:00:00.72 bitrate= 0.5kbits/s speed=0.00355x frame= 22 fps=0.1 q=10.0 size= 0kB time=00:00:00.76 bitrate= 0.5kbits/s speed=0.00356x frame= 23 fps=0.1 q=10.0 size= 0kB time=00:00:00.80 bitrate= 0.5kbits/s speed=0.00357x
On other instances which have Tesla M60 or Tesla V100 it works well though.