Resumen del aprendizaje de la tecnología de transmisión en vivo de IoT

Debido a que el trabajo involucra transmisión de medios en vivo, el siguiente artículo registra contenido de reproducción de medios de transmisión, que proviene del fuerte apoyo de colegas e Internet.

Tabla de contenido

La primera parte del streaming 

Un diagrama de tecnología simplificada

Diagrama de estructura interna de medios de segundo flujo

Diagrama de secuencia de análisis de medios de tres flujos

Cuatro Protocolo en Vivo

La segunda parte del servidor de medios de transmisión (SRS)

1. Instalación

Dos, iniciar / detener

Tres, prueba de transmisión push

Cuatro, prueba de flujo de tracción

referencias


La primera parte del streaming 

Hoja de ruta de la tecnología de transmisión de IoT

Un diagrama de tecnología simplificada

La hoja de ruta técnica se divide en series C / C ++ y Java. La siguiente figura presenta la serie Java como referencia.

Diagrama de estructura interna de medios de segundo flujo

 

Diagrama de secuencia de análisis de medios de tres flujos


Cuatro protocolos de transmisión en vivo

La segunda parte del servidor de medios de transmisión (SRS)

SRS (Simple RTMP Server) es un muy buen software de servidor de medios de transmisión de código abierto escrito por chinos, que se puede utilizar en servicio al cliente de transmisión / grabación / video en vivo y otros escenarios. Se posiciona como un servidor de transmisión en vivo de Internet a nivel de operación grupo.

1. Instalación

El sitio web oficial proporciona tres métodos de instalación: compilar e instalar desde el código fuente, usar la ventana acoplable (para aprender) y descargar e instalar directamente el paquete de instalación.

Creo que el propósito principal de muchas personas es aprender a usar srs, y puede que no sean buenos en el lenguaje C ++ en sí, por lo que este artículo solo presenta "cómo usar el paquete de instalación" para instalar y desplegar.

Primero descargue la última versión estable del sitio web oficial (actualmente 3.0.97)  http://ossrs.net/srs.release/releases/files/SRS-CentOS7-x86_64-3.0.97.zip

Luego cárguelo en el servidor centos, descomprímalo en el directorio especificado y ejecute el siguiente comando para instalar:

1.1 instalación de la versión mac

sudo ./INSTALL

 

click para ver el trabajo

Después de que la instalación sea exitosa, aparecerá un mensaje similar a la imagen de arriba.

Si hay un mensaje de error de No hay paquete lsb_release disponible (este error es propenso a aparecer en centos 7), puede intentar instalar yum install -y redhat-lsb primero

consejos: si desea desinstalar, ejecute el siguiente comando (siempre que srs se detenga primero)

sudo rm -rf /usr/local/srs
sudo rm -rf /etc/init.d/srs

1.2 instalación de centos7 (instalación de fuente git)

instalación

[root @ localhost cuiyaonan] # yum install -y git #Añadir git al sistema

[root @ localhost cuiyaonan] # git clone https://git.oschina.net/winlinvip/srs.oschina.git #download srs

[root @ localhost cuiyaonan] # cd srs.oschina /

[root @ localhost srs.oschina] # git pull

[root @ localhost srs.oschina] # rama git -a

[root @ localhost srs.oschina] # git checkout 2.0release

[root @ localhost srs.oschina] # cd troncal /

[root @ localhost srs.oschina] # ./configure

[root @ localhost srs.oschina] # ./make

Configuración

# srstest.conf

escuchar 19351;

srs_log_tank file; # El registro de configuración se compromete con el archivo, que debe usarse junto con srs_log_level

srs_log_file ./objs/srs-edge.log; # Especifique la ubicación del archivo de registro.

srs_log_level trace; # Desarrollar el nivel del archivo de configuración, el nivel predeterminado es trace

daemon on; #Start as a daemon. Si quieres iniciar en la consola, necesitas configurar daemon off; y necesitas configurar srs_log_tank console;

max_connections 1000; # Número máximo de conexiones

pid objs / cuiyaonan-edge.pid;

#Esto está relacionado con la configuración de http-flv

http_server {

    habilitado en;

    escucha 8081;

    dir ./objs/nginx/html;

}

 

vhost __defaultVhost__ {

   

#Esto está relacionado con la configuración de http-flv

     http_remux {

        habilitado en;

        montar [vhost] / [aplicación] / [flujo] .flv;

        hstrs on;

     }

 

#Esta es la configuración de hls

 hls {

        habilitado en;

        hls_fragment 10;

        hls_window 60;

        hls_path ./objs/nginx/html;

        hls_m3u8_file [aplicación] / [flujo] .m3u8;

        hls_ts_file [aplicación] / [flujo] - [seq] .ts;

 }

}

 

Dos, iniciar / detener

2.1 Inicio

sudo /etc/init.d/srs start

2.2 Detener

sudo /etc/init.d/srs stop

Del mismo modo, además de iniciar / detener, existen otras opciones, como: recargar | estado

1 [~]$ /etc/init.d/srs
2 Usage: /etc/init.d/srs {start|stop|status|restart|reload}

 

Tres, prueba de transmisión push

Transmisión push: publique video en el servidor de medios de transmisión (admite archivos o cámaras locales como fuente de video)

 

3.1 Transmisión push con FFmpeg

FFmpeg es un conjunto de software de código abierto que se puede usar para grabar, convertir audio y video digital, convertirlos en transmisiones y usarlo para enviar archivos de video nativos a SRS. Después de descargar desde el sitio web oficial de FFmpeg, descomprímalo directamente en esta máquina para ejecutarlo.

consejos: el código fuente de srs viene con un flv de muestra, la ruta es ./trunk/doc/source.200kbps.768x320.flv

Empuje el comando de transmisión:

./ffmpeg -re -i source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv -y rtmp: // srs_server_ip: 1

Nota: La ruta completa de flv y srs server ip en el comando anterior debe reemplazarse con valores reales de acuerdo con la situación. Además: De forma predeterminada, el rtmp de srs usa el puerto 1935. Si el puerto está ocupado o el puerto en srs.conf está modificado, ajústelo de acuerdo con la situación; si el firewall está encendido, verifique si 1935 está permitido acceso.

 

./ffmpeg -re -i /Users/jimmy/code/srs/trunk/doc/source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv -y rtmp://*.*.*.*:1935/live/livestream
ffmpeg version 4.1.3-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple LLVM version 10.0.1 (clang-1001.0.46.3)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, flv, from '/Users/jimmy/code/srs/trunk/doc/source.200kbps.768x320.flv':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf54.63.104
  Duration: 00:03:30.73, start: 0.034000, bitrate: 251 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 768x320 [SAR 1:1 DAR 12:5], 212 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
    Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 30 kb/s
Output #0, flv, to 'rtmp://10.2.72.62:1935/live/livestream':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.20.100
    Stream #0:0: Video: h264 (High) ([7][0][0][0] / 0x0007), yuv420p(progressive), 768x320 [SAR 1:1 DAR 12:5], q=2-31, 212 kb/s, 25 fps, 25 tbr, 1k tbn, 1k tbc
    Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 30 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=  508 fps= 25 q=-1.0 size=     693kB time=00:00:20.24 bitrate= 280.4kbits/s speed=   1x

 

 Si va bien, verá una salida similar a la anterior, lo que indica que la transmisión de video se está enviando a srs.

 

3.2 Utilice obs para recopilar la cámara y transmitir la transmisión

La línea de comandos de FFmpeg no es muy amigable. Se recomienda utilizar el software de transmisión de código abierto OBS convencional. Puede  descargar la última versión desde el sitio web oficial https://obsproject.com/ . En la actualidad, muchos webcasters lo usan para transmisión en vivo. El software es compatible con archivos de video locales y transmisión automática de cámara.

 

3.2.1 Envío de archivos

Primero agregue uno: "fuente de medios"

 Luego crea un nuevo nombre (solo ingrésalo)

Seleccionar archivo de video nativo

 La siguiente es la parte clave, ingrese la configuración:

Haga clic para ver la imagen de origen

 En Stream -> Server, ingrese la dirección de srs: rtmp: // srs_server_ip: 1935 / live (tenga en cuenta que aquí no se incluye transmisión en vivo), y luego en la clave de transmisión, ingrese livestream

Haga clic para ver la imagen de origen

Después de la configuración, puede hacer clic en "Iniciar Push Stream". Si va bien, la barra de estado a continuación mostrará algunos datos en tiempo real:

Haga clic para ver la imagen de origen

 

3.2.2 Transmisión instantánea de la cámara

Es casi lo mismo que el anterior, la diferencia es solo agregar "dispositivo de captura de video"

Luego, seleccione el dispositivo de cámara detectado por la máquina (por ejemplo: la siguiente imagen muestra la cámara FaceTime HD que viene con la computadora portátil Mac)

La siguiente operación es la misma:

 

Cuatro, prueba de flujo de tracción

Pull stream: lea el flujo de video desde el servidor de medios de transmisión (para decirlo sin rodeos: simplemente reproduzca)

Se recomienda usar el reproductor VLC de código abierto  (por supuesto, cualquier otro reproductor que admita la reproducción de fuentes de medios de red servirá), Archivo -> Red abierta, ingrese la dirección rtmp: // srs_server_ip: 1935 / live / livestream 

Haga clic para ver la imagen de origen

Si va bien, se puede jugar con normalidad.

Haga clic para ver la imagen de origen

Lo he suspendido por motivos laborales. Tengo la oportunidad o interés de escribir en el futuro. Gracias por su apoyo.

referencias

 

https://www.cnblogs.com/yjmyzz/p/srs_study_1_install_push_and_pull_stream.html
http://ossrs.net/srs.release/releases/

Supongo que te gusta

Origin blog.csdn.net/u013380694/article/details/105536005
Recomendado
Clasificación