[FFmpeg-user] Seeing Errors and discontinuities while GPU transcoding to H264
James Baird
jamesed84.it at gmail.com
Mon Feb 4 17:19:58 EET 2019
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
More information about the ffmpeg-user
mailing list