[Libav-user] RTP to RTSP remuxing

Emmanuel Riou emmanuel.riou at dazzl.tv
Thu Jan 19 12:43:32 EET 2017

Hello everyone,

I am using livav-ffmpeg (ubuntu 16-04 LTS liav-ffmpeg packages) to 
forward RTP streams from a webRTC gateway to a streaming server. I have 
to remux my incoming RTP streams (i.e my audio and my video stream) 
using a RTSP muxer in order to contact my streaming server:

- Incoming RTP audio packets are encoded in OPUS, I transcode them into 
AAC before sending them to the RTSP muxer, which works fine

- On the video side, I get h264 packets from the incoming RTP video 
stream, that I just want to re-inject into the output RTSP muxer. I am 
struggling to do this correctly.

On the video side, what I do basically is:

- I create an AVPacket from my incoming h264 payload I get from my 
incoming RTP video stream

- I setup my packet.stream_index to make it point to my RTSP video stream

- then I call av_write_frame(rtsp_format_context, &packet)

Only the audio is sent (and received correcly by my streaming server), 
on the video side, it enters rtp_write_packet function (I get "0: write 
len=..." messages), and then nothing, packet is never sent. Once 
rtp_write_packet is entered I don't understand why the packet is not 
sent?? What is weird is that if I don't create an audio stream (so my 
RTSP muxer contains only my video stream), my video is sent correctly. 
So the problem happens when I have 2 streams in my RTSP muxer. Do you 
have any explanation for this?

I know, anyway that what I am doing is not correct: As my RTSP video 
stream is initialized with a H264 codec id, rtp_write_packet is 
computing a new NAL for each new packet. But I already have a correct 
NAL in my incoming RTP payload that I would not like to strip out. 
Basically I would just like to forward my incoming RTP h264 payload with 
no modification into my RTSP muxer, is there a simple way to do this?

Thanks a lot,


More information about the Libav-user mailing list