[FFmpeg-devel] RTP input stream blocks ffmpeg

Yohann Martineau yohann.martineau
Thu Sep 20 12:34:11 CEST 2007


Hello,

Thank you for your answer, thank you for helping ffmpeg-newbies like me...

Luca Abeni a ?crit :
> Hi,
> 
> I believe this question belongs to ffmpeg-users, anyway:
> 
> Yohann Martineau wrote:
>> I'm trying to transcode a video stream sent over RTP from h263 to 
>> mpeg2video, and to forward this transcoded stream over RTP.
> 
> AFAIK, ffmpeg does not support receiving h.263 in RTP (support for the 
> h.263 payload is not implemented).

Yes, it seems that it's not possible directly. But I made a capture of 
my stream with wireshark, dumped the h263 payload in a raw file and 
opened this raw file successfully with ffmpeg (and with ffplay), giving 
the appropriated format/codec info:

$ ffmpeg.exe -f h263 -vcodec h263 -i h263.raw

Thus, I thought it was possible to open this raw stream from network 
instead of file. I wrote a small application in java that takes my 
RTP/H263 stream as input and dumps the raw payload on another port. But 
I don't know if it's possible to specify ffmpeg a port on which it 
should listen for incoming packets...

> 
> 
>> The following command gets stuck:
>> $ ffmpeg.exe -i rtp://192.168.1.45:10002
> 
> I suspect this command line is wrong. You need to use an rtsp:// url, or 
> to provide an SDP file.
> 

You're right, I just discovered that it was possible to give a .sdp text 
file as input to ffmpeg...

So I tried several commands to stream my video and receive it with ffmpeg.

Here is the first command I used to stream my video:

$ ffmpeg.exe -f h263 -vcodec h263 -i h263.raw -f rtp 
rtp://192.168.1.45:10002

This command gives me a session description:

v=0
o=- 0 0 IN IPV4 127.0.0.1
t=0 0
s=No Name
a=tool:libavformat
c=IN IP4 192.168.1.45
m=video 10002 RTP/AVP 34

I put this in a text file called test.sdp.

Then I provide this file as input for ffmpeg:

$ ffmpeg.exe -i test.sdp

And I launch my previous streaming command. ffmpeg then finds the video 
stream and ask me for an output file. great.

But when I try to transcode and stream with the following command:

$ ffmpeg.exe -f h263 -vcodec h263 -i h263.raw -f rtp -vcodec mpeg2video 
rtp://192.168.1.45:10002

The ffmpeg instance that receives packets says nothing.

Diving into SDP, i saw that the media attribute of the sdp generated 
without '-vcodec mpeg2video' gives a payload type of 35, which 
corresponds to H263. This is ok. When I launch the command with '-vcodec 
mpeg2video', the payload type is 96, which is a dynamic payload type. 
But there is no a=rtpmap:96 ... in the sdp generated.
If I launch the command with '-vcodec mpeg4', here is the end of the SDP:

m=video 10002 RTP/AVP 96
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=1

This one is ok. The dynamic payload type is described in an attribute.

> 
>> I try to get codec information from this command line. But I have 
>> nothing on my console.
> 
> Maybe you even wrote the wrong IP:port. Note that you likely need to 
> specify "?local_port=..." in the url.
> 
> 

Once again: thank you.

Asterisk was "the future of telephony", but ffmpeg is "the future of 
television" !

yohann

> 				Luca
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at mplayerhq.hu
> http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
> 
> 





More information about the ffmpeg-devel mailing list