[Libav-user] RTP VP8 payload, keyframe, the proper way to send correct RTP VP8 packets

William MANCON wmancon at gmail.com
Mon Oct 19 14:44:25 CEST 2015


Hi,
I'm trying to write a plugin for a webrtc gateway (Janus). Basicaly, the
code deals with incomping RTP packet (not SRTP, as the gateway decrypt et
demux RTCP ...), depacketize it, decode it with the use of
avcodec_decode_video2. Some manipulations are made on the raw outputted
frames and then frame are encoded with avcodec_encode_video (not
avcodec_encodevideo2 because it's not available on my system for a
mysterious reason. )

Then, with the use of libavformat I write the encoded frame in "rtp" (tu
specific url rtp://127.0.0.1:5000).
another plugin of the gateway send the stream to a list of participant.

But, nobody could render the video. Chrome send a pli for each packet
received. So i tried to force the encoder to send a keyframe :

if(complete_frame%140 == 0)
                    m_pFrame->pict_type = FF_I_TYPE ;
just before the call of avcodec_encode_video

But nothing change.
After some investigations i discovered strange things in the output of the
decoder :

I tried to parse header of packets from avcodec_encode_video and it never
contain this :

/* vet via sync code */
                    if(c[0]!=0x9d||c[1]!=0x01||c[2]!=0x2a)
                        JANUS_LOG(LOG_WARN, "First 3-bytes after header not
what they're supposed to be?\n");

the "keyframe marker". But all packet contains xbit = 1, sbit = 1 and pbit
= 0. That is what we have in the case of a keyframe.

Also i get this message from the lib when beginin the process : RTP VP8
payload implementation is incompatible with the latest spec drafts.

The question is, what is the proper way to get valid VP8 packets and RTP
VP8 packet.
I need to set the correct RTP payload for the streamer configuration so how
can I access to it through libavformat ?

Thanks a lot for your advices.
William.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20151019/c25f6b21/attachment.html>


More information about the Libav-user mailing list