[FFmpeg-devel] [REQUEST] Use libnemesi as RTSP stream client in FFmpeg

Andreas Setterlind gamester17
Tue Sep 11 12:34:17 CEST 2007

Hi, I am not a developer myself but if I would like to make a request,
a suggested code addition to FFmpeg if I may.

Out of personal interest I keep up with the ffmpeg-devel and
ffmpeg-cvslog mailing-lists, thus I have recently noticed many
additions and improvements to FFmpeg's RTP/RTSP related code, though
it seem to me that part of FFmpeg still lack structure and
completeness like the rest of FFmpeg. This is why I was wondering if
anyone here also think that it might be a good idea to integrate the
libnemesi library (from the NeMeS project) into FFmpeg and use its
code for all RTSP, RTP/RTCP and SDP streaming?, ...or possible the
other way around and instead integrate all the existing 'stream' code
from libavformat into the NeMeSi project and then use their libnemesi
library for all streaming in FFmpeg 'as is', that way it would mean
one less piece of code that the FFmpeg developers would have to very
actively maintain, (and other projects could then also easier use that
library in their multimedia players with or without FFmpeg).

Alternatively just extract the code parts of libnemesi that you find
useful and integrate them into FFmpeg, however then I would like to
suggest that you still create a common 'stream demuxer/parser library'
for the client-side (and/or API for adding support for additional
streaming formats?) - a LGPL'ed sub-library in FFmpeg with all stream
demuxers/parsers gathered (similar to the libpostproc and libavutil).
Call it "libavstream" (or just "libstream" or whatever). Move all
FFmpeg's existing stream code there like HTTP and RTSP/RTP. This will
help reduce future code replication by sharing common code, thus
making it easier to add support for additional streaming formats. All
together making it super easy for audio/video players using FFmpeg to
add all-in-one streaming support to their player.

For those who are not aware of the NeMeSI project, it is a RTSP and
RTP/RTCP streaming-client (open source licensed under LGPL, and coded
in pure C) that allows user to enjoy playback of multimedia files with
low latency transport over IP-based networks, and the libnemesi
library (from the latest trunk in the SVN of the NeMeSI project) is a
RTSP, RTP/RTCP and SDP "Open Media Streaming Client Library" which is
specifically designed to "let you add multimedia streaming playback in
your applications in a quick and straightforward way". libnemesi (and
NeMeSI) source code does contain example code and there are partially
doxygenized headers (Doxygen code documentation), that will hopefully
help programmers to get to know the code quicker.

libnemesi does not yet support Real Networks RDT (Real Data Transport
streaming-protocol), so I guess that realrtsp could be adopted from
MPlayer (and/or Xine?) if you wanted to move all of FFmpeg's 'stream'
code into the NeMeS project. Neither am I sure if libnemesi/NeMeSi
support HTTP and UDP streaming(?), or QuickTime(?).

Reference links:

By the way, libnemesi does also support Creative Commons licensing
meta-data for audio/video streaming (via libCCstreaming which is part
of llibnemesi) which would be a new feature to added to FFmpeg with
the help of this library.

Anyway, what do you guys think?, ...any comments and/or volunteers?

PS! Off-topic and this should probably be a separate discussion, but
what do you think about also integrating or adding libcurl (from the
cURL project) to FFmpeg in that new "stream" layer structure?, libcurl
can support streaming from many other protocols, like; FTP, FTPS,
HTTP, HTTPS (including SSL certificates), with user+password
authentication, proxies, cookies...  ...and that on just as many
platforms that FFmpeg supports today, more on http://curl.haxx.se
...for reference there is also libraries/code such as; freesdp and
librtsp from the MPlayer project, live555, and gstreamer, that could
be of interest but none seem to me to match libnemesi/NeMeSi.

Best regards / Andreas (a.k.a. Gamester17)

More information about the ffmpeg-devel mailing list