[FFmpeg-user] ffmpeg GPU selection issue
Dennis Mungai
dmngaie at gmail.com
Thu Sep 5 17:57:01 EEST 2019
On Thu, Sep 5, 2019, 11:43 Dennis Mungai <dmngaie at gmail.com> wrote:
>
>
> On Thu, Sep 5, 2019, 08:11 Matthew Reus <matthew.reus01 at gmail.com> wrote:
>
>> yes , it taking the defined GPU and working fine ,
>>
>> but there is showing dup frame
>>
>> [h264 @ 0x565148b79140] SPS unavailable in decode_picture_timing
>> [h264 @ 0x565148b79140] non-existing PPS 0 referenced
>> [h264 @ 0x565148b79140] SPS unavailable in decode_picture_timing
>> [h264 @ 0x565148b79140] non-existing PPS 0 referenced
>> [h264 @ 0x565148b79140] decode_slice_header error
>> [h264 @ 0x565148b79140] no frame!
>> [h264 @ 0x565148b79140] SPS unavailable in decode_picture_timing
>> [h264 @ 0x565148b79140] non-existing PPS 0 referenced
>> [h264 @ 0x565148b79140] SPS unavailable in decode_picture_timing
>> [h264 @ 0x565148b79140] non-existing PPS 0 referenced
>> [h264 @ 0x565148b79140] decode_slice_header error
>> [h264 @ 0x565148b79140] no frame!
>> [h264 @ 0x565148b79140] SPS unavailable in decode_picture_timing
>> [h264 @ 0x565148b79140] non-existing PPS 0 referenced
>> [h264 @ 0x565148b79140] SPS unavailable in decode_picture_timing
>> [h264 @ 0x565148b79140] non-existing PPS 0 referenced
>> [h264 @ 0x565148b79140] decode_slice_header error
>> [h264 @ 0x565148b79140] no frame!
>> [h264 @ 0x565148b79140] SPS unavailable in decode_picture_timing
>> [h264 @ 0x565148b79140] non-existing PPS 0 referenced
>> [h264 @ 0x565148b79140] SPS unavailable in decode_picture_timing
>> [h264 @ 0x565148b79140] non-existing PPS 0 referenced
>> [h264 @ 0x565148b79140] decode_slice_header error
>> [h264 @ 0x565148b79140] no frame!
>> [h264 @ 0x565148b79140] mmco: unref short failure
>> [h264 @ 0x565148b79140] number of reference frames (0+4) exceeds max (3;
>> probably corrupt input), discarding one
>> Input #0, mpegts, from 'udp://@
>> 224.2.2.21:5008?fifo_size=1000000\&overrun_nonfatal
>> <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal>':
>> Duration: N/A, start: 82237.270033, bitrate: N/A
>> Program 60
>> Metadata:
>> service_name : BBS TV 1
>> service_provider:
>> Stream #0:0[0x3d]: Video: h264 (Main) ([27][0][0][0] / 0x001B),
>> yuv420p(tv, bt470bg, top first), 704x576 [SAR 12:11 DAR 4:3], 25 fps, 25
>> tbr, 90k tbn, 50 tbc
>> Stream #0:1[0x3e](eng): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz,
>> stereo, s16p, 128 kb/s
>> [rtmp @ 0x565148b78a40] Ignoring unsupported var reason
>> Stream mapping:
>> Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc))
>> Stream #0:1 -> #0:1 (mp2 (native) -> aac (native))
>> Press [q] to stop, [?] for help
>> [h264 @ 0x56514939de40] co located POCs unavailable
>> [h264 @ 0x5651493f6340] mmco: unref short failure
>> [h264 @ 0x5651493f6340] number of reference frames (0+4) exceeds max (3;
>> probably corrupt input), discarding one
>> Output #0, flv, to 'rtmp://
>> admin:netaccess at 192.168.0.44:1935/nettv/netBBS11500.stream':
>> Metadata:
>> encoder : Lavf58.30.100
>> Stream #0:0: Video: h264 (h264_nvenc) (Main) ([7][0][0][0] / 0x0007),
>> cuda, 880x720 [SAR 12:11 DAR 4:3], q=-1--1, 1800 kb/s, 25 fps, 1k tbn, 25
>> tbc
>> Metadata:
>> encoder : Lavc58.55.100 h264_nvenc
>> Side data:
>> cpb: bitrate max/min/avg: 1800000/0/1800000 buffer size: 1800000
>> vbv_delay: -1
>> Stream #0:1(eng): Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz,
>> stereo, fltp, 64 kb/s
>> Metadata:
>> encoder : Lavc58.55.100 aac
>> [h264 @ 0x5651493aed00] *mmco: unref short failure0:29:05.24
>> bitrate=1874.2kbits/s dup=26 drop=0 *speed= 1x
>> Last message repeated 1 times
>> [h264 @ 0x5651493aed00] number of reference frames (0+4) exceeds max (3;
>> probably corrupt input), discarding one
>>
>> On Thu, Sep 5, 2019 at 4:11 AM Dennis Mungai <dmngaie at gmail.com> wrote:
>>
>> > On Wed, 4 Sep 2019 at 18:28, Dennis Mungai <dmngaie at gmail.com> wrote:
>> > >
>> > > On Wed, 4 Sep 2019 at 10:39, Matthew Reus <matthew.reus01 at gmail.com>
>> > wrote:
>> > > >
>> > > > Hello
>> > > > I have ubuntu 18.04 server where i have install ffmpeg and compile
>> sdk
>> > as
>> > > > well as all requirement of NVIDIA tesla M 60 driver .
>> > > >
>> > > >
>> > > > *1.Issue is whenever i define gpu , both gpu 1 and gpu2 take the
>> > process *
>> > > >
>> > > > *2.ffmepg mostof the time shows frame drops and video buffer *
>> > > >
>> > > > *Here is have attached all the output and script *
>> > > >
>> > > > ffmpeg version N-94423-ga0c1970 Copyright (c) 2000-2019 the FFmpeg
>> > > > developers
>> > > > built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
>> > > > configuration: --prefix=/root/ffmpeg_build
>> > --pkg-config-flags=--static
>> > > > --extra-cflags=-I/root/ffmpeg_build/include
>> > > > --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs='-lpthread
>> -lm'
>> > > > --bindir=/root/bin --enable-cuda --enable-cuvid --enable-libnpp
>> > > > --extra-cflags=-I../nv_sdk --extra-ldflags=-L../nv_sdk
>> > --enable-cuda-nvcc
>> > > > --enable-nvenc --extra-cflags=-I/usr/local/cuda/include/
>> > > > --extra-ldflags=-L/usr/local/cuda/lib64/ --enable-gpl
>> --enable-libaom
>> > > > --enable-libass --enable-libfdk-aac --enable-vaapi
>> --enable-libfreetype
>> > > > --enable-libmp3lame --enable-libopus --enable-libvorbis
>> --enable-libvpx
>> > > > --enable-libx264 --enable-libx265 --enable-nonfree
>> > > > libavutil 56. 32.100 / 56. 32.100
>> > > > libavcodec 58. 55.100 / 58. 55.100
>> > > > libavformat 58. 30.100 / 58. 30.100
>> > > > libavdevice 58. 9.100 / 58. 9.100
>> > > > libavfilter 7. 58.100 / 7. 58.100
>> > > > libswscale 5. 6.100 / 5. 6.100
>> > > > libswresample 3. 6.100 / 3. 6.100
>> > > > libpostproc 55. 6.100 / 55. 6.100
>> > > > Hyper fast Audio and Video encoder
>> > > > usage: ffmpeg [options] [[infile options] -i infile]... {[outfile
>> > options]
>> > > > outfile}...
>> > > >
>> > > >
>> > > > *My test script is *
>> > > > *ffmpeg -hwaccel_device 1 -hwaccel auto -i
>> > > > 'udp://@224.2.2.21:5008?fifo_size=1000000\&overrun_nonfatal
>> <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal>
>> > <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal>
>> > > > <http://224.2.2.21:5008?fifo_size=1000000\&overrun_nonfatal>' -vf
>> > > >
>> "hwupload_cuda,format=yuv420p|cuda,yadif_cuda=0:-1:0,scale_npp=-1:720"
>> > -c:v
>> > > > h264_nvenc -gpu 1 -b:v 1800k -c:a aac -aspect 16:9 -g 50 -b:a 64k
>> > -ar
>> > > > 44100 -ac 2 -f flv
>> > > > 'rtmp://admin:netaccess@192.168.0.44:1935/nettv/netBBS11500.stream
>> > > > <http://admin:netaccess@192.168.0.44:1935/nettv/netBBS11500.stream
>> >'
>> > > > </dev/null >/dev/null 2>/var/log/BBs1.log &*
>> > > >
>> > > >
>> > > > ffmpeg version N-94423-ga0c1970 Copyright (c) 2000-2019 the FFmpeg
>> > > > developers
>> > > > built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
>> > > > configuration: --prefix=/root/ffmpeg_build
>> > --pkg-config-flags=--static
>> > > > --extra-cflags=-I/root/ffmpeg_build/include
>> > > > --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs='-lpthread
>> -lm'
>> > > > --bindir=/root/bin --enable-cuda --enable-cuvid --enable-libnpp
>> > > > --extra-cflags=-I../nv_sdk --extra-ldflags=-L../nv_sdk
>> > --enable-cuda-nvcc
>> > > > --enable-nvenc --extra-cflags=-I/usr/local/cuda/include/
>> > > > --extra-ldflags=-L/usr/local/cuda/lib64/ --enable-gpl
>> --enable-libaom
>> > > > --enable-libass --enable-libfdk-aac --enable-vaapi
>> --enable-libfreetype
>> > > > --enable-libmp3lame --enable-libopus --enable-libvorbis
>> --enable-libvpx
>> > > > --enable-libx264 --enable-libx265 --enable-nonfree
>> > > > libavutil 56. 32.100 / 56. 32.100
>> > > > libavcodec 58. 55.100 / 58. 55.100
>> > > > libavformat 58. 30.100 / 58. 30.100
>> > > > libavdevice 58. 9.100 / 58. 9.100
>> > > > libavfilter 7. 58.100 / 7. 58.100
>> > > > libswscale 5. 6.100 / 5. 6.100
>> > > > libswresample 3. 6.100 / 3. 6.100
>> > > > libpostproc 55. 6.100 / 55. 6.100
>> > > > [h264 @ 0x559b7b7248c0] SPS unavailable in decode_picture_timing
>> > > > [h264 @ 0x559b7b7248c0] non-existing PPS 0 referenced
>> > > > [h264 @ 0x559b7b7248c0] SPS unavailable in decode_picture_timing
>> > > > [h264 @ 0x559b7b7248c0] non-existing PPS 0 referenced
>> > > > [h264 @ 0x559b7b7248c0] decode_slice_header error
>> > > > [h264 @ 0x559b7b7248c0] no frame!
>> > > > [h264 @ 0x559b7b7248c0] SPS unavailable in decode_picture_timing
>> > > > [h264 @ 0x559b7b7248c0] non-existing PPS 0 referenced
>> > > > [h264 @ 0x559b7b7248c0] SPS unavailable in decode_picture_timing
>> > > > [h264 @ 0x559b7b7248c0] non-existing PPS 0 referenced
>> > > > [h264 @ 0x559b7b7248c0] decode_slice_header error
>> > > > [h264 @ 0x559b7b7248c0] no frame!
>> > > > [h264 @ 0x559b7b7248c0] SPS unavailable in decode_picture_timing
>> > > > [h264 @ 0x559b7b7248c0] non-existing PPS 0 referenced
>> > > > [h264 @ 0x559b7b7248c0] SPS unavailable in decode_picture_timing
>> > > > [h264 @ 0x559b7b7248c0] non-existing PPS 0 referenced
>> > > > [h264 @ 0x559b7b7248c0] decode_slice_header error
>> > > > [h264 @ 0x559b7b7248c0] no frame!
>> > > > [h264 @ 0x559b7b7248c0] mmco: unref short failure
>> > > > Last message repeated 1 times
>> > > > [h264 @ 0x559b7b7248c0] number of reference frames (0+4) exceeds max
>> > (3;
>> > > > probably corrupt input), discarding one
>> > > > Input #0, mpegts, from 'udp://@
>> > > > 224.2.2.21:5008?fifo_size=1000000\&overrun_nonfatal
>> <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal>
>> > <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal>':
>> > > > Duration: N/A, start: 7352.806033, bitrate: N/A
>> > > > Program 60
>> > > > Metadata:
>> > > > service_name : BBS TV 1
>> > > > service_provider:
>> > > > Stream #0:0[0x3d]: Video: h264 (Main) ([27][0][0][0] / 0x001B),
>> > > > yuv420p(tv, bt470bg, top first), 704x576 [SAR 12:11 DAR 4:3], 25
>> fps,
>> > 50
>> > > > tbr, 90k tbn, 50 tbc
>> > > > Stream #0:1[0x3e](eng): Audio: mp2 ([4][0][0][0] / 0x0004),
>> 48000
>> > Hz,
>> > > > stereo, s16p, 128 kb/s
>> > > > [rtmp @ 0x559b7b7241c0] Ignoring unsupported var reason
>> > > > [h264 @ 0x559b7b73eb80] Using auto hwaccel type cuda with new device
>> > > > created from 1.
>> > > > Stream mapping:
>> > > > Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc))
>> > > > Stream #0:1 -> #0:1 (mp2 (native) -> aac (native))
>> > > > Press [q] to stop, [?] for help
>> > > > [h264 @ 0x559b7c007e00] reference picture missing during reorder
>> > > > [h264 @ 0x559b7c007e00] Missing reference picture, default is 65297
>> > > > [h264 @ 0x559b7c024680] mmco: unref short failure
>> > > > Last message repeated 1 times
>> > > > [h264 @ 0x559b7c024680] number of reference frames (0+4) exceeds max
>> > (3;
>> > > > probably corrupt input), discarding one
>> > > > [h264 @ 0x559b7c05d780] mmco: unref short failure
>> > > > [h264 @ 0x559b7c108940] mmco: unref short failure
>> > > > Output #0, flv, to 'rtmp://
>> > > > admin:netaccess at 192.168.0.44:1935/nettv/netBBS11500.stream':
>> > > > Metadata:
>> > > > encoder : Lavf58.30.100
>> > > > Stream #0:0: Video: h264 (h264_nvenc) (Main) ([7][0][0][0] /
>> > 0x0007),
>> > > > cuda, 880x720 [SAR 16:11 DAR 16:9], q=-1--1, 1800 kb/s, 25 fps, 1k
>> > tbn, 25
>> > > > tbc
>> > > > Metadata:
>> > > > encoder : Lavc58.55.100 h264_nvenc
>> > > > Side data:
>> > > > cpb: bitrate max/min/avg: 0/0/1800000 buffer size: 3600000
>> > vbv_delay:
>> > > > -1
>> > > > Stream #0:1(eng): Audio: aac (LC) ([10][0][0][0] / 0x000A),
>> 44100
>> > Hz,
>> > > > stereo, fltp, 64 kb/s
>> > > > Metadata:
>> > > > encoder : Lavc58.55.100 aac
>> > > > root at ubuntu:/var/log# 17.0 size= 68167kB time=00:04:54.44
>> > > > bitrate=1896.6kbits/s speed=1.02x
>> > >
>> > >
>> > > Hello there,
>> > >
>> > > Please try this. I've simplified your command a bit for legibility.
>> > > These `<>` have been dropped.
>> > >
>> > > ffmpeg -fflags +genpts -vsync 1 -threads 4 \
>> > > -hwaccel nvdec -hwaccel_device 1 -hwaccel_output_format cuda \
>> > > -i 'udp://@224.2.2.21:5008?fifo_size=1000000\&overrun_nonfatal
>> <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal>
>> > <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal> \
>> > > -vf "yadif_cuda=0:-1:0,scale_npp=-1:720" \
>> > > -c:v h264_nvenc -preset:v llhq -rc:v cbr_ld_hq -gpu 1 -b:v 1800k
>> > > -maxrate:v 1800k -bufsize:v 1800k -r:v 25 -g:v 50 \
>> > > -c:a aac -b:a 64k -ar 44100 -ac 2 \
>> > > -f flv -flags +global_header -map 0 \
>> > > 'rtmp://admin:netaccess@192.168.0.44:1935/nettv/netBBS11500.stream'
>> > >
>> > > A few notes:
>> > >
>> > > 1. Note how we call up the hwaccel method. Please don't set this to
>> > > auto. Judging by your console output, you definitely have nvdec
>> > > available. Use it.
>> > >
>> > > 2. See how we request for a specific texture format output from the
>> > > decoder tied to the hwaccel method. In this case we ask for cuda. That
>> > > way you can skip the unnecessary hwupload parts in your previous
>> > > script. These extra bits will definitely slow you down.
>> > >
>> > > 3. The thread count (-threads 4) is explicitly set to a low value, 4.
>> > > For hwaccels such as nvdec, this is ideal. Very high numbers (~16+)
>> > > may result in decoder initialization failure, with warnings.
>> > >
>> > > 4. On encoder presets: You're using a Maxwell Gen 2 GPU (a Tesla M60).
>> > > Based on your previous command line, I assumed you're targeting
>> > > constant bitrate output. With that in mind, the command above selects
>> > > the low latency high quality preset (-preset:v llhq) whose rate
>> > > control method is overridden to constant bitrate, low latency high
>> > > quality mode (-cbr:v cbr_ld_hq) while adapting your selected GOP size
>> > > and frame rate.
>> > >
>> > > 5. On device selection: This is governed by the -hwaccel_device
>> > > arguments passed to the underlying hwaccel , and for the encoder, the
>> > > -gpu argument takes precedence. Your mistake in the previous command
>> > > was calling up hwupload_cuda without specifying a device to use. Your
>> > > previous arguments resulted in the creation of a random CUDA device in
>> > > the middle of a filter chain, invoking expensive copies to and from
>> > > system memory. And that will definitely slow down the encoder.
>> > >
>> > > As an example, with a single RTX 2080 on my laptop encoding one of the
>> > > C-band satellite capture samples from https://kodi.wiki/view/Samples
>> :
>> > >
>> > > cd ~/test
>> > > time ffmpeg -fflags +genpts -vsync 1 -threads 4 \
>> > > -hwaccel nvdec -hwaccel_device 0 -hwaccel_output_format cuda \
>> > > -i 'test.mkv' \
>> > > -vf "yadif_cuda=0:-1:0,scale_npp=-1:720" \
>> > > -c:v h264_nvenc -preset:v llhq -rc:v cbr_ld_hq -gpu 0 -b:v 1800k
>> > > -maxrate:v 1800k -bufsize:v 1800k -r:v 59.94 -g:v 59.98 \
>> > > -c:a aac -b:a 64k -ar 44100 -ac 2 \
>> > > -f flv -flags +global_header -map 0 'test.flv'
>> > >
>> > > And this runs at a sweet, sweet ~11x speed:
>> > >
>> > > frame=17791 fps=657 q=27.0 Lsize= 68121kB time=00:04:56.92
>> > > bitrate=1879.4kbits/s dup=8895 drop=0 speed= 11x
>> > > video:65225kB audio:2336kB subtitle:0kB other streams:0kB global
>> > > headers:0kB muxing overhead: 0.829441%
>> > > [aac @ 0x561db5b25440] Qavg: 153.261
>> > >
>> > > real 0m27.461s
>> > > user 0m15.690s
>> > > sys 0m1.404s
>> > >
>> > >
>> > > At the very least, on your hardware, you should be getting throughput
>> > > speeds in multiples of ~1x with no drops whatsoever.
>> > >
>> > > Test and report back.
>> > >
>> > > Warm regards,
>> > >
>> > > Dennis.
>> >
>> > With proper escapes:
>> >
>> > ffmpeg -fflags +genpts -vsync 1 -threads 4 \
>> > -hwaccel nvdec -hwaccel_device 1 -hwaccel_output_format cuda \
>> > -i 'udp://@224.2.2.21:5008?fifo_size=1000000\&overrun_nonfatal
>> <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal>
>> > <http://224.2.2.21:5008?fifo_size=1000000%5C&overrun_nonfatal> \
>> > -vf "yadif_cuda=0:-1:0,scale_npp=-1:720" \
>> > -c:v h264_nvenc -preset:v llhq -rc:v cbr_ld_hq -gpu 1 -b:v 1800k \
>> > -maxrate:v 1800k -bufsize:v 1800k -r:v 25 -g:v 50 \
>> > -c:a aac -b:a 64k -ar 44100 -ac 2 \
>> > -f flv -flags +global_header -map 0 \
>> > 'rtmp://admin:netaccess@192.168.0.44:1935/nettv/netBBS11500.stream'
>> >
>> > Test and report back, thanks.
>>
>
> That's due to the -r:v value.
> Omit it altogether if this behavior is undesired.
> To maintain a constant frame rate, the -r option will either:
>
> (a). Provide true constant frame rate output for formats such as mp4 by
> either duplicating or dropping frames.
>
> (b). Act as a ceiling for the maximum frame rate permitted with formats
> such as mkv which permit for variable frame rate. Frame rates below the
> threshold are passed through, with these above the same being either
> dropped or duplicated.
>
> What you're seeing should thus be treated as a notification, especially
> where a GOP size (-g) is defined.
>
Confirm your issue is resolved
>
More information about the ffmpeg-user
mailing list