Monibucav4 (servidor de medios de transmisión de código abierto) crea un servidor rtmp en Windows y realiza la extracción de secuencias de video rtsp y la conversión de reproducción flv

Escenas

El servidor de transmisión de medios de código abierto ZLMediaKit se ejecuta en Windows, lo configura, extrae la transmisión a pedido (extrae la transmisión de video rtsp de la cámara) y usa la página web http-flv para reproducir:

El servidor de medios de transmisión de código abierto ZLMediaKit se ejecuta en Windows, lo configura y extrae la transmisión de video rtsp de la cámara a pedido) y usa la página web http-flv para reproducir_srs extrae la transmisión a pedido_Blog de temperamento pícaro dominante-blog CSDN

Lo anterior describe el proceso de uso de ZLMediaKit.

A continuación se presenta otro servidor de transmisión de código abierto.

Cuello

Monibuca: marco de desarrollo de servidor de transmisión de complementos de código abierto en lenguaje GO | Monibuca

Monibuca (pronunciación: analog not card, m7s es su abreviatura, similar a k8s) es un marco de desarrollo de lenguaje Go de código abierto para servidores de streaming de medios.

Se basa en go1.19+, sin ninguna otra dependencia, y proporciona un conjunto de modelos de desarrollo secundarios complementarios para ayudarle a desarrollar eficientemente servidores de medios de transmisión.

Puede utilizar directamente los complementos oficiales o desarrollar sus propios complementos para ampliar cualquier función, por lo que Monibuca es un marco que puede admitir cualquier protocolo de transmisión de medios.

 

Nota:

Blog:
Domineering Rogue Temperament_C#, Architecture Road, Blog SpringBoot-CSDN

lograr

1. Instalación y configuración en Windows

Inicio rápido | Monibuca

Descargue el paquete de instalación según el tutorial anterior.

Seleccione la versión correspondiente para descargar, aquí está Windows

https://download.m7s.live/bin/m7s_windows_amd64.tar.gz

Después de la descarga, descomprímalo y haga doble clic en m7s.exe para iniciarlo.

El m7 ha habilitado todos los complementos de forma predeterminada, por lo que ha comenzado a escuchar puertos de todos los protocolos como rtmp, rtsp, gb28181, etc., y puede enviar la transmisión directamente al m7.

2. Empuja y juega

flujo de empuje:

a través de OBS, presione a rtmp://localhost/live/test
a través de ffmpeg, ffmpeg -i [fuente de video] -c:v h264 -c:a aac -f flv rtmp://localhost/live/test
a través de ffmpeg, ffmpeg -i [Fuente del vídeo] -c:v h264 -c:a aac -f rtsp rtsp://localhost/live/test
Envíe la transmisión a través de la página de prueba de webrtc, visite http://localhost:8080/webrtc/test/publish
para pass Configure la dirección del servidor SIP para la cámara de esta máquina y especifique el puerto 5060 para enviar la transmisión del dispositivo al m7s.

jugar:

Al acceder a http://localhost:8080/preview/, puede obtener una vista previa de todas las transmisiones (múltiples páginas de vista previa de protocolos),
puede reproducir transmisiones rtmp a través de ffplay, ffplay rtmp://localhost/live/test,
puede reproducir transmisiones rtsp a través de ffplay, ffplay rtsp://localhost/live/test
puede reproducir su transmisión a través de ffplay, ffplay http://localhost:8080/hls/live/test.m3u8

prueba:

Pruebe usando FFmpeg para enviar video al servidor rtmp

Utilice las siguientes instrucciones de FFmpeg

ffmpeg.exe -re  -stream_loop -1 -i D:\test\22.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.11935/hls/123

El puerto predeterminado del servicio rtmp es 1935

Luego puede usar vlc, etc. para reproducir la siguiente dirección directamente a través de las reglas de reproducción

http://127.0.0.1:18080/hdl/hls/123.flv

O puede acceder directamente a su API de vista previa para obtener una vista previa y realizar pruebas.

http://127.0.0.1:18080/vista previa

 

Haga clic en hls/123 para llegar a la página de vista previa

 

Puede hacer clic en el botón de reproducción a continuación para probar y también puede ver la URL de reproducción completa aquí.

Tenga en cuenta que el puerto de la interfaz http aquí cambia del 8080 predeterminado a 18080; consulte a continuación para modificar el archivo de configuración.

Precauciones

Para la transmisión ffmpeg, agregue -c:v h264 -c:a aac; de lo contrario, no se podrá utilizar el formato de video iniciado.

StreamPath debe tener el formato live/test. No puede tener un solo nivel ni comenzar con una barra, como /live está mal.

La transmisión en m7s tiene un identificador único que es StreamPath. La regla de StreamPath es [AppName]/[StreamName], donde AppName es el nombre de la aplicación y StreamName es el nombre de la transmisión.

Por ejemplo, en vivo/prueba, donde en vivo es AppName y prueba es StreamName. Siempre que conozca la ruta de la transmisión, podrá reproducir la transmisión con cualquier protocolo.

Si h265 se reproduce en formato flv o rtmp, se debe utilizar un reproductor personalizado (como jessibuca) para reproducirlo. Debido a que flv y rtmp no definen el formato de h265,

Entonces se logra por extensión.

Reglas de empalme de direcciones

Normalmente, la regla de dirección de reproducción es [protocolo]://[Host][:Puerto]/[nombre del complemento]/[StreamPath]

[nombre del complemento]

Entre ellos, el nombre del complemento debe concatenarse solo para el puerto http público. Incluyendo el protocolo websocket, a saber, ws-flv y ws-raw.

Si el host es localhost, streamPath está en vivo/prueba

La dirección del protocolo HTTP-FLV es http://localhost:8080/hdl/live/test.flv

La dirección del protocolo fmp4 es http://localhost:8080/fmp4/live/test.mp4

La dirección del protocolo hls es http://localhost:8080/hls/live/test.m3u8

La dirección del protocolo ws-flv es ws://localhost:8080/jessica/live/test.flv

La dirección del protocolo ws-raw es ws://localhost:8080/jessica/live/test

protocolo ws-raw

El protocolo ws-raw es un protocolo privado y sólo se puede jugar a través del reproductor jessibuca.

número de puerto http

El número de puerto predeterminado del protocolo http es 8080, que se puede modificar mediante la configuración global. Para los complementos que incluyen la configuración http, el número de puerto se puede configurar por separado. El uso de un único número de puerto elimina la necesidad de concatenar el nombre del complemento en la dirección. Por ejemplo, en el ejemplo anterior, si el complemento hdl configura el número de puerto http por separado como 8081, la dirección es: http://localhost:8081/live/test.flv

La dirección de reproducción rtmp es rtmp://localhost/live/test

La dirección de reproducción rtsp es rtsp://localhost/live/test

número de puerto predeterminado

El número de puerto predeterminado de rtmp es 1935 y el número de puerto predeterminado de rtsp es 554. Si no está configurado, se utiliza el número de puerto predeterminado.

Entonces la dirección puede omitir el número de puerto.

dirección de reproducción webrtc

De hecho, webrtc no tiene la llamada dirección de reproducción, sino que la reproduce a través de js api. La API específica puede hacer referencia a la reproducción de webrtc si juegas webrtc tú mismo

Puede consultar MDN: API WebRTC - API web | MDN

Primero debes completar el intercambio sdp y luego jugar a través de la conexión webrtc establecida. Jessibuca simplifica el proceso anterior en una dirección:

webrtc://localhost/live/test, de hecho, primero establece una conexión de intercambio sdp con el servidor y luego establece una conexión webrtc a través de esta conexión.

3. Si desea modificar el archivo de configuración

Configuración | Monibuca

v4 admite el inicio sin configuración de forma predeterminada, es decir, puede ejecutarse sin archivos de configuración. Si hay un archivo de configuración, la configuración en el archivo de configuración anulará la configuración predeterminada.

configuración global

Los siguientes son los elementos de configuración predeterminados, por lo que no es necesario copiarlos al archivo de configuración, solo necesita completar la parte que debe modificarse en el archivo de configuración para anular la configuración predeterminada.

global:
  disableall: false # 是否禁用所有插件
  loglang: zh # 日志语言,可选值:zh,en
  loglevel: info # 日志级别,可选值:debug,info,warn,error,panic,fatal
  http:
    listenaddr: :8080 # 网关地址,用于访问API
    listenaddrtls: :8443  # 用于HTTPS方式访问API的端口配置
    certfile: ""
    keyfile: ""
    cors: true  # 是否自动添加cors头
    username: ""  # 用户名和密码,用于API访问时的基本身份认证
    password: ""
    readtimeout: 0 # 读超时时间
    writetimeout: 0 # 写超时时间
    idletimeout: 0 # 空闲超时时间
  publish:
      pubaudio: true # 是否发布音频流
      pubvideo: true # 是否发布视频流
      kickexist: false # 剔出已经存在的发布者,用于顶替原有发布者
      insertsei: false # 是否启用插入SEI功能
      publishtimeout: 10s # 发布流默认过期时间,超过该时间发布者没有恢复流将被删除
      idletimeout: 0 # 发布者空闲超时时间,超过该时间发布者没有任何操作将被删除,0为关闭该功能
      delayclosetimeout: 0 # 自动关闭触发后延迟的时间(期间内如果有新的订阅则取消触发关闭),0为关闭该功能,保持连接。
      waitclosetimeout: 0 # 发布者断开后等待时间,超过该时间发布者没有恢复流将被删除,0为关闭该功能,由订阅者决定是否删除
      buffertime: 0 # 缓存时间,用于时光回溯,0为关闭缓存
      key: "" # 订阅者鉴权秘钥
      secretargname: secret # 订阅者鉴权参数名
      expireargname: expire # 订阅者鉴权过期时间参数名
      speedlimit: 500ms # 限速超时时间0为不限速,对于读取文件这类流需要限速,否则读取过快
  subscribe:
      subaudio: true # 是否订阅音频流
      subvideo: true # 是否订阅视频流
      subaudioargname: ats # 订阅音频轨道参数名
      subvideoargname: vts # 订阅视频轨道参数名
      subdataargname: dts # 订阅数据轨道参数名
      subaudiotracks: [] # 订阅音频轨道名称列表
      subvideotracks: [] # 订阅视频轨道名称列表
      submode: 0 # 订阅模式,0为跳帧追赶模式,1为不追赶(多用于录制),2为时光回溯模式
      syncmode: 0 # 音视频同步模式,0 为按照时间戳同步,1 为按照写入时间同步
      iframeonly: false # 只订阅关键帧
      waittimeout: 10s # 等待发布者的超时时间,用于订阅尚未发布的流
      writebuffersize: 0 # 订阅者写缓存大小,用于减少io次数,但可能影响实时性
      key: "" # 订阅者鉴权秘钥
      secretargname: secret # 订阅者鉴权参数名
      expireargname: expire # 订阅者鉴权过期时间参数名
      internal: false # 是否内部订阅,内部订阅不会触发发布者自动断开功能
  enableavcc : true  # 启用AVCC格式缓存,用于rtmp协议
  enablertp : true # 启用rtp格式缓存,用于rtsp、websocket、gb28181协议
  enableauth: true # 启用鉴权,详细查看鉴权机制
  enablesubevent: true # 启用订阅事件,用于订阅者上下线事件,关闭可以提高性能
  rtpreorderbufferlen: 50 # rtp乱序重排缓存长度
  eventbussize: 10 # 事件总线缓存大小,事件较多时容易堵阻塞线程,需要增大缓存
  poolsize: 0 # 内存池大小,高并发需要提高性能可以加大内存池,减少 GC
  pulseinterval: 5s # 心跳事件间隔时间
  console:
    server : console.monibuca.com:44944 # 连接远程控制台的地址
    secret: "" # 远程控制台的秘钥
    publicaddr: "" # 实例公网地址,提供远程控制台访问的地址,不配置的话使用自动识别的地址
    publicaddrtls: "" # 实例公网地址,提供远程控制台访问的地址,不配置的话使用自动识别的地址(https)

Por ejemplo, aquí desea modificar el puerto http a 18080

Busque config.yaml y modifique la ubicación correspondiente.

 

configuración del complemento

La configuración del complemento está definida por el complemento

Para obtener información de configuración específica de cada complemento, consulte la documentación del complemento.

Por ejemplo, si desea modificar la configuración de rtsp, puede modificar rtsp.yaml en conf de acuerdo con las instrucciones de configuración del complemento.

 

4. Extraiga la transmisión y convierta flv para lograr

A continuación se muestra un ejemplo de cómo extraer una transmisión rtsp desde un control remoto.

Consulte la documentación del complemento.

rtsp/api/pull?target=[dirección RTSP]&streamPath=[ID de transmisión]&save=[0|1|2]#

Tire rtsp del control remoto al m7s

Guardar significado: 0, no guardar; 1, guardar en pullonstart; 2, guardar en pullonsub

La dirección RTSP debe estar codificada en URL para evitar que los caracteres especiales que contiene afecten el análisis.

Primero necesitas simular una transmisión rtsp.

Utilice FFmpeg en Windows para realizar envíos de video locales y simular la transmisión de video rtsp del protocolo Haikang:

Uso de FFmpeg en Windows para lograr una simulación de inserción de video local Protocolo Haikang rtsp video stream_ffmpeg windows push stream_Overbearing blog de temperamento rogue-blog CSDN

Luego llama a su API de transmisión.

Por ejemplo, la secuencia rtsp simulada aquí es

rtsp://username:[email protected]:554/h264/ch01/main/av_stream

Entonces la URL completa para llamar a la API es

http://127.0.0.1:18080/rtsp/api/pull?target=rtsp://nombre de usuario:contraseñ[email protected]:554/h264/ch01/main/av_stream&streamPath=live/badao&save=0

Entonces la dirección de reproducción del http-flv correspondiente es

http://127.0.0.1:18080/hdl/live/badao.flv

 

Se puede acceder a más API usando

http://127.0.0.1:18080/

 

O documentación oficial del complemento

Supongo que te gusta

Origin blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/132474126
Recomendado
Clasificación