[Libav-user] Custom IO for streaming protocols

Michael Vernick michael at giantface.com
Fri Jun 3 17:25:49 CEST 2011


Couldn't you simply receive the RTP packet using your stack, remove the 
RTP header and pass the resulting data to av_write_frame?

yoda_alex wrote:
> Hello all,
>
> I'm pretty new to libav, so please forgive any incompetance on my part!
>
> I'm trying to write an application that receives H264 over RTP, extracts the
> H.264 and saves it to an mp4 file on disk. I already have an RTP stack that
> I want to use to receive the packets (rather than letting libav do the IO
> directly). So I've done the following:
>
> -  Created a custom RTP demuxer (reusing code in libavcodec, such as
> rtpdec.c and rtpdec_h264.c). When its read_packet() callback is called, it
> does an avio_read() to get an RTP packet, and then processes it. 
> -  Manually creating an AVIOContext, with a callback to read RTP packets out
> of an in-memory buffer (owned by my app). This is then linked to an
> AVFormatContext which uses my custom demuxer.  
> -  When ever I receive an RTP packet, my application puts it in the buffer,
> and then calls av_read_frame(). 
>
> The problem I'm having is that the IO read_packet() callback is called
> multiple times for each call to avio_read(). 
> -  The first call reads the RTP packet out of the memory buffer. 
> -  When subsequent calls happen I'm forced to return a value of 0 (no data
> available to read), which causes avio_read to think its hit the EOF, and
> everything stops working. 
>
> Any ideas how this is supposed to work, or what I'm doing wrong? Is the only
> option for my RTP demuxer to read out of the memory buffer directly (this
> seems architecturally worng). 
>
> Thanks in advance,
> Alex.
>
>
> --
> View this message in context: http://libav-users.943685.n4.nabble.com/Custom-IO-for-streaming-protocols-tp3570716p3570716.html
> Sent from the libav-users mailing list archive at Nabble.com.
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user
>   



More information about the Libav-user mailing list