Discussion:
[FFmpeg-user] RTMP relay livestream quits after some time with End of file error
regstuff
2018-11-03 08:34:44 UTC
Permalink
*Some context:* I have an Nginx server (with rtmp-module) on a Ubuntu-16.04
VM. I'm using it to receive an input rtmp stream from my PC. FFmpeg is then
used in the VM to take this input and relay to multiple destinations after
transcoding, overlaying a lower third, and changing the volume.

*FFmpeg version:* ffmpeg version N-92147-gf85fa10 Copyright (c) 2000-2018
the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
configuration: --pkg-config-flags=--static
--extra-cflags=-I/home/btech11/ffmpeg_build/include
--extra-ldflags=-L/home/btech11/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype
--enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx
--enable-libx264 --enable-libx265 --enable-libzmq --enable-librtmp
--enable-network --enable-nonfree
libavutil 56. 19.101 / 56. 19.101
libavcodec 58. 32.100 / 58. 32.100
libavformat 58. 18.104 / 58. 18.104
libavdevice 58. 4.105 / 58. 4.105
libavfilter 7. 33.100 / 7. 33.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100

*FFmpeg command:* /usr/local/bin/ffmpeg -nostdin -thread_queue_size 512 -i
rtmp://127.0.0.1:1935/stream1/input -i
/usr/local/nginx/scripts/images/lowerthird.png -af azmq,volume=2 -c:a
libfdk_aac -filter_complex
'zmq=bind_address=tcp\\\://127.0.0.1\\\:5556,overlay=0:H' -vcodec libx264
-pix_fmt yuv420p -preset veryfast -r 25 -g 50 -b:v 6000k -maxrate 6M
-minrate 6M -bufsize 6M -f flv rtmp://a.rtmp.youtube.com/live2/[my key] -y

**Problem:** Ffmpeg quits after a random duration between 15-30 minutes with
this error.

av_interleaved_write_frame(): End of file
[flv @ 0x25fffc0] Failed to update header with correct duration.
[flv @ 0x25fffc0] Failed to update header with correct filesize.
Error writing trailer of rtmp://a.rtmp.youtube.com/live2/[my key]: End
of file
frame=36101 fps= 25 q=11.0 Lsize= 1066356kB time=00:24:04.37
bitrate=6048.0kbits/s speed= 1x
video:1042015kB audio:22620kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 0.161639%
[libx264 @ 0x2600c80] frame I:743 Avg QP: 6.67 size:269470
[libx264 @ 0x2600c80] frame P:35336 Avg QP:10.16 size: 24546
[libx264 @ 0x2600c80] frame B:22 Avg QP:15.04 size: 8699
[libx264 @ 0x2600c80] consecutive B-frames: 99.9% 0.0% 0.0% 0.0%
[libx264 @ 0x2600c80] mb I I16..4: 29.9% 4.3% 65.8%
[libx264 @ 0x2600c80] mb P I16..4: 3.0% 1.1% 2.3% P16..4: 27.1%
1.8% 1.5% 0.0% 0.0% skip:63.1%
[libx264 @ 0x2600c80] mb B I16..4: 1.8% 0.6% 0.3% B16..8: 8.7%
3.0% 0.6% direct: 6.1% skip:78.9% L0:39.6% L1:52.4% BI: 8.0%
[libx264 @ 0x2600c80] 8x8 transform intra:14.1% inter:12.1%
[libx264 @ 0x2600c80] coded y,uvDC,uvAC intra: 53.5% 51.1% 27.5% inter:
10.4% 12.7% 2.0%
[libx264 @ 0x2600c80] i16 v,h,dc,p: 52% 38% 6% 4%
[libx264 @ 0x2600c80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 34% 27% 2% 0%
0% 0% 1% 1%
[libx264 @ 0x2600c80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 51% 28% 12% 1% 1%
2% 1% 2% 1%
[libx264 @ 0x2600c80] i8c dc,h,v,p: 48% 23% 22% 7%
[libx264 @ 0x2600c80] Weighted P-Frames: Y:0.4% UV:0.3%
[libx264 @ 0x2600c80] kb/s:5915.49
Conversion failed!

I've also tried it with a codec copy command to try and eliminate the
problem:
/usr/local/bin/ffmpeg -nostdin -thread_queue_size 512 -i
rtmp://127.0.0.1:1935/stream1/input -c copy -f flv
rtmp://a.rtmp.youtube.com/live2/[my key] -y

The stream seems to work for longer but errors out after an hour with below
error.

av_interleaved_write_frame(): End of filekB time=01:07:20.22
bitrate=3166.5kbits/s speed= 1x
[flv @ 0x2c21e40] Failed to update header with correct duration.
[flv @ 0x2c21e40] Failed to update header with correct filesize.
Error writing trailer of rtmp://a.rtmp.youtube.com/live2/[my key]: End
of file
frame=101001 fps= 25 q=-1.0 Lsize= 1561874kB time=01:07:20.55
bitrate=3166.6kbits/s speed= 1x
video:1479592kB audio:77420kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 0.312238%
Conversion failed!

Third command I tried was with acodec copy but vcodec applied:
/usr/local/bin/ffmpeg -nostdin -thread_queue_size 512 -i
rtmp://127.0.0.1:1935/stream1/input -i
/usr/local/nginx/scripts/images/lowerthird.png -acodec copy -filter_complex
'zmq=bind_address=tcp\\\://127.0.0.1\\\:5556,overlay=0:H' -vcodec libx264
-pix_fmt yuv420p -preset veryfast -r 25 -g 50 -b:v 6000k -maxrate 6M
-minrate 6M -bufsize 6M -f flv rtmp://a.rtmp.youtube.com/live2/[my key] -y

Errored out in 3 minutes the first time and 19 minutes th second time I
tried. Error output:

Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo,
fltp, 163 kb/s
av_interleaved_write_frame(): End of fileB time=00:03:07.45
bitrate=6072.8kbits/s speed=1.02x
[flv @ 0x3303200] Failed to update header with correct duration.
[flv @ 0x3303200] Failed to update header with correct filesize.
Error writing trailer of rtmp://a.rtmp.youtube.com/live2/[my key]: End
of file
frame= 4653 fps= 25 q=20.0 Lsize= 139504kB time=00:03:07.94
bitrate=6080.7kbits/s speed=1.02x
video:135616kB audio:3684kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 0.146554%
[libx264 @ 0x3304100] frame I:99 Avg QP:10.71 size:163258
[libx264 @ 0x3304100] frame P:4553 Avg QP:14.70 size: 27059
[libx264 @ 0x3304100] frame B:1 Avg QP:26.37 size: 4978
[libx264 @ 0x3304100] consecutive B-frames: 100.0% 0.0% 0.0% 0.0%
[libx264 @ 0x3304100] mb I I16..4: 31.1% 8.7% 60.2%
[libx264 @ 0x3304100] mb P I16..4: 5.6% 2.6% 4.5% P16..4: 23.5%
2.5% 2.0% 0.0% 0.0% skip:59.3%
[libx264 @ 0x3304100] mb B I16..4: 2.0% 2.4% 0.0% B16..8: 10.8%
1.1% 0.1% direct: 1.1% skip:82.4% L0:75.0% L1:24.0% BI: 1.0%
[libx264 @ 0x3304100] 8x8 transform intra:18.8% inter:19.7%
[libx264 @ 0x3304100] coded y,uvDC,uvAC intra: 49.8% 48.9% 18.3% inter:
10.2% 11.5% 1.8%
[libx264 @ 0x3304100] i16 v,h,dc,p: 62% 28% 6% 5%
[libx264 @ 0x3304100] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 43% 30% 22% 2% 0%
0% 0% 1% 2%
[libx264 @ 0x3304100] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 61% 21% 12% 1% 1%
1% 1% 1% 1%
[libx264 @ 0x3304100] i8c dc,h,v,p: 49% 21% 24% 7%
[libx264 @ 0x3304100] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x3304100] kb/s:5990.48
Conversion failed!

Strangely enough, doing a vcodec copy did not throw any error even after 2
hours, 20 minutes of streaming. I'm doing a longer duration stream to
further validate this. Will update this post with any info. The command I
used was:
/usr/local/bin/ffmpeg -nostdin -thread_queue_size 512 -i
rtmp://127.0.0.1:1935/stream1/input -af azmq,volume=2 -c:a libfdk_aac
-vcodec copy -f flv rtmp://a.rtmp.youtube.com/live2/[my key] -y

*Possibilities I've eliminated:* My bandwidth from the PC to the VM is
between 40-80mbps upload and download. I'm able to stream fine from my PC
using OBS to youtube for 7-8 hrs, so it's not a network issue.

The error occurs with various destinations: youtube, facebook, even another
endpoint on the same nginx server, so it's not an issue with network from VM
to youtube etc.

Error DOES NOT occur while streaming out of a local mp4 file using codec
copy, so it seems to be an error with an input rtmp stream.

Someone else here
<http://www.ffmpeg-archive.org/Stream-relay-fails-after-running-some-time-td4684965.html>
has a similar problem, but doesn't seem to have found a solution.



--
Sent from: http://www.ffmpeg-archive.org/
_______________________________________________
ffmpeg-user mailing list
ffmpeg-***@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-***@ff

Loading...