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
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.
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
Configuración de instalación : EasyDarwin se puede usar sin instalación o se puede instalar y usar.
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
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.
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)
3. El resultado de la descarga es como se muestra a continuación: Hay un archivo xml que no sirve de nada.
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.
Los detalles del contenido de fondo son los siguientes.
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.
2.3 Reproducción en streaming
Utilice VLC para transmitir y reproducir
Abra VLC >> Medios >> Abrir transmisión de red
y luego ingrese la dirección de transmisión de video rtsp y haga clic en reproducir,
el efecto de reproducción es el siguiente:
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.