ubuntu - Playing and recording a live stream from another computer webcam using VLC/FFmpeg

24
2013-08
  • user573014

    I was trying lately to set a video server on one machine and play it in a differen machine, it works with me.. but the problem is that it always stuck and become jammed in the middle .. and it is very slow comparing to the original stream.. something like 5 seconds delay which is not acceptable at all!

    The warning messages I get usually includes something like that:

    In the client side, which is the one which is jammed.

    [0x24d1ab0] ts demux warning: discontinuity received 0x5 instead of 0xe (pid=68)
    [0x7f4340015e50] rtp demux warning: 2 packet(s) lost
    reference picture missing during reorder
    Missing reference picture
    mmco: unref short failure
    Reference 4 >= 4 (H264 - MPEG-4 AVC (part 10)) stopped
    error while decoding MB 34 14, bytestream (575)
    

    And that is the picture of the streaming when it is jammed:

    jammed stream

    And that is what it looks like when it is running smoothly:

    smooth stream

    This is the error message I got on the server:

    [0x2513820] main generic debug: auto hidding mouse
    [0x2296230] main mux warning: late buffer for mux input (1840085)
    

    And finally here is my command line that I am using on the server:

    vlc -vvv v4l2:///dev/video1:v4l2-width=640:v4l2-height=480 --sout
    '#duplicate{dst=display,dst="transcode{vcodec=h264,vb=800,ab=128}
    :duplicate{dst=rtp{mux=ts,dst=172.22.2.87,port=50004}'
    

    On the client:

    vlc -vvv rtp://@:50004
    

    I thought that it might be from VLC or from my command .. I tried different protocols for transmission, with no luck. I also tried FFmpeg and I got similar results + warning messages. I thought then that both of them are using the same libraries in Linux.

    Here is the command using FFmpeg:

    ffmpeg -f video4linux2 -i /dev/video1 -vcodec libx264 -s 320x240 -pix_fmt
    yuv420p -vb 200000 -minrate 200000 -maxrate 200000 -bufsize 2000000 -acodec
    libmp3lame -ab 128k -ar 44100 -ac 2 -f mpegts udp://172.22.2.87:5544
    

    In conclusion, I would like to find a solution for the latency of the streaming (which is very high) and the jamming problem.

  • Answers
    Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

    Related Question

    ubuntu - FFMPEG Segfault Solutions
  • Brentley_11

    I'm trying to convert a bunch of movies into h.264 mp4's using FFMPEG. These movies are sourced from various portable camcorders such as the Flip Mino HD and the Kodak ZI8. One issue I'm having with video from the ZI8 is it seems to be causing FFMPEG to segfault.

    Here is my command:

    ffmpeg -i 'XmasSailor720p60fps.MOV' -threads 2 -acodec libfaac -ab 96kb -vcodec libx264 -vpre hq -b 500kb -s 484x272 XmasSailor.mp4
    

    Here is the output:

    FFmpeg version SVN-r20668, Copyright (c) 2000-2009 Fabrice Bellard, et al.
      built on Dec  2 2009 18:37:34 with gcc 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
      configuration: --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared
      libavutil     50. 5. 1 / 50. 5. 1
      libavcodec    52.42. 0 / 52.42. 0
      libavformat   52.39. 2 / 52.39. 2
      libavdevice   52. 2. 0 / 52. 2. 0
      libswscale     0. 7. 2 /  0. 7. 2
      libpostproc   51. 2. 0 / 51. 2. 0
    
    Seems stream 0 codec frame rate differs from container frame rate: 59.94 (60000/1001) -> 29.97 (30000/1001)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'XmasSailor720p60fps.MOV':
      Duration: 00:00:05.37, start: 0.000000, bitrate: 12021 kb/s
        Stream #0.0(eng): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 11994 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
        Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s
      Metadata
        major_brand     : qt  
        minor_version   : 0
        compatible_brands: qt  
        comment         : KODAK Zi8 Pocket Video Camera
        comment-eng     : KODAK Zi8 Pocket Video Camera
    [libx264 @ 0x99e1020]using SAR=1/1
    [libx264 @ 0x99e1020]using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
    [libx264 @ 0x99e1020]profile High, level 2.1
    Output #0, mp4, to 'XmasSailor.mp4':
        Stream #0.0(eng): Video: libx264, yuv420p, 484x272 [PAR 1:1 DAR 121:68], q=10-51, 500 kb/s, 30k tbn, 29.97 tbc
        Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 96 kb/s
      Metadata
        comment         : Encoded with the Statusfirm Video Transcoder
    Stream mapping:
      Stream #0.0 -> #0.0
      Stream #0.1 -> #0.1
    Press [q] to stop encoding
    [h264 @ 0x99de950]B picture before any references, skipping
    [h264 @ 0x99de950]decode_slice_header error
    [h264 @ 0x99de950]no frame!
    Error while decoding stream #0.0
    [h264 @ 0x99de950]B picture before any references, skipping
    [h264 @ 0x99de950]decode_slice_header error
    [h264 @ 0x99de950]no frame!
    Error while decoding stream #0.0
    frame=   20 fps=  0 q=13797729.0 size=       0kB time=0.66 bitrate=   0.6kbits/s    
    frame=   39 fps= 37 q=13797729.0 size=       0kB time=1.30 bitrate=   0.3kbits/s    
    frame=   48 fps= 30 q=33.0 size=      11kB time=0.10 bitrate= 903.0kbits/s    
    frame=   58 fps= 27 q=31.0 size=      22kB time=0.43 bitrate= 421.0kbits/s    
    frame=   67 fps= 25 q=29.0 size=      41kB time=0.73 bitrate= 462.6kbits/s    
    frame=   75 fps= 23 q=29.0 size=      59kB time=1.00 bitrate= 486.7kbits/s    
    frame=   83 fps= 22 q=29.0 size=      81kB time=1.27 bitrate= 521.9kbits/s    
    frame=   90 fps= 21 q=29.0 size=      97kB time=1.50 bitrate= 530.1kbits/s    
    frame=   98 fps= 20 q=29.0 size=     114kB time=1.77 bitrate= 526.9kbits/s    
    frame=  106 fps= 20 q=29.0 size=     134kB time=2.04 bitrate= 537.7kbits/s    
    frame=  114 fps= 19 q=29.0 size=     150kB time=2.30 bitrate= 533.7kbits/s    
    frame=  122 fps= 19 q=29.0 size=     172kB time=2.57 bitrate= 547.8kbits/s    
    frame=  130 fps= 19 q=29.0 size=     193kB time=2.84 bitrate= 557.5kbits/s    
    frame=  136 fps= 18 q=29.0 size=     211kB time=3.04 bitrate= 570.0kbits/s    
    frame=  144 fps= 18 q=29.0 size=     242kB time=3.30 bitrate= 599.5kbits/s    
    frame=  152 fps= 17 q=30.0 size=     261kB time=3.57 bitrate= 598.6kbits/s    
    frame=  157 fps= 15 q=-1.0 Lsize=     368kB time=5.21 bitrate= 579.3kbits/s    
    video:302kB audio:61kB global headers:0kB muxing overhead 1.416371%
    [libx264 @ 0x99e1020]frame I:1     Avg QP:27.22  size:  8720
    [libx264 @ 0x99e1020]frame P:48    Avg QP:25.15  size:  3759
    [libx264 @ 0x99e1020]frame B:108   Avg QP:30.10  size:  1105
    [libx264 @ 0x99e1020]consecutive B-frames:  0.6% 11.5% 28.8% 59.0%
    [libx264 @ 0x99e1020]mb I  I16..4: 28.5% 47.6% 23.9%
    [libx264 @ 0x99e1020]mb P  I16..4:  0.8%  1.3%  0.5%  P16..4: 50.6% 17.7% 13.1%  0.0%  0.0%    skip:15.9%
    [libx264 @ 0x99e1020]mb B  I16..4:  0.2%  0.3%  0.1%  B16..8: 44.0%  1.2%  2.6%  direct: 5.1%  skip:46.5%  L0:45.5% L1:51.0% BI: 3.5%
    [libx264 @ 0x99e1020]final ratefactor: 23.51
    [libx264 @ 0x99e1020]8x8 transform intra:49.9% inter:67.9%
    [libx264 @ 0x99e1020]direct mvs  spatial:98.1% temporal:1.9%
    [libx264 @ 0x99e1020]coded y,uvDC,uvAC intra: 54.7% 76.1% 41.4% inter: 17.1% 24.4% 7.8%
    [libx264 @ 0x99e1020]i16 v,h,dc,p: 18% 52%  5% 25%
    [libx264 @ 0x99e1020]i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 22%  9%  7% 10% 10%  9%  8% 13%
    [libx264 @ 0x99e1020]i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 18%  8%  8% 10% 13% 10%  9% 12%
    [libx264 @ 0x99e1020]Weighted P-Frames: Y:10.4%
    [libx264 @ 0x99e1020]ref P L0: 60.2% 15.3% 11.0%  7.6%  5.2%  0.7%
    [libx264 @ 0x99e1020]ref B L0: 72.6% 15.6% 11.8%
    [libx264 @ 0x99e1020]kb/s:471.17
    Segmentation fault
    

    I'm wondering if anyone else has ran into similar issues. I wasn't able to find anything helpful via Google.

    Another question I have is if anyone knows of a company that offers paid support for FFMPEG.

    Thank you for your time.


  • Related Answers
  • SleighBoy

    I just had a similar issue with libx264 encoding, and what I got from my examination of the matter were these points.

    1. Use gcc >= 4.2
    2. Make sure your ffmpeg is compiled against the same libx264 version

    By your output it is obvious you have #1 down, so check #2 like so (paths may need to be modified)

    ldd /usr/bin/ffmpeg | grep x264
    

    and then...

    cat /usr/include/x264.h | grep X264_BUILD
    

    (Source)

    For me, this checked out and I just had to not do 2-pass encoding. Try also not using the thread option, that will probably fix it. I had troubles on old Red Hat boxes, my Gentoo desktop had no trouble at all, I call that a win for from-source package managers!