6 votos

¿Cómo stream de audio usando FFMPEG?

Edificio en @Allan respuesta, estoy tratando de redirigir el ffmpeg salida a un servidor.

$ ffmpeg -f avfoundation -i ":1" -t 10 - | ssh user@host .... -

Pero me sale el siguiente mensaje de error:

"Al menos un archivo de salida debe ser especificado"

También he intentado usar ffserver en lugar de SSH, pero no estoy teniendo suerte.

Es posible el flujo de audio de esta manera?

7voto

Douglas Puntos 10417

Hay dos soluciones me pueden visualizar para este escenario:

  • Guardar el archivo en un equipo remoto
  • Tener un live stream de difusión para un equipo remoto, puede recibir el audio

Guardar el archivo

Este es probablemente el método más fácil. Permitir el flujo de terminar la grabación y la copia en una ubicación predeterminada en la red. Este script debe ajustarse a la ley:

#!/bin/bash
#
ffmpeg -f avfoundation -i ":1" -t 10 audiocapture.mp3
scp audiocapture.mp3 user@host:/foo/bar/audiocapture.mp3

exit 0

El guión no se hace ninguna comprobación de errores de cualquier tipo, pero, va a grabar desde el micrófono, luego cuando termine el programa hará una copia a través de SCP (secure copy) a un equipo remoto. Para que esto funcione, es necesario configurar las Claves SSH para facilitar un no inicio de sesión interactivo.

Stream en tiempo real

El otro método, es para transmitir el audio a través de TCP a través de un punto-a-punto de conexión. Utilizando la misma entrada de la respuesta anterior, acabamos de cambiar la salida a un flujo de red:

$ ffmpeg -f avfoundation -i ":1" -t 10 -f mpegts "tcp://remote_host_or_IP_:port"

Donde....

  • -f es el formato de transporte; en este caso mpegts (MPEG Transport Stream)
  • tcp://remote_host_or_IP_:port es el valor de URI de la computadora remota del nombre de host/dirección IP y número de puerto que se va escuchando.

Conjunto de equipo remoto para que "escuche"

El uso de ffplay el equipo remoto se puede configurar para recibir la corriente (he usado Windows 10 para esta parte, pero funciona en mac os/Windows/BSD/Linux)

Emita el comando

ffplay -i tcp://local_host_or_IP_addr:port?listen -hide_banner

Donde....

  • -i define la secuencia de entrada
  • local_host_or_IP_addr:port es la dirección IP o nombre de host y el puerto TCP de la computadora que está escuchando (no el equipo de transmisión).
  • ?listen es necesario para ponerlo en "modo de escucha" de lo contrario será el tiempo de espera si el flujo no está allí.

A continuación es un ejemplo hecho en Windows 10 recepción de la secuencia de un macOS host del micrófono. La dirección IP de Windows 10 máquina es 10.0.0.123 y estoy de radiodifusión en el puerto 1234.

C:\Users\allan\Desktop\ffmpeg>ffplay -i tcp://10.0.0.123:1234?listen -hide_banner

    nan    :  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

Una vez que se comienza a recibir la transmisión, los valores por encima de la voluntad de cambio y un jugador de la "visualización" de la ventana se abrirá.

Input #0, mpegts, from 'tcp://10.0.0.123:1234?listen':B f=0/0
384 kb/s    nan    :  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
  Program 1   0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
    Metadata: 0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
Service01    nan    :  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0       0B f=0/0
FFmpeg    nan    :  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0   sq=    0B f=0/0
    Stream #0:0[0x100]: Audio: mp2 ([3][0][0][0] / 0x0003), 44100 Hz, stereo, fltp, 384 kb/s
  11.35 M-A:  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

Seguirá a "escuchar" hasta que el proceso se mató.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X