FFmpeg Live Streaming na plataforma Dacast para Linux

 

Está interessado em fazer streaming no Dacast em Linux com o ffmpeg? Este guia fornece uma explicação passo a passo para o ajudar a começar!
Para transmitir no Dacast em Mac com ffmpeg, clique aqui.

Nota: este guia abrange as seguintes distribuições Linux:

  • Ubuntu 18.xx
  • Arch Linux

Requisitos:

Terá de compilar o ffmpeg para poder aceder ao suporte RTMP através da biblioteca librtmp.

Ferramentas de desenvolvimento:

Antes de começar, certifique-se de que instala as ferramentas necessárias para compilar ffmpeg, librtmp e as suas dependências.

  • Ubuntu 18.xx
    $ sudo apt-get update
    $ sudo apt-get install build-essential git libssl-dev
  • Arch Linux
    # pacman -Sy base-devel git

Instalação:

1. librtmp

  1. Primeiro, recupere o código-fonte do librtmp no repositório oficial do git.
    $ git clone git://git.ffmpeg.org/rtmpdump
  2. Em seguida, navegue até à pasta do repositório local e execute o processo de compilação.
    $ cd rtmpdump
    $ cd librtmp
    $ make
  3. Finalmente, instale a biblioteca no diretório raiz do seu sistema.
    # DESTDIR=/usr make install

2. ffmpeg

Dependências

Poderá ser necessário obter algumas bibliotecas adicionais, tais como os codecs de áudio e vídeo necessários para transmitir o seu conteúdo multimédia.

Ubuntu 18.xx

Tenha em atenção que terá de compilar manualmente a libaacplus.

$ sudo apt-get install libfftw3-dev pkg-config autoconf automake 
libtool libtool-bin unzip
$ wget http://tipok.org.ua/downloads/media/aacplus/libaacplus/
libaacplus-2.0.2.tar.gz
$ tar -xzf libaacplus-2.0.2.tar.gz
$ cd libaacplus-2.0.2
$ ./autogen.sh --enable-shared --enable-static
$ make
$ sudo make install
$ sudo ldconfig
# apt-get install yasm libfaac-dev libfdk-aac-dev libfreetype6-
dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev 
libopenjpeg-dev libopus-dev libschroedinger-dev libspeex-dev 
libtheora-dev libvo-aacenc-dev libvorbis-dev libvpx-dev libx264-
dev libxvidcore-dev
Arch Linux

Algumas dependências estão localizadas no Repositório de Usuários do ArchLinux. Portanto, você deve primeiro obter seu código-fonte e então compilar essas dependências manualmente.

Também tem a opção de automatizar este processo, instalando uma ferramenta útil chamada yaourt.
Pode aceder a um guia de instalação no seguinte endereço: http://archlinux.fr/yaourt-en.

Pode obter as dependências necessárias com os seguintes comandos:

# pacman -Sy yasm freetype2 lame opencore-amr openjpeg opus 
schroedinger speex libtheora libvorbis libvpx x264 xvidcore 
faac libfdk-aac
$ yaourt libaacplus
$ yaourt vo-aacenc

Compilação

  1. Obter o código fonte do ffmpeg no seu repositório oficial git :
    $ git clone https://github.com/FFmpeg/FFmpeg.git
  2. Navegue até à pasta do repositório local e, em seguida, execute o processo de compilação:
    $ cd FFmpeg
    $ ./configure --enable-gpl --enable-version3 --enable-
    nonfree --enable-postproc --enable-libaacplus --enable-
    libfaac --enable-libfdk-aac --enable-libfreetype --enable-
    libmp3lame --enable-libopencore-amrnb --enable-libopencore-
    amrwb --enable-libopenjpeg --enable-openssl --enable-libopus
     --enable-libschroedinger --enable-libspeex --enable-libtheora 
    --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-
    libx264 --enable-libxvid --prefix=/usr/local --enable-librtmp
    $ make
  3. Instale o ffmpeg no diretório raiz do seu sistema:
    # make install

Utilização

Abra a sua conta Dacast e crie um novo canal a partir da página de transmissão em direto.

Uma vez criado, seleccione Configuração do codificador no separador Geral:

Certifique-se de que o codificador RTMP genérico está selecionado. Necessitará das seguintes credenciais:

Em seguida, execute o seguinte comando:

$ ffmpeg -re -f lavfi -i testsrc -c:v libx264 -b:v 1600k -preset 
ultrafast -b 900k -c:a libfdk_aac -b:a 128k -s 1920x1080 -x264opts 
keyint=50 -g 25 -pix_fmt yuv420p -f flv 
"rtmp://p.ep246802.i.akamaientrypoint.net/EntryPoint flashver=
FMLE/3.020(compatible;20FMSc/1.0) live=true pubUser=123456 
pubPasswd=789123 playpath=dclive_1_1@246802"

Notas importantes (ler atentamente)

Nota 1: se as suas credenciais forem rejeitadas
Deve ter seguido todos os passos acima e a compilação manual do librtmp ou isto não vai funcionar: as suas credenciais serão rejeitadas pelo servidor.

Nota 2: erro comum
Um erro de digitação recorrente na utilização do fdk aac é que, durante o processo de instalação, é necessário introduzir “–enable-fdk-aac“, mas quando o utiliza no comando é: “-c:a libfdk_aac

Nota 3: insira o seu caminho de origem
Pretende-se substituir

-f lavfi -i testsrc

com

-i /your_source_path

Caso contrário, terá apenas o ecrã de teste (como mostrado abaixo) e não a transmissão em direto. Se não tiver substituído “-f lavfi -i testsrc” por “-i /seu caminho de origem”, verá o seguinte ecrã de teste:

ffmpeg

Nota 4: aumentar a memória intermédia para uma reprodução mais suave
Se a reprodução não for suficientemente suave, pode aumentar o tamanho da memória intermédia substituindo-a:

-b 900k

com

-tamanho do buffer 3000k

O seu comando terá o seguinte aspeto:

$ ffmpeg -re -i /seu_caminho_de_origem -c:v libx264 -b:v 1600k -preset ultrafast -bufsize 3000k

-c:a libfdk_aac -b:a 128k -s 1920×1080 -x264opts keyint=50 -g 25 -pix_fmt yuv420p -f flv

“rtmp://p.ep246802.i.akamaientrypoint.net/EntryPoint flashver=FMLE/3.020(compatible;20FMSc/1.0)

live=true pubUser=123456 pubPasswd=789123 playpath=dclive_1_1@246802″

Nota 5: melhor qualidade para um sistema potente
Se pretender uma melhor qualidade e o seu sistema for suficientemente potente, pode substituir

-preset ultrarrápido

com

-pré-definição rápida

O seu comando terá o seguinte aspeto:

$ ffmpeg -re -i /seu_caminho_de_origem -c:v libx264 -b:v 1600k -preset fast

-b 900k -c:a libfdk_aac -b:a 128k -s 1920×1080 -x264opts keyint=50 -g 25

-pix_fmt yuv420p -f flv “rtmp://p.ep246802.i.akamaientrypoint.net/EntryPoint

flashver=FMLE/3.020(compatível;20FMSc/1.0) live=true pubUser=123456 pubPasswd=789123

playpath=dclive_1_1@246802″

Nota 6: latência mais baixa para um sistema muito potente
Se o seu objetivo é obter a latência mais baixa e tem um sistema muito potente, pode acrescentar o seguinte ao comando inicial:

-tune zerolatency

O seu comando terá o seguinte aspeto:

$ ffmpeg -re -i /seu_caminho_de_origem -c:v libx264 -b:v 1600k -preset ultrafast

-tune zerolatency -b 900k -c:a libfdk_aac -b:a 128k -s 1920×1080 -x264opts

keyint=50 -g 25 -pix_fmt yuv420p -f flv “rtmp://p.ep246802.i.akamaientrypoint.net/EntryPoint

flashver=FMLE/3.020(compatível;20FMSc/1.0) live=true pubUser=123456 pubPasswd=789123

playpath=dclive_1_1@246802″

Não hesite em contactar diretamente a Dacast se necessitar de mais apoio neste processo.

 

Comece a trabalhar gratuitamente

Dacast Team