anúncios

domingo, 3 de janeiro de 2021

Conhecendo o FFmpeg

O que é FFmpeg?

FFmpeg é uma ferramenta de linha de comando gratuita e de código aberto para transcodificar arquivos multimídia. Incluindo o conjunto de bibliotecas compartilhadas de áudio e vídeo, como libavcodec, libavformat e libavutil. Com o FFmpeg, você pode converter formatos de vídeo e áudio, definir taxas de amostragem e redimencionar vídeos.

O presente tuturial explica como instalar o FFmpeg na distro Debian e serve também para os derivados do Debian, como o Ubuntu, e exemplos para converter arquivos de áudio e vídeo.

Instalando o FFmpeg no Debian e derivados

Primeiramente, atualizar a lista de repositório do sistema

$ sudo apt update

Próxima etapa é instalar via gerenciador de pacotes do Debian e derivados

$ sudo apt install ffmpeg

Verificar a versão do FFMpeg instalada

$ ffmpeg -version

Para exibir os encoders e decoders do FFmpeg

$ ffmpeg -encoders
$ ffmpeg -decoders

Convertendo arquivo de áudio e vídeo

Após instalar o FFmpeg, veremos alguns exemplos para converter arquivos de vídeo e áudio.

Ao converter arquivo de áudio e vídeo com FFmpeg, você não precisa especificar os formatos de entrada e saída. O formato do arquivo de entrada é detectado automaticamente e o formato de saída é calculado a partir da extensão do arquivo.

Converter um arquivo de vídeo .mp4 para .webm

$ ffmpeg -i input-file.mp4 output-file.webm

Converter um arquivo de áudio .mp3 para .ogg

$ ffmpeg -i input-file.mp3 output-file.ogg

Especificando codecs

Ao converter arquivos, você pode especificar os codecs que deseja usar com a opção -c. O codec pode ser o nome de qualquer decodificador ou codificador compatível ou uma cópia de valor especial que simplesmente copia o fluxo de entrada.

Convertendo um arquivo de áudio .mp4 para .webm usando o codec de vídeo libvpx e codec de áudio libvorbis

$ ffmpeg -i input-file.mp4 -c:v libvpx -c:a libvorbis output-file.webm

Convertendo um arquivo de áudio .mp3 para .ogg codificado com o codec libopus

$ ffmpeg -i input-file.mp4 -c:a libopus output-file.ogg

Convertendo URL RTSP Live stream para HLS

Se você quer exibir uma live RTSP para um browser, você pode fazê-lo transcodificando-o para HLS. Você pode usar o FFmpeg para fazer isso.

$ ffmpeg -fflags nobuffer \
-rtsp_transport tcp \
-i <sua URL RTSP> \
-vsync 0 \
-copyts \
-vcodec copy \
-movflags frag_keyframe+empty_moov \
-an \
-hls_flags delete_segments+append_list \
-f segment \
-segment_list_flags live \
-segment_time 0.5 \
-segment_list_size 1 \
-segment_format mpegts \ -segment_list <diretório-destino>/index.m3u8 \
-segment_list_type m3u8 \
-segment_list_entry_prefix <diretorio-destino>/ \
<diretorio-destino>/%3d.ts

Depois de executar este comando, você encontrará o arquivo index.m3u8 junto com vários .ts (arquivos de segmento) no diretório destino que especificou no comando. O index.m3u8 é o arquivo playlist e os arquivos .ts são os fragmentos. Você precisa servir esses arquivos usando um servidor HTTP (Apache, Nginx ou qualquer outro). Para exibir este vídeo em um navegador, você precisa incluir este arquivo index.m3u8 na tag de vídeo em sua página HTML, conforme o exemplo abaixo.

<video id="video-player" controls preload="none"> <source src="/diretorio-destino/index.m3u8" type="application/x-mpegURL"> </video>

Uma vez feito isso, acesse até a página HTML do seu navegador, você será capaz de ver a transmissão ao vivo no Windows, Linux e macOS, sem nenhum plugin.

No diretorio-destino é o DocumentRoot que corresponde o diretório do servidor HTTP, no caso do Apache e Nginx, o DocumentRoot default é /var/www/html. Caso tenha diversos vídeos a ser transmitidos ao vivo para os usuários (clientes) acessarem no navegador, uma sugestão é criar dois diretórios a partir do DocumentRoot default, o primeiro sendo lives e o segundo sendo o titulo da live correspondente.

Ex: /var/www/html/lives/titulolive. Esse seria o diretório destino que poderia especificar no comando para converter RTSP para HLS. Assim no navegador, os usuários (clientes) podem acessar: https://dominio.com/lives/titulolive

Conclusão

Você instalou com sucesso o FFmpeg no Debian ou Ubuntu. Agora você pode acessar a página de documentação oficial do FFmpeg e aprender como usar o FFmpeg para converter seus arquivo de vídeo e áudio.

Como bônus aprendeu como converter URL RTSP para HLS usando FFmpeg e exibir na página web.

Feito!

Nenhum comentário:

Postar um comentário