Tengo dos Macs en mi red. En el primero quiero capturar la cámara de FaceTime a través de ffmpeg y hacer un feed RTSP disponible en la red, que puedo ver en el segundo Mac.
Respuesta
¿Demasiados anuncios?He implementado con éxito algo cercano a esto (no verdadero RTSP, sino RTP streaming sobre UDP) con el siguiente hardware y software:
- Macbook Pro 2012, MacOS Mojave 10.14.6
- ffmpeg versión 3.4.8
- ffplay versión 4.3.2 (mi ejecutable se llamaba
ffplay4
)
Enumerar los dispositivos de entrada de audio y vídeo con ffmpeg -f avfoundation -list_devices true -i ""
En el MBP de 2012, el primer dispositivo de vídeo (índice 0
) es FaceTime HD Camera (Built-in)
y el primer dispositivo de audio (índice 0
) es Built-in Microphone
.
La captura/envío de vídeo y la recepción/reproducción de vídeo pueden realizarse en la misma máquina, o ffmpeg
puede enviar a una IP remota. En este ejemplo, está enviando un flujo de transporte MPEG a través de UDP a la dirección loopback 127.0.0.1:9988
pero podría ser fácilmente la dirección IP y el puerto de otro Mac:
ffmpeg \
-f avfoundation \
-pix_fmt yuyv422 \
-video_size 320x240 \
-framerate 15 \
-i "0:0" -ac 2 \
-vf format=yuyv422 \
-vcodec libx264 -maxrate 2000k \
-bufsize 2000k -acodec aac -ar 44100 -b:a 128k \
-f rtp_mpegts udp://127.0.0.1:9988
Para recibir y reproducir el vídeo:
ffplay4 -i udp://@0.0.0.0:9988
Puede tardar unos segundos en iniciarse y habrá algunos errores al principio, pero el vídeo debería empezar a reproducirse en ffplay4
en un par de segundos.
Bonificación: este flujo también se puede ver con VLC (versión 3.0.12). File
-> Open Network
-> URL
rtp://@127.0.0.1:9988
. De nuevo, tardará unos segundos (5-10) en empezar a mostrar el vídeo.
Feliz transmisión.