Como anexar dados ogg / vorbis on the fly?

1

Estou executando uma rádio on-line baseada no Icecast. Eu mesmo escrevi o cliente de origem, para que eu possa ser flexível na programação das faixas e assim por diante. A fim de reproduzir faixas no rádio, dentro do meu código python eu corro 2 subprocessos: ffmpeg para decodificar o arquivo do disco em WAV e, em seguida, redirecionar sua saída é codificado por oggenc. Algo parecido com isto, para cada faixa:

ffmpeg -i foo_bar.mp3 -acodec pcm_s16le -ac 2 -f wav pipe:1 | oggenc - -b 128 --managed -o -

Funciona bem, até que haja uma nova faixa para tocar. Às vezes os jogadores começam a se comportar de maneira estranha, por exemplo, o mplayer simplesmente pára e sai, a vlc pode mudar a velocidade e começar a produzir sons assustadores e assim por diante.

A solução mais simples seria manter o oggenc rodando para sempre e de alguma forma substituir a forma de onda que lê a partir da entrada padrão, mas não tenho idéia de como fazê-lo de uma maneira não tão complicada. Eu gostaria de evitar coisas complicadas aqui, porque isso afeta a estabilidade do cliente de origem. O que você acha?

Obrigado

    
por Illarion Kovalchuk 10.12.2015 / 21:48

0 respostas

Tags