Seeing Errors and discontinuities while GPU transcoding to H264

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Seeing Errors and discontinuities while GPU transcoding to H264

James Baird
Hello,



Looking for assistance on this issue I am struggling with. I am trying to
take a live OTA stream (free-to-air broadcast) and transcode it (using
Nvidia Quadro p2000 card) from mpeg2ts and ac3 to h264 and AAC. I need the
output to be in 3 separate bitrates and in UDP multicast format. Here is
the source stream from ffprobe output (also gives you my version number for
ffmpeg).



==========Source:

gpu-transcoder:~$ ffprobe udp://@239.1.1.92:59092 ffprobe version
N-93005-gd92f06e Copyright (c) 2007-2019 the FFmpeg developers

  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)

  configuration: --prefix=/home/circle/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/circle/ffmpeg_build/include
--extra-ldflags=-L/home/circle/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/circle/bin --enable-gpl --enable-libaom --enable-libass
--enable-libfdk-aac --enable-libfreetype --enable-libmp3lame
--enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libx265 --enable-nonfree --enable-nvenc

  libavutil      56. 26.100 / 56. 26.100

  libavcodec     58. 44.100 / 58. 44.100

  libavformat    58. 26.100 / 58. 26.100

  libavdevice    58.  6.101 / 58.  6.101

  libavfilter     7. 48.100 /  7. 48.100

  libswscale      5.  4.100 /  5.  4.100

  libswresample   3.  4.100 /  3.  4.100

  libpostproc    55.  4.100 / 55.  4.100

[mpeg2video @ 0x5582ad6afa40] Invalid frame dimensions 0x0.

    Last message repeated 19 times

Input #0, mpegts, from 'udp://@239.1.1.92:59092':

  Duration: N/A, start: 73120.077033, bitrate: N/A

  Program 3

    Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], Closed
Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc

    Stream #0:1[0x34](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz,
5.1(side), fltp, 384 kb/s

    Stream #0:2[0x35](spa): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz,
stereo, fltp, 96 kb/s (visual impaired)





==========So here is the command that I am using for the transcode:



ffmpeg -i 'udp://@239.1.1.92:59092?fifo_size=1000000&overrun_nonfatal=1' \
-c:v h264_nvenc -x264opts keyint=120:no-scenecut -b:v 6000k -minrate 6000k
-maxrate 6000k -bufsize 12000k -profile:v high -level 4.0 -c:a aac -f
mpegts udp://@239.129.2.220:59220 \ -c:v h264_nvenc -x264opts
keyint=120:no-scenecut -b:v 3500k -minrate 3500k -maxrate 3500k -bufsize
9000k -profile:v high -level 4.0 -c:a aac -f mpegts udp://@
239.129.2.221:59221 \ -c:v h264_nvenc -x264opts keyint=120:no-scenecut -b:v
1500k -minrate 1500k -maxrate 1500k -bufsize 3000k -profile:v high -level
4.0 -c:a aac -f mpegts udp://@239.129.2.222:59222





==========Here is the output while the command is running:



gpu-transcoder:~$ ffmpeg -i 'udp://@
239.1.1.92:59092?fifo_size=1000000&overrun_nonfatal=1' -c:v h264_nvenc
-x264opts keyint=120:no-scenecut -b:v 6000k -minrate 6000k -maxrate 6000k
-bufsize 12000k -profile:v high -level 4.0 -c:a aac -f mpegts udp://@
239.129.2.220:59220 -c:v h264_nvenc -x264opts keyint=120:no-scenecut -b:v
3500k -minrate 3500k -maxrate 3500k -bufsize 9000k -profile:v high -level
4.0 -c:a aac -f mpegts udp://@239.129.2.221:59221 -c:v h264_nvenc -x264opts
keyint=120:no-scenecut -b:v 1500k -minrate 1500k -maxrate 1500k -bufsize
3000k -profile:v high -level 4.0 -c:a aac -f mpegts udp://@
239.129.2.222:59222 ffmpeg version N-93005-gd92f06e Copyright (c) 2000-2019
the FFmpeg developers

  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)

  configuration: --prefix=/home/circle/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/circle/ffmpeg_build/include
--extra-ldflags=-L/home/circle/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/circle/bin --enable-gpl --enable-libaom --enable-libass
--enable-libfdk-aac --enable-libfreetype --enable-libmp3lame
--enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libx265 --enable-nonfree --enable-nvenc

  libavutil      56. 26.100 / 56. 26.100

  libavcodec     58. 44.100 / 58. 44.100

  libavformat    58. 26.100 / 58. 26.100

  libavdevice    58.  6.101 / 58.  6.101

  libavfilter     7. 48.100 /  7. 48.100

  libswscale      5.  4.100 /  5.  4.100

  libswresample   3.  4.100 /  3.  4.100

  libpostproc    55.  4.100 / 55.  4.100

[mpeg2video @ 0x564c01e22f40] Invalid frame dimensions 0x0.

    Last message repeated 29 times

Input #0, mpegts, from 'udp://@
239.1.1.92:59092?fifo_size=1000000&overrun_nonfatal=1':

  Duration: N/A, start: 73483.943033, bitrate: N/A

  Program 3

    Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], Closed
Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc

    Stream #0:1[0x34](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz,
5.1(side), fltp, 384 kb/s

    Stream #0:2[0x35](spa): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz,
stereo, fltp, 96 kb/s (visual impaired) Codec AVOption x264opts (x264
options) specified for output file #0 (udp://@239.129.2.220:59220) has not
been used for any stream. The most likely reason is either wrong type (e.g.
a video option with no video streams) or that it is a private option of
some encoder which was not actually used for any stream.

Codec AVOption x264opts (x264 options) specified for output file #1 (udp://@
239.129.2.221:59221) has not been used for any stream. The most likely
reason is either wrong type (e.g. a video option with no video streams) or
that it is a private option of some encoder which was not actually used for
any stream.

Codec AVOption x264opts (x264 options) specified for output file #2 (udp://@
239.129.2.222:59222) has not been used for any stream. The most likely
reason is either wrong type (e.g. a video option with no video streams) or
that it is a private option of some encoder which was not actually used for
any stream.

Stream mapping:

  Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (h264_nvenc))

  Stream #0:1 -> #0:1 (ac3 (native) -> aac (native))

  Stream #0:0 -> #1:0 (mpeg2video (native) -> h264 (h264_nvenc))

  Stream #0:1 -> #1:1 (ac3 (native) -> aac (native))

  Stream #0:0 -> #2:0 (mpeg2video (native) -> h264 (h264_nvenc))

  Stream #0:1 -> #2:1 (ac3 (native) -> aac (native)) Press [q] to stop, [?]
for help [aac @ 0x564c01e85080] Using a PCE to encode channel layout
"5.1(side)"

[aac @ 0x564c023e04c0] Using a PCE to encode channel layout "5.1(side)"

[aac @ 0x564c01e86980] Using a PCE to encode channel layout "5.1(side)"

Output #0, mpegts, to 'udp://@239.129.2.220:59220':

  Metadata:

    encoder         : Lavf58.26.100

    Stream #0:0: Video: h264 (h264_nvenc) (High), yuv420p, 1920x1080 [SAR
1:1 DAR 16:9], q=-1--1, 6000 kb/s, 29.97 fps, 90k tbn, 29.97 tbc

    Metadata:

      encoder         : Lavc58.44.100 h264_nvenc

    Side data:

      cpb: bitrate max/min/avg: 6000000/0/6000000 buffer size: 12000000
vbv_delay: -1

    Stream #0:1(eng): Audio: aac (LC), 48000 Hz, 5.1(side), fltp, 394 kb/s

    Metadata:

      encoder         : Lavc58.44.100 aac

Output #1, mpegts, to 'udp://@239.129.2.221:59221':

  Metadata:

    encoder         : Lavf58.26.100

    Stream #1:0: Video: h264 (h264_nvenc) (High), yuv420p, 1920x1080 [SAR
1:1 DAR 16:9], q=-1--1, 3500 kb/s, 29.97 fps, 90k tbn, 29.97 tbc

    Metadata:

      encoder         : Lavc58.44.100 h264_nvenc

    Side data:

      cpb: bitrate max/min/avg: 3500000/0/3500000 buffer size: 9000000
vbv_delay: -1

    Stream #1:1(eng): Audio: aac (LC), 48000 Hz, 5.1(side), fltp, 394 kb/s

    Metadata:

      encoder         : Lavc58.44.100 aac

Output #2, mpegts, to 'udp://@239.129.2.222:59222':

  Metadata:

    encoder         : Lavf58.26.100

    Stream #2:0: Video: h264 (h264_nvenc) (High), yuv420p, 1920x1080 [SAR
1:1 DAR 16:9], q=-1--1, 1500 kb/s, 29.97 fps, 90k tbn, 29.97 tbc

    Metadata:

      encoder         : Lavc58.44.100 h264_nvenc

    Side data:

      cpb: bitrate max/min/avg: 1500000/0/1500000 buffer size: 3000000
vbv_delay: -1

    Stream #2:1(eng): Audio: aac (LC), 48000 Hz, 5.1(side), fltp, 394 kb/s

    Metadata:

      encoder         : Lavc58.44.100 aac

frame= 7165 fps= 30 q=19.0 Lq=23.0 q=28.0 size=  201697kB time=00:04:00.34
bitrate=6874.9kbits/s speed=1.02x





=============Here is an ffprobe on one of the streams that I am outputting
[minus some of the h264@ lines that repeated several times before probe
completed]:



gpu-transcoder:~$ ffprobe udp://@239.129.2.220:59220 ffprobe version
N-93005-gd92f06e Copyright (c) 2007-2019 the FFmpeg developers

  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)

  configuration: --prefix=/home/circle/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/circle/ffmpeg_build/include
--extra-ldflags=-L/home/circle/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/circle/bin --enable-gpl --enable-libaom --enable-libass
--enable-libfdk-aac --enable-libfreetype --enable-libmp3lame
--enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libx265 --enable-nonfree --enable-nvenc

  libavutil      56. 26.100 / 56. 26.100

  libavcodec     58. 44.100 / 58. 44.100

  libavformat    58. 26.100 / 58. 26.100

  libavdevice    58.  6.101 / 58.  6.101

  libavfilter     7. 48.100 /  7. 48.100

  libswscale      5.  4.100 /  5.  4.100

  libswresample   3.  4.100 /  3.  4.100

  libpostproc    55.  4.100 / 55.  4.100

[h264 @ 0x56353920abc0] SPS unavailable in decode_picture_timing

[h264 @ 0x56353920abc0] non-existing PPS 0 referenced

[h264 @ 0x56353920abc0] SPS unavailable in decode_picture_timing

[h264 @ 0x56353920abc0] non-existing PPS 0 referenced

[h264 @ 0x56353920abc0] decode_slice_header error

[h264 @ 0x56353920abc0] no frame!

[mpegts @ 0x5635391b1500] decoding for stream 0 failed [mpegts @
0x5635391b1500] decoding for stream 1 failed [mpegts @ 0x5635391b1500]
Could not find codec parameters for stream 0 (Video: h264 ([27][0][0][0] /
0x001B), none): unspecified size Consider increasing the value for the
'analyzeduration' and 'probesize' options [mpegts @ 0x5635391b1500] Could
not find codec parameters for stream 1 (Audio: aac (LC) ([15][0][0][0] /
0x000F), 0 channels, fltp, 407 kb/s): unspecified sample rate Consider
increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'udp://@239.129.2.220:59220':

  Duration: N/A, start: 61.453333, bitrate: N/A

  Program 1

    Metadata:

      service_name    : Service01

      service_provider: FFmpeg

    Stream #0:0[0x100]: Video: h264 ([27][0][0][0] / 0x001B), none, 29.97
fps, 29.97 tbr, 90k tbn, 180k tbc

    Stream #0:1[0x101](eng): Audio: aac (LC) ([15][0][0][0] / 0x000F), 0
channels, fltp, 407 kb/s







The problem that I am having is our monitoring shows a large amount of
errors and discontinuities in the output stream. When I try to play a clip
that I save in VLC there is no content, no messages and no length to the
video. If I try to play it in vlc from the command line using the ASCII
text player (vlc udp://@239.129.2.220:59220 -V aa) I see these warnings
“1316 bytes truncated (MTU was 1316)” and no video.



System is an Ubuntu 18.04 install with CUDA 10 installed. It does not look
like any of the system resources are bad and I am pulling the clips from
the transcoder so I am not having a network issue that is inducing
discontinuities which also would not explain the stream errors.





=========Nvidia cad information with nothing running atm:



gpu-transcoder:~$ nvidia-smi

Sat Feb  2 00:51:36 2019

+-----------------------------------------------------------------------------+

| NVIDIA-SMI 410.48                 Driver Version: 410.48
|

|-------------------------------+----------------------+----------------------+

| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr.
ECC |

| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute
M. |

|===============================+======================+======================|

|   0  Quadro P2000        Off  | 00000000:03:00.0 Off |                  N/A
|

| 52%   27C    P0    18W /  75W |      0MiB /  5059MiB |      0%      Default
|

+-------------------------------+----------------------+----------------------+




+-----------------------------------------------------------------------------+

| Processes:                                                       GPU
Memory |

|  GPU       PID   Type   Process name                             Usage
|

|=============================================================================|

|  No running processes found
|

+-----------------------------------------------------------------------------+





Any thoughts on how to correct this. I feel like there is something in my
command that is fundamentaly off so I am hoping this is an easy one. Again
I am using nvenc for the transcoding. Anything else that you need to
assist, just ask.



Thoughts?



Thanks in advance,

Jimbo
_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".