Eu não fiz isso antes, nem o testei nem leiai a documentação apropriada. E eu não sou um especialista em codecs de áudio / vídeo e coisas assim. Portanto, este é mais um guia "isso poderia funcionar" e espero que outros possam elaborar.
Eu fiz uma pesquisa rápida no google, tentando descobrir algumas ferramentas que cobrirão os requisitos (apenas ferramentas de linha de comando).
- Obtendo o fluxo de áudio do primeiro servidor:
icecream
- Decodificando de mp3 para wav:
lame
- Sua ferramenta estéreo:
stereo_tool
(hipoteticamente) - Codificação de wav para mp3:
lame
- Encaminhando o áudio para o segundo servidor:
ezstream
Supondo que seus servidores de shoutcast estejam funcionando na mesma caixa. Faremos um script de shell stream2stream.sh
que lerá do primeiro, processará e encaminhará para o segundo.
$ chmod 750 stream2stream.sh
$ cat stream2stream.sh
#!/bin/bash
icecream --stdout http://localhost:8000 | \
lame -decode - - | \
stereo_tool | \
lame --preset cbr 128 -r -s 44.1 --bitwidth 16 - - | \
ezstream -c ~/ezstream.xml
Observe que ezstream
suporta a re-codificação, permitindo que você defina seus próprios programas de codificação / decodificação. Portanto, meu script acima pode ser desnecessário e ezstream
pode ser suficiente por si só. Mas eu não estou familiarizado com essa ferramenta e, portanto, nesta implementação, temos a configuração mais simples.
$ cat ~/ezstream.xml
<ezstream>
<url>http://localhost:8002</url>
<sourcepassword>hackme</sourcepassword>
<format>MP3</format>
<filename>stdin</filename>
<stream_once>1</stream_once>
<svrinfoname>My Stream</svrinfoname>
<svrinfourl>http://yoursiteurl/</svrinfourl>
<svrinfogenre>YourGenre</svrinfogenre>
<svrinfodescription>This is a stream description</svrinfodescription>
<svrinfobitrate>128</svrinfobitrate>
<svrinfoquality>2.0</svrinfoquality>
<svrinfochannels>2</svrinfochannels>
<svrinfosamplerate>44100</svrinfosamplerate>
<!-- Disallow the server to advertise the stream on a public YP directory: -->
<svrinfopublic>0</svrinfopublic>
</ezstream>
Você terá que ajustar os parâmetros no lame e no ezstream para seus gostos. Você pode executar o script com nohup ou na tela.
screen -AmdS stereotool stream2stream.sh