[FFmpeg-user] ffmpeg and ffserver to transcode and stream rtsm to rtmp? Please Help me.

rb at blakesys.net rb at blakesys.net
Sat Jun 1 03:46:43 CEST 2013


Hello,

On Debian 6, I am trying to use ffmpeg and ffserver to transcode and
stream an rtsp feed from an IP camera in order for visitors to play via
browser.

It's a brand new camera - I'm struggling to make this work, and I am not
familiar enough with it to know what I am doing wrong.  I have tested the
camera by successfully viewing the rtsp feed in VLC as well as a hosted
streaming provider.  This all works, so I know the camera and rtsp is
functioning.

Flow looks like this:  [IP Cam] --> RSTP h.264 stream
(rtsp://192.168.0.25:554/cam0_0) --> [FFMPEG] --> [FFSERVER] (Port 9999,
Feed1.ffm) --> Web Browser

I am using ffmpeg/ffserver installed from Debian repositories via apt-get
install ffmpeg. It seems as though it's running, but when I either try to
browse to http://host:9999/test.swf or I try to use VLC to open the
network stream, I get a white screen.  When I stop ffmpeg, I get this very
faint, ghostly (near indistinguishable) outline of a still of the video.

I'm working on a project for a customer, and I would like to know how to
do make this work and to be able to repeat it so I can use it in the
future on other projects as well.  I've spend a ridiculous amount of time
on this and I've reached a dead end.  I would be willing to hire an expert
to help me with this if this is possible to do and I can't do it on my
own.  (I don't want to use a solution like Red5 or Wazoo -- I want to know
how to do this and be able to do this with ffmpeg.  Not because I'm cheap
- I'm willing to spend money for help, but I want to have control of the
tools I use for my customers.)

Please help!  ---  Is what I am trying to do even possible in this
configuration?

---

My ffserver.conf file looks like this:

Port 9999
# bind to all IPs aliased or not
BindAddress 0.0.0.0
# max number of simultaneous clients
MaxClients 1000
# max bandwidth per-client (kb/s)
MaxBandwidth 10000
# Suppress that if you want to launch ffserver as a daemon.
NoDaemon

<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 5M
ACL allow 127.0.0.1
</Feed>

<Stream test.swf>
Feed feed1.ffm
Format swf
VideoCodec flv
VideoFrameRate 30
VideoBufferSize 80000
VideoBitRate 100
VideoQMin 1
VideoQMax 5
VideoSize 704x480
PreRoll 0
Noaudio
</Stream>

---

1. I run the following command: ffserver & ffmpeg -i
rtsp://192.168.0.25:554/cam0_0 -vcodec http://localhost:9999/feed1.ffm

1A. (I also run ffserver from one console session and ffmpeg from another
-- same results.)

1B.  I get the following ffmpeg output:


[NULL @ 0x92bd330]non-existing PPS referenced
[h264 @ 0x92bd330]number of reference frames exceeds max (probably corrupt
input), discarding one
Seems stream 0 codec frame rate differs from container frame rate:
180000.00 (180000/1) -> 90000.00 (180000/2)
    Last message repeated 12 times
Input #0, rtsp, from 'rtsp://192.168.0.25:554/cam0_0':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: h264, yuv420p, 704x480, 90k tbr, 90k tbn, 180k tbc
Output #0, ffm, to 'http://localhost:9999/feed1.ffm':
    Stream #0.0: Video: 0x0000, yuv420p, 704x480, q=1-5, 1000k tbn, 90k
tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
frame= 2350 fps=101 q=-1.0 size=    7008kB time=0.03
bitrate=2219927.1kbits/s

1C. I get the following output on ffserver:

ffserver
FFserver version SVN-r0.5.10-4:0.5.10-1, Copyright (c) 2000-2009 Fabrice
Bellard, et al.
  configuration: --extra-version=4:0.5.10-1 --prefix=/usr
--enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib
--enable-libdirac --enable-libgsm --enable-libopenjpeg
--enable-libschroedinger --enable-libspeex --enable-libtheora
--enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping
--disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc
--enable-swscale --enable-x11grab --enable-libfaad --enable-libdc1394
--shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static
--disable-ffmpeg --disable-ffplay
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Feb 16 2013 10:09:50, gcc: 4.4.5

[NULL @ 0x87832f0]error, non monotone timestamps -829980193100065088 >=
-829980193100065088

Last message repeated 640 times

SWF muxer only supports VP6, FLV1 and MJPEG

---


More information about the ffmpeg-user mailing list