2012-03-28 31 views
6

Por lo tanto, he estado trabajando con FFMPEG en un proyecto que implica la transmisión de video de una computadora a otra a través de Internet con RTP. Quiero llevarlo a ffmpeg y usar ffserver para mostrarlo en una red local.Cómo generar un archivo SDP desde FFMPEG

Según tengo entendido, debe tener una información SDP para que la instancia receptora ffmpeg pueda interpretar la transmisión RTP. A pesar de lo que dicen las páginas web, no puedo encontrar la información SDP en la información impresa en la consola.

¿Cómo puedo forzar a la instancia de transmisión ffmpeg a generar la información SDP para que pueda usarla para configurar mi receptor?

En este momento, estoy probando en Windows 7, pero la solución final será en Linux.

El comando que estoy corriendo para la prueba es

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 

Mi información ffmpeg es ...

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 

Respuesta

1

Normalmente, cuando la salida es un flujo RTP, impresiones ffmpeg la información en el SDP consola por lo que sólo tiene que redirigir (y luego utilizar el 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 

Pero hasta años Tu comando parece que quieres hacer una codificación para dos salidas ... si las dos salidas son rtp (útil para video + audio) funciona bien, pero no pude hacer que imprima el sdp cuando 1 salida es rtp y el otro mp4 ... no estoy seguro si es posible

De todos modos, lo que puedes hacer es generar el archivo sdp por primera vez, siempre que no cambies las características del video (formato de resolución ...) o la dirección rtp de este archivo sdp será válida, ¡y su comando anterior funcionaría con ella!

esperanza esto ayuda

+0

http://lucabe72.blogspot.com/2010/04/rtp-streaming-with-ffmpeg.html pueden estar relacionados – rogerdpack

+0

Este es mi comando: ffmpeg -i rtp: //239.255.42.42: 5004 c: /33030ooo.mp4> c: /config.sdp ----- pero hecho config.sdp está vacío! –

+0

@ Mr.Hyde quieres transmitir el video de mp4 a través de rtp, ¿verdad? Pruebe esto (no lo he probado con el nuevo cli de ffmpeg) 'ffmpeg -i c: /33030ooo.mp4 rtp: //239.255.42.42: 5004> c:/config.sdp' – code7amza

1

Sólo en caso de que alguien estaba tratando de encontrar la manera de hacer esto con el código de FFmpeg C, puede utilizar av_sdp_create a generate an sdp string

0

ffmpg genera un fichero SDP Si se especifica con extracto -sdp_file path/to/file

Documentación:

-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).

Cuestiones relacionadas