Here's the deal, I have multiple cheap chinese WiFi cameras that i'm trying to livestream.
The camera's have a web interface and (for my knowledge) lack an RTSP stream.The camera's output a MJPEG encoded stream on http://admin:@[camip]/media/?action=stream
and connects successfully using VLC.
I can use OBS to add a VLC source and than use OBS to stream directly to Youtube and that works fine but isn't ideal as i want to stream multiple cameras to their own stream.
Using OBS I have the following streaming settings and everything works
Video bitrate: 750 KbpsEncoder: Software (x264) Audio bitrate: 160
I'm able to connect to the stream using using ffmpeg and it shows the input stream
Input #0, mjpeg, from 'http://admin:@192.168.0.65/media/?action=stream'; Duration: N/A, bitrate: N/A Stream #0:0 Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 1200k tbn, 25 tbc
Now my next step would be to take that input stream and restream it to Youtube Live (or actually a private YouPHPTube server but it's the same configuration).
I've tried loads of things but keep running into strange issues like the speed of the output being really slow (or at least I think that's what's indicated and Youtube wont pick up the stream)...
ffmpeg \ -f mjpeg \ -i "http://admin:@192.168.0.65/media/?action=stream" \ -f h264 "rtmp://a.rtmp.youtube.com/live2/[streamkey]"
Output #0, h264, to 'rtmp://a.rtmp.youtube.com/live2/[streamkey]': Metadata: encoder : Lavf57.83.100 Stream #0:0: Video: mpeg2video (Main), yuv420p, 720x480 [SAR 32:27 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc57.107.100 mpeg2video Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1frame= 577 fps=4.2 q=24.8 Lsize= 994kB time=00:00:23.04 bitrate= 353.6kbits/s speed=0.167x
Can anyone help me out, tell me what I'm doing wrong and advice me how to get ffmpeg to restream with the same output settings as in my OBS setup or anything that does work?
Thanks in advance!
EDIT: Full log added
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-16ubuntu3) configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100Input #0, mjpeg, from 'http://admin:@192.168.0.65/media/?action=stream': Duration: N/A, bitrate: N/A Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 1200k tbn, 25 tbcStream mapping: Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))Press [q] to stop, [?] for help[libx264 @ 0x55e716cbe200] using SAR=1/1[libx264 @ 0x55e716cbe200] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2[libx264 @ 0x55e716cbe200] profile High, level 3.1Output #0, h264, to 'rtmp://xxx/xxx/xxx': Metadata: encoder : Lavf57.83.100 Stream #0:0: Video: h264 (libx264), yuvj420p(pc), 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc57.107.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1frame= 80 fps=4.2 q=-1.0 Lsize= 673kB time=00:00:03.12 bitrate=1766.8kbits/s speed=0.163x video:673kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%[libx264 @ 0x55e716cbe200] frame I:1 Avg QP:24.70 size: 70939[libx264 @ 0x55e716cbe200] frame P:20 Avg QP:24.70 size: 21910[libx264 @ 0x55e716cbe200] frame B:59 Avg QP:26.67 size: 3049[libx264 @ 0x55e716cbe200] consecutive B-frames: 1.2% 0.0% 3.8% 95.0%[libx264 @ 0x55e716cbe200] mb I I16..4: 1.9% 93.4% 4.6%[libx264 @ 0x55e716cbe200] mb P I16..4: 0.0% 1.7% 0.0% P16..4: 51.7% 15.9% 12.4% 0.0% 0.0% skip:18.4%[libx264 @ 0x55e716cbe200] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 36.6% 0.6% 0.0% direct: 0.5% skip:62.3% L0:51.5% L1:47.8% BI: 0.7%[libx264 @ 0x55e716cbe200] 8x8 transform intra:95.1% inter:82.3%[libx264 @ 0x55e716cbe200] coded y,uvDC,uvAC intra: 92.8% 72.8% 26.8% inter: 14.3% 18.8% 0.2%[libx264 @ 0x55e716cbe200] i16 v,h,dc,p: 11% 4% 0% 85%[libx264 @ 0x55e716cbe200] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 11% 18% 6% 9% 15% 7% 6% 12%[libx264 @ 0x55e716cbe200] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 10% 9% 7% 12% 18% 7% 6% 7%[libx264 @ 0x55e716cbe200] i8c dc,h,v,p: 54% 19% 21% 6%[libx264 @ 0x55e716cbe200] Weighted P-Frames: Y:0.0% UV:0.0%[libx264 @ 0x55e716cbe200] ref P L0: 35.0% 11.4% 41.4% 12.2%[libx264 @ 0x55e716cbe200] ref B L0: 66.4% 25.9% 7.6%[libx264 @ 0x55e716cbe200] ref B L1: 91.3% 8.7%[libx264 @ 0x55e716cbe200] kb/s:1722.60Exiting normally, received signal 2.
Second edit: new output logTried with the new parameters but still fails
ffmpeg \ -i "http://admin:@192.168.0.65/media/?action=stream" \ -re -f lavfi -i anullsrc \ -c:v libx264 -vf format=yuv420p -b:v 4000k -bufsize 8000k -maxrate 4000k -g 50 \ -c:a aac \ -f flv "rtmp://a.rtmp.youtube.com/live2/[streamkey]"
Same result, Youtube reports YouTube is not receiving enough video to maintain smooth streaming. As such, viewers will experience buffering.
but never picks up the stream and our private streaming server also fails to pickup the stream.
What seems to be hapening is that the output stream is around 4 fps causing our private RTSP server to refuse the stream and youtube to play 3 seconds of video after buffering for about a minute (played back on 10x speed).
ffmpeg output
$ ffmpeg -i 'http://admin:@192.168.0.65/media/?action=stream' -re -f lavfi -i anullsrc -c:v libx264 -vf format=yuv420p -b:v 4000k -bufsize 8000k -maxrate 4000k -g 50 -c:a aac -f flv 'rtmp://x.rtmp.youtube.com/live2/[stream-key-deducted]'ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-16ubuntu3) configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100Input #0, mpjpeg, from 'http://admin:@192.168.0.65/media/?action=stream': Duration: N/A, bitrate: N/A Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbcInput #1, lavfi, from 'anullsrc': Duration: N/A, start: 0.000000, bitrate: 705 kb/s Stream #1:0: Audio: pcm_u8, 44100 Hz, stereo, u8, 705 kb/sStream mapping: Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264)) Stream #1:0 -> #0:1 (pcm_u8 (native) -> aac (native))Press [q] to stop, [?] for help[swscaler @ 0x55b35ec1a920] deprecated pixel format used, make sure you did set range correctly[libx264 @ 0x55b35ebcd3e0] using SAR=1/1[libx264 @ 0x55b35ebcd3e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2[libx264 @ 0x55b35ebcd3e0] profile High, level 3.1[libx264 @ 0x55b35ebcd3e0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=50 keyint_min=5 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=4000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=4000 vbv_bufsize=8000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00Output #0, flv, to 'rtmp://x.rtmp.youtube.com/live2/[stream-key-deducted]': Metadata: encoder : Lavf57.83.100 Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 4000 kb/s, 25 fps, 1k tbn, 25 tbc Metadata: encoder : Lavc57.107.100 libx264 Side data: cpb: bitrate max/min/avg: 4000000/0/4000000 buffer size: 8000000 vbv_delay: -1 Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 128 kb/s Metadata: encoder : Lavc57.107.100 aac[flv @ 0x55b35ebcbe00] Failed to update header with correct duration.053.5kbits/s speed=0.168x [flv @ 0x55b35ebcbe00] Failed to update header with correct filesize.frame= 1537 fps=4.3 q=-1.0 Lsize= 30371kB time=00:01:01.36 bitrate=4054.7kbits/s speed=0.172x video:30283kB audio:15kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.240946%[libx264 @ 0x55b35ebcd3e0] frame I:31 Avg QP:18.65 size:123400[libx264 @ 0x55b35ebcd3e0] frame P:399 Avg QP:21.77 size: 44957[libx264 @ 0x55b35ebcd3e0] frame B:1107 Avg QP:23.79 size: 8352[libx264 @ 0x55b35ebcd3e0] consecutive B-frames: 4.0% 0.0% 0.0% 96.0%[libx264 @ 0x55b35ebcd3e0] mb I I16..4: 0.4% 98.7% 1.0%[libx264 @ 0x55b35ebcd3e0] mb P I16..4: 0.0% 3.5% 0.0% P16..4: 43.6% 28.2% 20.5% 0.0% 0.0% skip: 4.2%[libx264 @ 0x55b35ebcd3e0] mb B I16..4: 0.0% 0.2% 0.0% B16..8: 35.2% 3.0% 0.7% direct: 5.1% skip:55.8% L0:51.7% L1:42.9% BI: 5.3%[libx264 @ 0x55b35ebcd3e0] 8x8 transform intra:99.0% inter:75.4%[libx264 @ 0x55b35ebcd3e0] coded y,uvDC,uvAC intra: 99.1% 93.6% 54.1% inter: 28.1% 35.6% 1.1%[libx264 @ 0x55b35ebcd3e0] i16 v,h,dc,p: 87% 1% 2% 10%[libx264 @ 0x55b35ebcd3e0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 11% 19% 5% 10% 15% 7% 7% 12%[libx264 @ 0x55b35ebcd3e0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 9% 9% 6% 11% 18% 8% 7% 8%[libx264 @ 0x55b35ebcd3e0] i8c dc,h,v,p: 57% 17% 18% 8%[libx264 @ 0x55b35ebcd3e0] Weighted P-Frames: Y:0.0% UV:0.0%[libx264 @ 0x55b35ebcd3e0] ref P L0: 30.6% 8.3% 48.4% 12.6%[libx264 @ 0x55b35ebcd3e0] ref B L0: 63.2% 29.2% 7.6%[libx264 @ 0x55b35ebcd3e0] ref B L1: 93.5% 6.5%[libx264 @ 0x55b35ebcd3e0] kb/s:4034.99[aac @ 0x55b35ebd0ec0] Qavg: 65536.000Exiting normally, received signal 2.
Edit 3: updated ffmpeg to 4.2.1, synthetic test and restream test
After updating to v4.2.1. the issue remains the same, however the synthetic video test runs fluidly...
Synthetic output
$ ffmpeg -re -f lavfi -i testsrc2=d=600:s=1280x720 -re -f lavfi -i anullsrc -c:v libx264 -vf format=yuv420p -b:v 4000k -bufsize 8000k -maxrate 4000k -g 50 -c:a aac -flags +global_header -f flv 'rtmp://192.168.0.91/live?p=[streamid]/[streamkey]'ffmpeg version 4.2.1-0york0~18.04.1 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1) configuration: --prefix=/usr --extra-version='0york0~18.04.1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 31.100 / 56. 31.100 libavcodec 58. 54.100 / 58. 54.100 libavformat 58. 29.100 / 58. 29.100 libavdevice 58. 8.100 / 58. 8.100 libavfilter 7. 57.100 / 7. 57.100 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 5.100 / 5. 5.100 libswresample 3. 5.100 / 3. 5.100 libpostproc 55. 5.100 / 55. 5.100Input #0, lavfi, from 'testsrc2=d=600:s=1280x720': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbcInput #1, lavfi, from 'anullsrc': Duration: N/A, start: 0.000000, bitrate: 705 kb/s Stream #1:0: Audio: pcm_u8, 44100 Hz, stereo, u8, 705 kb/sStream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) Stream #1:0 -> #0:1 (pcm_u8 (native) -> aac (native))Press [q] to stop, [?] for help[libx264 @ 0x564c9da28540] using SAR=1/1[libx264 @ 0x564c9da28540] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2[libx264 @ 0x564c9da28540] profile High, level 3.1[libx264 @ 0x564c9da28540] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=50 keyint_min=5 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=4000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=4000 vbv_bufsize=8000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00Output #0, flv, to 'rtmp://192.168.0.91/live?p=[streamid]/[streamkey]': Metadata: encoder : Lavf58.29.100 Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 4000 kb/s, 25 fps, 1k tbn, 25 tbc Metadata: encoder : Lavc58.54.100 libx264 Side data: cpb: bitrate max/min/avg: 4000000/0/4000000 buffer size: 8000000 vbv_delay: -1 Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 128 kb/s Metadata: encoder : Lavc58.54.100 aac[flv @ 0x564c9da270c0] Failed to update header with correct duration.123.1kbits/s speed=0.936x [flv @ 0x564c9da270c0] Failed to update header with correct filesize.frame= 779 fps= 25 q=-1.0 Lsize= 15601kB time=00:00:31.04 bitrate=4117.3kbits/s speed=0.979x video:15557kB audio:7kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.234822%[libx264 @ 0x564c9da28540] frame I:16 Avg QP: 7.28 size: 39981[libx264 @ 0x564c9da28540] frame P:361 Avg QP:20.22 size: 22060[libx264 @ 0x564c9da28540] frame B:402 Avg QP:24.90 size: 18225[libx264 @ 0x564c9da28540] consecutive B-frames: 8.7% 65.2% 6.5% 19.5%[libx264 @ 0x564c9da28540] mb I I16..4: 66.1% 23.9% 10.0%[libx264 @ 0x564c9da28540] mb P I16..4: 1.5% 3.1% 0.5% P16..4: 5.7% 4.7% 3.1% 0.0% 0.0% skip:81.4%[libx264 @ 0x564c9da28540] mb B I16..4: 0.2% 0.4% 1.8% B16..8: 8.5% 3.1% 0.8% direct: 0.8% skip:84.4% L0:47.4% L1:39.8% BI:12.8%[libx264 @ 0x564c9da28540] 8x8 transform intra:37.6% inter:26.4%[libx264 @ 0x564c9da28540] coded y,uvDC,uvAC intra: 24.7% 29.3% 28.8% inter: 4.0% 7.1% 6.1%[libx264 @ 0x564c9da28540] i16 v,h,dc,p: 94% 6% 1% 0%[libx264 @ 0x564c9da28540] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 7% 75% 1% 0% 0% 0% 1% 0%[libx264 @ 0x564c9da28540] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 17% 29% 10% 5% 6% 7% 7% 5%[libx264 @ 0x564c9da28540] i8c dc,h,v,p: 83% 5% 11% 1%[libx264 @ 0x564c9da28540] Weighted P-Frames: Y:0.0% UV:0.0%[libx264 @ 0x564c9da28540] ref P L0: 52.8% 7.6% 24.0% 15.6%[libx264 @ 0x564c9da28540] ref B L0: 72.2% 25.3% 2.4%[libx264 @ 0x564c9da28540] ref B L1: 97.3% 2.7%[libx264 @ 0x564c9da28540] kb/s:4089.76[aac @ 0x564c9da29bc0] Qavg: 65536.000
MJPEG camera restream output
$ ffmpeg -i 'http://admin:@192.168.0.65/media/?action=stream' -re -f lavfi -i anullsrc -c:v libx264 -vf format=yuv420p -b:v 4000k -bufsize 8000k -maxrate 4000k -g 50 -c:a aac -flags +global_header -f flv 'rtmp://192.168.0.91/live?p=[streamid]/[streamkey]'ffmpeg version 4.2.1-0york0~18.04.1 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1) configuration: --prefix=/usr --extra-version='0york0~18.04.1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 31.100 / 56. 31.100 libavcodec 58. 54.100 / 58. 54.100 libavformat 58. 29.100 / 58. 29.100 libavdevice 58. 8.100 / 58. 8.100 libavfilter 7. 57.100 / 7. 57.100 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 5.100 / 5. 5.100 libswresample 3. 5.100 / 3. 5.100 libpostproc 55. 5.100 / 55. 5.100Input #0, mpjpeg, from 'http://admin:@192.168.0.65/media/?action=stream': Duration: N/A, bitrate: N/A Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbcInput #1, lavfi, from 'anullsrc': Duration: N/A, start: 0.000000, bitrate: 705 kb/s Stream #1:0: Audio: pcm_u8, 44100 Hz, stereo, u8, 705 kb/sStream mapping: Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264)) Stream #1:0 -> #0:1 (pcm_u8 (native) -> aac (native))Press [q] to stop, [?] for help[swscaler @ 0x55b731e022c0] deprecated pixel format used, make sure you did set range correctly[libx264 @ 0x55b731db6400] using SAR=1/1[libx264 @ 0x55b731db6400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2[libx264 @ 0x55b731db6400] profile High, level 3.1[libx264 @ 0x55b731db6400] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=50 keyint_min=5 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=4000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=4000 vbv_bufsize=8000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00Output #0, flv, to 'rtmp://192.168.0.91/live?p=618a569164672a82c0303495387593f0/5db8eeea4be0b': Metadata: encoder : Lavf58.29.100 Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 4000 kb/s, 25 fps, 1k tbn, 25 tbc Metadata: encoder : Lavc58.54.100 libx264 Side data: cpb: bitrate max/min/avg: 4000000/0/4000000 buffer size: 8000000 vbv_delay: -1 Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 128 kb/s Metadata: encoder : Lavc58.54.100 aac[flv @ 0x55b731db51c0] Failed to update header with correct duration.404.3kbits/s speed=0.119x [flv @ 0x55b731db51c0] Failed to update header with correct filesize.frame= 157 fps=4.2 q=-1.0 Lsize= 3178kB time=00:00:06.16 bitrate=4225.8kbits/s speed=0.163x video:3170kB audio:1kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.207686%[libx264 @ 0x55b731db6400] frame I:4 Avg QP:18.14 size:125881[libx264 @ 0x55b731db6400] frame P:41 Avg QP:21.52 size: 43972[libx264 @ 0x55b731db6400] frame B:112 Avg QP:23.61 size: 8388[libx264 @ 0x55b731db6400] consecutive B-frames: 4.5% 1.3% 0.0% 94.3%[libx264 @ 0x55b731db6400] mb I I16..4: 0.3% 98.2% 1.5%[libx264 @ 0x55b731db6400] mb P I16..4: 0.1% 3.8% 0.0% P16..4: 42.6% 27.2% 20.2% 0.0% 0.0% skip: 6.1%[libx264 @ 0x55b731db6400] mb B I16..4: 0.0% 0.4% 0.0% B16..8: 34.2% 3.0% 0.7% direct: 5.4% skip:56.2% L0:52.0% L1:42.1% BI: 5.8%[libx264 @ 0x55b731db6400] 8x8 transform intra:98.2% inter:75.5%[libx264 @ 0x55b731db6400] coded y,uvDC,uvAC intra: 93.0% 90.0% 55.7% inter: 27.5% 35.0% 1.5%[libx264 @ 0x55b731db6400] i16 v,h,dc,p: 94% 0% 2% 4%[libx264 @ 0x55b731db6400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 11% 18% 5% 9% 14% 6% 6% 12%[libx264 @ 0x55b731db6400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 9% 8% 5% 9% 15% 6% 5% 9%[libx264 @ 0x55b731db6400] i8c dc,h,v,p: 56% 17% 20% 7%[libx264 @ 0x55b731db6400] Weighted P-Frames: Y:0.0% UV:0.0%[libx264 @ 0x55b731db6400] ref P L0: 32.1% 8.0% 47.4% 12.5%[libx264 @ 0x55b731db6400] ref B L0: 63.3% 29.5% 7.3%[libx264 @ 0x55b731db6400] ref B L1: 93.6% 6.4%[libx264 @ 0x55b731db6400] kb/s:4134.76[aac @ 0x55b731db87c0] Qavg: 65536.000Exiting normally, received signal 2.
Edit 4: sort of working commandI've managed to get things sort of stable with the following command, maybe someone could explain why this would actually work...
ffmpeg \ -y -r 4.2 \ -i "http://admin:@192.168.0.$1/media/?action=stream" \ -re -f lavfi -i anullsrc \ -c:v libx264 -vf format=yuv420p -b:v 4000k -bufsize 8000k -maxrate 4000k -g 50 \ -c:a aac \ -filter:v fps=fps=25 \ -f flv "rtmp://a.rtmp.youtube.com/live2/[streamkey]"
when running this command the output stream is actually running at 24fps instead of 4fps
frame= 577 fps=4.2 q=24.8 Lsize= 994kB time=00:00:23.04 bitrate= 353.6kbits/s speed=0.167x
vs
frame= 406 fps= 24 q=-1.0 Lsize= 7967kB time=00:00:16.12 bitrate=4048.5kbits/s speed=0.951x