ffmpeg ffserver – create a mosaic from two 720p webcam feeds

for a project i would like to take the video feeds (NO audio) of two logitech c920 webcams, put them side-by-side and stream them.
the c920 is able to compress the video feed with h264 itself(if enabled) and delivers 1080p with upto 30fps.
the stream is then loaded in an android app by a ffmpeg library and rendered to the screen.

what i already know:
i know that i can take multiple streams or input files and create a mosaic stream via the filter_complex module.
http and h264 seem to be good for streaming, but other configurations are also welcom if they are faster/better.

the question:
but how can i start the cameras with v4l2, set the camera resoltution and camera internal encoding and use these streams to create the mosaic?
the mosaic should be unscaled (=2560x720px).

and i very often get the error code 256 but didnt find a solution what it means.

the system: laptop with usb3, ubuntu 15.04×64 ffmpeg 2.7.1 and ffserver 2.5.7

thanks for your help

ffserver config:

HTTPPort 8080                
MaxHTTPConnections 2000   
MaxClients 1000         
MaxBandwidth 50000
CustomLog -      

<Feed feed1.ffm>         

File /tmp/feed1.ffm
Launch ffmpeg -f v4l2 - input_format h264 -i /dev/video0 -i /dev/video1 -size 1280x720 -r 30 -filter_complex "nullsrc=size=2560x720 [base]; [0:v] setpts=PTS-STARTPTS [left]; [1:v] setpts=PTS-STARTPTS [right]; [base][left] overlay=shortest=1 [tmp1]; [tmp1][right] overlay=shortest=1:x=1280"  -c:v libx264 -f mpegts


<Stream test1.mpg>

Feed feed1.ffm
Format mpegts      
VideoBitRate 1024   
#VideoBufferSize 1024
VideoFrameRate 30      
#VideoSize hd720      
VideoSize 2560x720
#VideoGopSize 12      
VideoCodec libx264      
VideoQMin 3         
VideoQMax 31


<Stream index.html>        
   Format status
   #Only allow local people to get the status
   ACL allow localhost
   ACL allow


ubuntu@ubuntu:~$ ffserver
ffserver version 2.5.7-0ubuntu0.15.04.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
  configuration: --prefix=/usr --extra-version=0ubuntu0.15.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --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-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libwebp --enable-libxvid --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libvpx --enable-libx264 --enable-libsoxr --enable-gnutls --enable-openal --enable-libopencv --enable-librtmp --enable-libx265
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Tue Jul 28 10:13:44 2015 FFserver started.
Tue Jul 28 10:13:44 2015 Launch command line: ffmpeg -f v4l2 - input_format h264 -i /dev/video0 -i /dev/video1 -size 1280x720 -r 30 -filter_complex nullsrc=size=2560x720 [base]; [0:v] setpts=PTS-STARTPTS [left]; [1:v] setpts=PTS-STARTPTS [right]; [base][left] overlay=shortest=1 [tmp1]; [tmp1][right] overlay=shortest=1:x=1280 -c:v libx264 -f mpegts
feed1.ffm: Pid 17388 exited with status 256 after 0 seconds

Source: ubuntu

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.