1 votes

Combiner trois flux audio en direct en un seul flux audio en direct

Je dispose de trois flux audio en direct que je souhaite rediffuser en un seul flux audio combiné. J'aimerais écouter ces trois flux audio en direct en même temps, mais ma connexion domestique est limitée par le nombre de données par mois et je préférerais ne diffuser qu'à partir d'une seule source. C'est pourquoi je souhaite plutôt utiliser un flux provenant de mon serveur hors site.

Est-il possible d'utiliser quelque chose comme ffmpeg pour réaliser cela, ou est-ce plus compliqué que cela ?

Je peux obtenir le flux audio en direct dans de nombreux formats. Les formats pris en charge par la diffusion en continu sont Windows Media Player, Real Player, iTunes, Winamp, Web Player et Java Web Player, de sorte que l'obtention d'un type de flux pris en charge ne sera pas un problème.

Voici un exemple de deux de ces flux :

  • http://audio2.radioreference.com/342138428
  • http://audio7.radioreference.com/333108723

J'aimerais les regrouper en un seul flux, pour dire que je voudrais http://example.com/radiostream et j'aurais un flux. Le flux est au format MPEG pour le moment, et le renvoyer dans le même codec est tout à fait possible.

2voto

Rajib Points 2871

Le mélange des deux canaux est trivial. Voici un test qui mélange les deux canaux et enregistre un fichier pendant 500 secondes, en utilisant la fonction amix filtre :

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amix=inputs=2 -t 500 a.mp3

C'est plus simple que le amerge qui dépend également de la disposition des canaux (gauche, droite, centre, etc.). Donc, bien que cela ait fonctionné aussi, cela a fait un panoramique des canaux :

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amerge=inputs=2 -t 500 a.mp3

En streaming :

ffmpeg peut faire du streaming de deux manières.

  1. Directement
  2. Vers un autre serveur, comme par exemple icecast

Voir ce guide pour plus de détails.

En utilisant icecast, avec le mot de passe pour la source comme "hackme" (par défaut), et le port 8000 (par défaut) comme un des ports, lancez en utilisant :

icecast -c /usr/local/etc/icecast.xml

Bien sûr, la vôtre le serait :

icecast -c /path/to/your/icecast.xml

Utilisez ensuite le amerge pour alimenter icecast :

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amerge=inputs=2 -f mp3 icecast://source:hackme@localhost:8000/radio

Ouvrez VLC et connectez-vous à stream- http://192.168.1.128:8000/radio (C'est mon adresse IP désignée, vous pouvez utiliser localhost:8000/radio).

Vous pouvez entendre les 2 flux. Avec amerge (plutôt qu'amix), les 2 flux seront balancés de gauche à droite et il sera facile de les distinguer.

Pour mélanger 3 flux, utilisez le amix filtre :

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -i <third stream> -filter_complex amix=inputs=3 -f mp3 icecast://source:hackme@localhost:8000/radio

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X