sábado, 12 de outubro de 2013

Publicando um stream Flash no Original Livestream.com

Uma capacidade muito interessante do FFMPEG é de poder enviar o resultado final da codificação em forma de streaming para outro computador ou servidor, inclusive no formato RTMP, usado por servidores como o Flash Media Server ou Wowza Server. Sobre essas capacidades falarei mais a fundo numa próxima oportunidade.

O que me levou a fazer esse post é uma dor de cabeça que eu tive durante um bom tempo. Uso um serviço de streaming chamado Livestream, e no seu serviço original (não confundir com o novo Livestream, uma plataforma tecnológica bem diferente) é possível enviar o stream através de programas como Wirecast e Flash Live Encoder, que usam o protocolo RTMP. Ou seja, em tese deveria funcionar. Mas no meu computador não conseguia realizar conexão.

O curioso é que com outros servidores, como o Wowza, eu conseguia. Demorei um certo tempo para descobrir a questão. E acho que agora matei a charada.

Há um certo tempo o FFMPEG permite a publicação de streams através do comando -f rtmp://servidor/app/caminho, mas graças a uma implantação de parte da biblioteca do librtmp, vinda do projeto rtmpdump. Note bem: parte.

Ao tentar usar a URL do Livestream, que utiliza vários parâmetros para autenticação (rtmp://publish.livestream.com/mogulus/[canal]/username=[usuario]/password=[senha]/isAutoLive=true) o parser padrão dessa parte da biblioteca se confundia e acessava o caminho errado. E não é possível passar os parâmetros corretamente.

Tá, e como resolvo isso?

Ao compilar o FFMPEG para esse trabalho, exija as legítimas Havaianas certifique-se que o comando ./configure tenha também o parâmetro --enable-librtmp***, além dos demais parâmetros que você deseje para o FFMPEG. Assim você garante que o FFMPEG será compilado usando a biblioteca original inteira, não apenas a resumida dentro do programa. Aí é só utilizar "rtmp://publish.livestream.com/mogulus/[canal]/username=[usuario]/password=[senha]/isAutoLive=true/live app=mogulus/[canal]/username=[usuario]/password=[senha]/isAutoLive=true live=1" como endereço do servidor.

UPDATE: Caso sua transmissão também seja direcionada para dispositivos móveis (e isso obriga também que o vídeo seja em h264 e o áudio em AAC, nada de MP3) é importante que você defina também "playpath" no comando, indicando o intevalo de keyframes e o bitrate total da transmissão (audio+video). Neste exemplo: "rtmp://publish.livestream.com/mogulus/[canal]/username=[usuario]/password=[senha]/isAutoLive=true/live app=mogulus/[canal]/username=[usuario]/password=[senha]/isAutoLive=true playpath=livestream?videoKeyframeFrequency=5&totalDatarate=400 live=1"

*** Caso você use Mac com o Homebrew, o comando para instalar com o librtmp é brew install ffmpeg --with-rtmpdump

Um comentário:

  1. How do you make money in casinos? - WorkNow
    How do you make หาเงินออนไลน์ money in casinos? · Choose your job type · Choose the most exciting casino game to play and then you can win real money. · Choose the

    ResponderExcluir