Código FFmpeg que implementa la transmisión push de medios (RTSP)
Recientemente, necesitamos realizar una grabación en tiempo real y enviar el video al servidor RTSP. El proceso específico es capturar el contenido de la pantalla (mapa de bits), convertir el mapa de bits a YUV y luego codificar el YUV. H264 y luego envíe la transmisión H264 al servidor RTSP y codifique el PCM capturado en AAC y luego envíe el AAC al servidor RTSP.
Después de leer un artículo de Thor: El empujador más simple basado en FFmpeg (tomando el envío RTMP como ejemplo), envió archivos de video locales a un servidor RTMP, que no cumplía con mis requisitos.
Luego encontré otro artículo: ffmpeg implementa la compresión H264 y la envía a RTSP. Solo tiene codificación de imagen, no codificación de audio y no se puede reproducir correctamente después de presionar.
Combiné las ideas de las dos personas anteriores y encontré información para implementar esta función.
El servidor RTSP utiliza la versión de prueba gratuita de HappyTime.
El mapa de bits que capturé está en formato BGRA, por lo que el formato de imagen utilizado es AV_PIX_FMT_BGRA, y cropImage es una matriz que contiene imágenes rgba
Llamada:
Desde que am La pantalla se captura en tiempo real, por lo que frame_yuv-gt;pts se establece en la marca de tiempo actual para garantizar una reproducción correcta.
Llamada:
Llamada:
donde pcm_buff es una matriz que contiene datos pcm
Usar transmisión udp en un enlace roto Más de 1400 tramas, el motivo no está claro, por lo que se utiliza la transmisión del protocolo tcp
El retraso es de aproximadamente 1,5 segundos
Referencia:
/ leixiaohua1020/article/ detalles/39803457
/yunge812/article/details/79345584
https://trac.ffmpeg.org/wiki