2012-03-28 14 views
6

Quindi, ho lavorato con FFMPEG su un progetto che prevede lo streaming di video da un computer a un altro su Internet con RTP. Voglio prenderlo in ffmpeg e usare ffserver per visualizzarlo su una rete locale.Come generare file SDP da FFMPEG

Come ho capito, è necessario disporre di informazioni SDP in modo che l'istanza ffmpeg ricevente possa interpretare il flusso RTP. Nonostante ciò che dicono le pagine web, non riesco a trovare le informazioni SDP nelle informazioni stampate sulla console.

Come posso forzare l'istanza di ffmpeg di trasmissione a emettere le informazioni SDP in modo che possa usarlo per configurare il destinatario finale?

In questo momento, sto testando su Windows 7, ma la soluzione finale sarà su Linux.

Il comando sto correndo per il test è

ffmpeg -fflags +genpts -i files\2005-SFSD-sample-mpeg1.mpg -threads 0 -r 10 -g 45 
-s 352x240 -deinterlace -y 2005.mp4 -an -threads 0 -r 10 -g 45 -s 352x240 
-deinterlace -f rtp rtp://192.168.200.198:9008 

mio informazioni FFmpeg è ...

ffmpeg version 0.8, Copyright (c) 2000-2011 the FFmpeg developers built on Jun 23 2011 14:22:23 with gcc 4.5.3 
configuration: 
--disable-static 
--enable-shared 
--enable-gpl 
--enable-version3 
--enable-memalign-hack 
--enable-runtime-cpudetect 
--enable-avisynth 
--enable-bzlib 
--enable-frei0r 
--enable-libopencore-amrnb 
--enable-libopencore-amrwb 
--enable-libfreetype 
--enable-libgsm 
--enable-libmp3lame 
--enable-libopenjpeg 
--enable-librtmp 
--enable-libschroedinger 
--enable-libspeex 
--enable-libtheora 
--enable-libvorbis 
--enable-libvpx 
--enable-libx264 
--enable-libxavs 
--enable-libxvid 
--enable-zlib 
--disable-outdev=sdl 
    libavutil 51. 9. 1/51. 9. 1 
    libavcodec 53. 7. 0/53. 7. 0 
    libavformat 53. 4. 0/53. 4. 0 
    libavdevice 53. 1. 1/53. 1. 1 
    libavfilter 2. 23. 0/2. 23. 0 
    libswscale 2. 0. 0/2. 0. 0 
    libpostproc 51. 2. 0/51. 2. 0 

risposta

1

Normalmente, quando l'uscita è un flusso RTP, stampe ffmpeg le informazioni SDP nel console in modo da avere solo per destinarli (e quindi utilizzare lo sdp):

ffmpeg -fflags +genpts -i files\2005-SFSD-sample-mpeg1.mpg -an -threads 0 -r 10 -g 45 -s 352x240 -deinterlace -f rtp rtp://192.168.200.198:9008 > config.sdp 

Ma da anni ur comando sembra che tu voglia fare una codifica per due uscite ... se le due uscite sono rtp (utile per video + audio) funziona bene, ma non potevo farlo stampare per sdp quando 1 output è rtp e l'altro mp4 ... non sono sicuro se possibile

In ogni caso, ciò che si può fare è generare il file sdp per la prima volta, e finché non si cambiano le caratteristiche del video (formato di risoluzione ...) o l'indirizzo rtp questo file sdp sarà valido, e il tuo comando precedente funzionerebbe con esso !!

speranza che questo aiuta

+0

http://lucabe72.blogspot.com/2010/04/rtp-streaming-with-ffmpeg.html può essere correlato – rogerdpack

+0

Questo è il mio comando: ffmpeg -i rtp: //239.255.42.42: 5004 c: /33030ooo.mp4> c: /config.sdp ----- ma reso config.sdp è vuoto! –

+0

@ Mr.Hyde vuoi trasmettere il video mp4 tramite rtp, giusto? Prova questo (non l'ho provato con il nuovo ffmpeg cli) 'ffmpeg -i c: /33030ooo.mp4 rtp: //239.255.42.42: 5004> c:/config.sdp' – code7amza

1

Solo nel caso qualcuno stava cercando di trovare il modo di fare questo con il codice di ffmpeg C, è possibile utilizzare av_sdp_create-generate an sdp string

0

FFMPG genera un file di SDP quando specificato con -sdp_file path/to/file

Documentazione estratto:

-sdp_file file (global) Print sdp information for an output stream to file. This allows dumping sdp information when at least one output isn’t an rtp stream. (Requires at least one of the output formats to be rtp).