Simule una cámara de vigilancia basada en ffmpeg para generar una transmisión de video rtsp y reproducirla en opencv

Al desarrollar un proyecto de transmisión de video (videovigilancia), generalmente se desarrolla en una computadora de escritorio y no se puede conectar directamente a la cámara, por lo que es necesario usar ffmpeg para insertar el video mp4 grabado en una transmisión de video rtsp y luego llevar a cabo el desarrollo de la simulación. Esta publicación de blog incluye ffmpeg (transmisión push), EasyDarwin (servidor de transmisión de video), oepncv (transmisión de extracción de código), vlc (reproducción de transmisión de video rtsp).

1. Entorno básico

1.1 ffmpeg

Dirección del sitio web oficial: http://ffmpeg.org/

ffmpeg es un conversor de vídeo y audio muy rápido, un programa de línea de comandos del proyecto de código abierto FFmpeg (grupo de expertos en imágenes en movimiento Fast Forward). Puede convertir entre frecuencias de muestreo arbitrarias y cambiar el tamaño de los vídeos en tiempo real con filtros polifásicos de alta calidad.ffmpeg支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。

Dirección de descarga : https://github.com/BtbN/FFmpeg-Builds/releases Descargue según la versión del sistema personal y la situación real
Insertar descripción de la imagen aquí

Configuración de instalación : El blogger descargó una versión que no se puede utilizar para el desarrollo de programación y no hay un directorio de inclusión después de la descompresión. Para configurar ffmpeg, solo necesita agregar su ruta bin a la ruta de la variable de entorno del sistema.
Insertar descripción de la imagen aquí

1.2 fácil dibujar

Dirección del sitio web oficial: https://www.easydarwin.org/

EasyDarwin es un marco de servidor de medios de transmisión de código abierto de alto rendimiento con las siguientes características:
1. Admite multiplataforma y puede ejecutarse en múltiples plataformas, como Windows, Linux y Mac OS.
2. Admite múltiples protocolos de transmisión, incluidos HTTP, RTMP, UDP, etc.
3. Admite múltiples formatos de codificación de audio y video, incluidos H.264, AAC, etc.
4. Admite múltiples formatos de almacenamiento, incluidos MP4, FLV, etc.
5. Admite procesamiento concurrente multicanal.
6. Escrito en C++, el código es conciso y eficiente.

Dirección de descarga : https://github.com/EasyDarwin/EasyDarwin/releases/tag/v8.1.0
Insertar descripción de la imagen aquí
Configuración de instalación : EasyDarwin se puede usar sin instalación o se puede instalar y usar.
Insertar descripción de la imagen aquí

1.3 VLC

Dirección del sitio web oficial: https://www.videolan.org/

VLC Media Player (reproductor multimedia VLC), originalmente llamado cliente VideoLAN, es un producto de la marca VideoLAN y un reproductor multimedia planificado por VideoLAN. Admite muchos decodificadores de audio y video y formatos de archivo, y admite discos de audio y video DVD, discos de audio y video VCD y varios protocolos de transmisión. También se puede utilizar como servidor de transmisión de unidifusión o multidifusión a través de una conexión de red de alta velocidad de IPv4 o IPv6. Combina el decodificador del proyecto FFmpeg y la biblioteca libdvdcss para tener la función de reproducir archivos multimedia y cifrar discos DVD.

Dirección de descarga : https://www.videolan.org/Configuración
Insertar descripción de la imagen aquí
de instalación : VLC no requiere ninguna configuración adicional, simplemente instálelo de acuerdo con la configuración predeterminada del proceso normal.

1.4 OPENCV

OpenCV es una biblioteca de software multiplataforma de visión por computadora y aprendizaje automático publicada bajo la licencia Apache 2.0 (código abierto) y puede ejecutarse en los sistemas operativos Linux, Windows, Android y Mac OS. [1] Es liviano y eficiente: consta de una serie de funciones C y una pequeña cantidad de clases C ++. También proporciona interfaces en Python, Ruby, MATLAB y otros lenguajes, e implementa muchos algoritmos comunes en procesamiento de imágenes y visión por computadora. .

Para conocer la configuración de instalación de la versión C++, consulte: https://blog.csdn.net/m0_74259636/article/details/128525031?spm=1001.2014.3001.5502

Esta publicación de blog utiliza la versión Python de opencv y el comando de instalación es:pip install opencv-python

2. rtsp empujar el flujo y tirar del flujo

2.1 Descargar vídeos

You-Get es una pequeña utilidad de línea de comandos desarrollada en Python, que puede descargar directamente contenido multimedia (video, audio, imagen), etc. desde la Web con una línea de comandos sin ninguna configuración. Utilice la herramienta you-get (paquete de software Python) para descargar vídeos de la mayoría de las páginas web.
Comando de instalación:pip install you-get

Ejemplos de uso

1. Busque la página de reproducción donde desea descargar el video y copie la ruta de la página (URL, el cuadro rojo en la imagen). 2.
Insertar descripción de la imagen aquí
Ejecute el siguiente comando en el entorno Python con el paquete you-get instalado, donde el rojo La parte es la página donde desea descargar el video Ruta (ajustar a circunstancias personales)

Insertar descripción de la imagen aquí
3. El resultado de la descarga es como se muestra a continuación: Hay un archivo xml que no sirve de nada.

Insertar descripción de la imagen aquí

2.2 Empujar vídeo

Inicie el servidor de transmisión de video RTSP

Busque EasyDarwin.exe y haga doble clic en él. Genera dos direcciones: una es la dirección del flujo de inserción rtsp (generalmente la IP local) y la otra es la dirección del fondo de administración.
Insertar descripción de la imagen aquí
Los detalles del contenido de fondo son los siguientes.
Insertar descripción de la imagen aquí

Transmisión push usando ffmpeg

Para obtener detalles de uso, consulte: https://www.python100.com/html/80310.html
El comando de inserción de bucle es el siguiente: reemplace el parámetro correspondiente a -i con su propio nombre de archivo

ffmpeg -re -stream_loop -1 -i 风景视频素材分享.flv -c copy -f rtsp rtsp://127.0.0.1:554/input

Cuando aparece la siguiente interfaz, la inserción es exitosa.
Insertar descripción de la imagen aquí

2.3 Reproducción en streaming

Utilice VLC para transmitir y reproducir

Abra VLC >> Medios >> Abrir transmisión de red
Insertar descripción de la imagen aquí
y luego ingrese la dirección de transmisión de video rtsp y haga clic en reproducir,
Insertar descripción de la imagen aquí
el efecto de reproducción es el siguiente:
Insertar descripción de la imagen aquí

Utilice opencv para transmitir y jugar

Usar opencv para transmitir solo puede obtener la parte de la imagen. El código de uso específico es el siguiente. El fotograma que obtiene es cada fotograma de imagen, pudiendo realizar posteriormente otras operaciones de programación.

import cv2
rtsp="rtsp://127.0.0.1/input"
cap = cv2.VideoCapture(rtsp)
if cap.isOpened():
    print("Opened")
while cap.isOpened():
    ret, frame = cap.read()
    cv2.imshow(rtsp,frame)
    cv2.waitKey(1)

El efecto de ejecución del programa se muestra a continuación y el contenido de la interfaz se actualiza constantemente.
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_74259636/article/details/133215010
Recomendado
Clasificación