Stream de audio e video 100% livre em um único comando

É claro que esse título é sensacionalista. Mas faz jus à minha cara de pau, pois faz tempo que prometi escrever um breve tutorial sobre transmissão de áudio de vídeo ao vivo com softwares e codecs livres.
Enquanto esse tutorial não sai, fica aqui uma dica pros aventureiros:

ffmpeg -s 160x128 -vd /dev/video0 -ad /dev/dsp -ab 32 -b 12 -r 20 -f mpeg - | ffmpeg2theora -V 45 -v 0 -o /dev/.static/dev/stdout - | oggfwd 192.168.1.4 8000 hackme /theora.ogg

Bom, traduzindo:

Estou usando uma placa de captura Pinnacle TV PRO (bttv) e uma câmera digital Canon A60, conectada via RCA na entrada de vídeo da placa de captura. Tudo isso num incrível Pentium III 1GHz (eu adoro essa máquina). Mas o que essa maldita linha de comando tá fazendo?
Primeiro o programa ffmpeg captura exatamente o que o display da câmera digital mostra, através do dispositivo /dev/video0. Como podem ver, estou capturando o vídeo numa resolução de 160×128 pixels (pro meu processador aguentar o tranco). Estou passando o /dev/video0 como dispositivo de vídeo e o /dev/dsp como dispositivo de áudio. Estou setando o bitrate de áudio pra 32kbps (-ab), o bitrate de vídeo pra 12kbps (-b) e o framerate pra 20 (ou seja, 20 quadros por segundo). Ainda como parâmetro do ffmpeg estou mandando uma saída no formato mpeg, e conectando essa saída via pipe para outro programinha, o ffmpeg2theora.

Como o nome sugere, o ffmpeg2theora converte o formato mpeg para o formato ogg. Este faz o trabalho pesado de fato. Os parâmetros que passo pra ele nesse exemplo são -V (–videobitrate) que seta o bitrate na conversão para 45 (o mínimo possível). O -v seta a qualidade, que pode ser de 0 a 10 e o -o envia o ogg gerado para o dispositvo de saída padrão criado pelo udev. Você talvez use o /dev/stdout. Através de outro pipe conecto a saída do ffmpeg2theora para outro programa, oggfwd, que envia o stream gerado para um servidor de stream, nesse caso o Icecast, que está instalado na máquina com IP 192.168.1.4, na porta 8000 e senha ‘hackme’.

O resultado disso aqui é uma página WEB que disponibiliza stream do vídeo sendo gerado através da câmera digital, numa qualidade bem ruinzinha, mas que já dá pra brincar um pouco. Com uma máquina melhor, dá pra fazer tranquilamente a transmissão de um evento, palestra, etc.

Espero que seja útil, e pra quem me cobrou esse tutorial, peço desculpas, e ainda prometo fazer algo melhor em breve.

%d bloggers like this: