2010-06-28 17 views
7

estaré enormemente agradecido si usted me puede ayudar con un problema de transmisión de H264 que he estado tratando de resolver durante semanas.Streaming de vídeo H.264 a través de RTP de Live555 a VLC

necesito para transmitir vídeo H264 de Live555 (en una máquina Linux) a VLC Media Player (en una máquina Windows). Con RTSP funciona muy bien, pero necesito usar RTP sin RTSP, y con RTP no veo ningún video. VLC ni siquiera reconoce que la transmisión es H264.

Este es el archivo SDP transmitido a través de RTSP (la configuración que funciona):

v=0 
o=- 1277647151953158 1 IN IP4 190.40.14.100 
s=Session streamed by "testH264VideoAudioStreamer" 
i=test-h264-mux.mpg 
t=0 0 
a=tool:LIVE555 Streaming Media v2007.05.24 
a=type:broadcast 
a=control:* 
a=source-filter: incl IN IP4 * 190.40.14.100 
a=rtcp-unicast: reflection 
a=range:npt=0- 
a=x-qt-text-nam:Session streamed by "testH264VideoAudioStreamer" 
a=x-qt-test-inf:test-h264=mux.mpg 
m=video 8554 RTP/AVP 96 
c=IN IP4 190.40.15.63/7 
a=rtpmap:96 H264/90000 
a=fmtp:96 packetization-mode=1;profile-level-id=000042;sprop-parameter-sets=H264 
a=control:track1 

Pero si cambio de RTSP a RTP, que no funciona. He intentado cargar el archivo SDP anterior en el reproductor VLC, pero no ayuda.

Aquí es parte de la salida de depuración de 0.8.6C VLC Player:

main input debug: thread 4016 (input) created at priority 1 (input/input.c:265) 
main input debug: `rtp://@190.40.15.63:8554' gives access `rtp demux' `' path `@190.40.15.63:8554' 
main input debug: creating demux: access='rtp' demux='' path='@190.40.15.63:8554' 
main demuxer debug: looking for access_demux module: 0 candidates 
main demuxer warning: no access_demux module matched "rtp" 
main input debug: creating access 'rtp' path='@190.40.15.63:8554' 
main access debug: looking for access2 module: 6 candidates 
access_udp access debug: opening server=:0 local=190.40.15.63:8554 
main access debug: net: connecting to '[]:[email protected][190.40.15.63]:8554 
main access debug: looking for netrowk module: 1 candidate 
ipv6 access debug: 190.40.15.63: Host or service not found 
main access debug: using network module "ipv6" 
main access debug: removing network module "ipv6" 
main access debug: looking for netrowk module: 1 candidate 
ipv4 access debug: resolving 190.40.15.63:8554... 
ipv4 access debug: resolving :0... 
main access debug: using network module "ipv4" 
main access debug: removing network module "ipv4" 
main access debug: using access2 module "access_udp" 
main private debug: pre buffering 
access_udp access debug: no RTP header detected 
main input debug: creating demux: access='rtp' demux='' path='@190.40.15.63:8554' 
main demuxer debug: looking for demux2 module: 45 candidates 
ts demuxer warning: TS module discarded (lost sync) 
ffmpeg demuxer debug: detected format: mp3 

(Puede haber errores tipográficos porque tenía que copiar manualmente - no pregunte :))

En VLC 1.0.5 me sale un error de carga útil desconocida tipo, y el SDP no se puede cargar en absoluto debido a un error de pila desconocido red. Otros errores que aparezcan son informaciones de conexión SDP no compatibles y Sap advertencia demuxer: inválido SDP.

¡Cualquier ayuda será muy apreciada!

Gracias,

Ilya

+1

Un comentario rápido: su archivo SDP es técnicamente inválido. Debería estar en base 64 codificando la información de SPS y PPS, delimitándola con una coma y anexándola a sus conjuntos de parámetros de sprop. Lo está configurando para la cadena "H264", que definitivamente está mal (aunque muy común, por desgracia). – kidjan

Respuesta

8

Lo que tenía que hacer es usar un archivo SDP en lugar de abrir la corriente directa. Resulta que los datos SDP solo se transmiten cuando se usa RTSP. Al transmitir RTP, tuve que proporcionar el archivo SDP yo mismo.

Así que lo que hice fue:

  1. Secuencia con RTSP (el método que funciona),
  2. Uso de Wireshark para grabar el archivo SDP transmitido a través de RTSP,
  3. Guardar el SDP como un archivo de texto con .sdp extensión,
  4. En VLC, abra el archivo SDP en lugar de abrir la corriente de red directamente.

Y lo hizo magia!

Cuestiones relacionadas