ffmpeg - comprimir - ¿Por qué la transmisión rtp de un archivo de video.avi no se recibe?
ffmpeg comandos (2)
En lugar de ffplay rtp://127.0.0.1:1235
, usa ffplay -i foo.sdp
.
Cree el archivo local foo.sdp
pegándolo en el resultado de texto de ffmpeg que sigue a la línea SDP:
por ejemplo:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 55.2.100
m=video 1235 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1
El archivo .sdp incluye la dirección rtp, por lo que no necesita especificar rtp: // ... también.
En ffmpeg streamingGuide , escribe:
ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -ar 8000 -f mulaw -f rtp rtp://127.0.0.1:1234 &
ffplay rtp://127.0.0.1:1234
Quiero usar un archivo de video real para reemplazar la señal artificial. Luego escribo el siguiente en la terminal A:
ffmpeg -re -i outputFile.avi -f mulaw -f rtp rtp://127.0.0.1:1234
parece que está funcionando: la información del marco está contando. Aquí hay información sobre el terminal A al final:
frame= 309 fps= 29 q=31.0 Lsize= 931kB time=00:00:10.30 bitrate= 740.8kbits/s video:922kB audio:0kB subtitle:0 global headers:0kB muxing overhead 1.030813%
Cuando el marco en el terminal A todavía está contando (no terminado), escribo el siguiente en el terminal B:
ffplay rtp://127.0.0.1:1234
Pero no funciona: la información de error es:
[udp @ 0x7fb370001500] bind failed: Address already in useB f=0/0
rtp://127.0.0.1:1234: Input/output error
¿Por qué?
[Actualización 1] Siguiendo las instrucciones de Camille Goudeseune usé el foo.sdp
La entrada para el terminal ffmpeg es:
ffmpeg -re -i out.avi -f mulaw -f rtp rtp: //127.0.0.1: 1235
La terminal para ffplay es:
ffplay -i foo.sdp
El terminal de pantalla muestra muchos errores, sin imágenes.
libpostproc 52. 2.100 / 52. 2.100
[sdp @ 0x7fafdc0008c0] Undefined type (30) 0KB sq= 0B f=0/0
[sdp @ 0x7fafdc0008c0] nal size exceeds length: 25453 86 0B f=0/0
[sdp @ 0x7fafdc0008c0] Consumed more bytes than we got! (-25367)
[sdp @ 0x7fafdc0008c0] nal size exceeds length: 25453 86
[sdp @ 0x7fafdc0008c0] Consumed more bytes than we got! (-25367)
[sdp @ 0x7fafdc0008c0] Unhandled type (27) (See RFC for implementation details
[sdp @ 0x7fafdc0008c0] Undefined type (31) 0KB sq= 0B f=0/0
[sdp @ 0x7fafdc0008c0] Unhandled type (27) (See RFC for implementation details
[sdp @ 0x7fafdc0008c0] nal size exceeds length: 62414 6130B f=0/0
[sdp @ 0x7fafdc0008c0] Consumed more bytes than we got! (-61801)
[sdp @ 0x7fafdc0008c0] nal size exceeds length: 62414 613
[sdp @ 0x7fafdc0008c0] Consumed more bytes than we got! (-61801)
[h264 @ 0x7fafdc003020] non-existing PPS referencedq= 0B f=0/0
[h264 @ 0x7fafdc003020] non-existing PPS 0 referenced
[h264 @ 0x7fafdc003020] decode_slice_header error
[h264 @ 0x7fafdc003020] Invalid mix of idr and non-idr slices
[sdp @ 0x7fafdc0008c0] Undefined type (31) 0KB sq= 0B f=0/0
[sdp @ 0x7fafdc0008c0] Unhandled type (29) (See RFC for implementation details
[sdp @ 0x7fafdc0008c0] Unhandled type (26) (See RFC for implementation details
[sdp @ 0x7fafdc0008c0] Unhandled type (27) (See RFC for implementation details
Last message repeated 2 times 0KB vq= 0KB sq= 0B f=0/0
[sdp @ 0x7fafdc0008c0] Undefined type (31)
[sdp @ 0x7fafdc0008c0] Unhandled type (26) (See RFC for implementation details
[sdp @ 0x7fafdc0008c0] Unhandled type (25) (See RFC for implementation details
[h264 @ 0x7fafdc003020] insane cropping not completely supported, this could look slightly wrong ... (left: 2, top: 2)
[h264 @ 0x7fafdc003020] illegal aspect ratio
[h264 @ 0x7fafdc003020] missing picture in access unit with size 84589
[h264 @ 0x7fafdc003020] Partitioned H.264 support is incomplete
[h264 @ 0x7fafdc003020] insane cropping not completely supported, this could look slightly wrong ... (left: 2, top: 2)
[h264 @ 0x7fafdc003020] illegal aspect ratio
[h264 @ 0x7fafdc003020] insane cropping not completely supported, this could look slightly wrong ... (left: 2, top: 2)
[h264 @ 0x7fafdc003020] illegal aspect ratio
[h264 @ 0x7fafdc003020] no frame!
[h264 @ 0x7fafdc003020] RTP: missed 2563 packetsB sq= 0B f=0/0
[sdp @ 0x7fafdc0008c0] Undefined type (30)
Last message repeated 1 times
[sdp @ 0x7fafdc0008c0] Undefined type (31)
ffplay rtp://127.0.0.1:1234
comenzará a escuchar en el puerto UDP 1234
para el tráfico RTP entrante.
solo una sola aplicación puede escuchar en cualquier puerto dado en un host en cualquier momento dado.
el error "bind failed: Address already in use" indica que otra aplicación ya está escuchando en el puerto 1234
. ¿Probablemente sigas ejecutando el script de tus pruebas?
detener la aplicación que está bloqueando el puerto o usar un puerto diferente.