Do not speak Portuguese? Translate this site with Google or Bing Translator
Como instalar e usar o FFmpeg no Ubuntu 20.04

Posted on: August 11, 2021 06:33 PM

Posted by: Renato

Categories: ffmpeg linux PHP ubuntu devops

Views: 1128

INSTALAR E UTILIZAR O FFMPEG NO UBUNTU

Como instalar e usar o FFmpeg no Ubuntu 20.04

O FFmpeg é uma coleção de ferramentas que grava, converte e cria arquivos multimídia em diversos formatos, sendo um programa em linha de comando, software livre de código aberto. Ele contém uma série de bibliotecas públicas de áudio e vídeo, como libavcodec, libavformat e libavutil. Com o FFmpeg você pode realizar a conversão entre diversos formatos de áudio e vídeo, definir taxas de amostragem, capturar streaming de áudio ou vídeo, além de redimensionar vídeos.

Neste artigo irei demonstrar como instalar o FFmpeg no Ubuntu 20.04 LTS.
 

INSTALAR O FFMPEG

Os repositórios oficiais do Ubuntu possuem os pacotes do FFmpeg, portanto podemos realizar a instalação através do comando apt, sendo então, esta é a forma mais prática de realizar a instalação no Ubuntu. Para realizar a instalação, execute os seguintes comandos:

 sudo apt update
 sudo apt install ffmpeg

Para verificar a instalação, utilize o comando ffmpeg -version, que exibe sua versão.

 ffmpeg -version

O retorno do comando acima deve ser parecido com esta:

ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)


Para exibir todos os encoders e decoders do FFmpeg, utilize:

 ffmpeg -encoders
 ffmpeg -decoders

Pronto! O FFmpeg está instalado no seu computador.
 

EXEMPLOS COM O FFMPEG

Iremos agora abordar alguns exemplos de utilização do ffmpeg.
 

Conversão básica #


CONVERSÃO

Quando convertemos áudio e vídeo com o ffmpeg, não é necessário especificar os formatos de entrada e de saída, já que, o formato de entrada é detectado automaticamente, enquanto que o de saída é definido pela extensão do arquivo.

Converter um vídeo do mp4 para webm:

 ffmpeg -i input.mp4 output.webm

Converter um áudio do mp3 para ogg:

 ffmpeg -i input.mp3 output.ogg
 

ESPECIFICANDO OS CODECS

Quando convertemos arquivos, podemos utilizar a opção -c para definir os codecs que serão utilizados. Para isto, podemos utilizar o nome de qualquer decoder/encoder ou o valor copy que copia o valor do arquivo de entrada.

Converter um arquivo de vídeo do mp4 para o webm, utilizando o codec libvpx e o codec de áudio liborbis:

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

Convertendo um arquivo de áudio do mp3 para o ogg utilizando o codec libopus:

 ffmpeg -i input.mp3 -c:a libopus output.ogg
 

Dicas

renato@renato-dev:~/Videos$ which ffmpeg
/usr/bin/ffmpeg
renato@renato-dev:~/Videos$ which ffprobe
/usr/bin/ffprobe

ffmpeg -y -i route.mp4 -threads 12 -vcodec libx264 -acodec libmp3lame -b:v 500k -refs 6 -coder 1 -sc_threshold 40 -flags +loop -me_range 16 -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -trellis 1 -b:a 128k -vf "[in]scale=960:540 [out]" -pass 1 route1.mp4

ffmpeg -i route.mp4 output.webm


ffmpeg '-y' '-i' route.mp4 '-async' '1' '-metadata:s:v:0' 'start_time=0' '-threads' '12' '-vcodec' 'libx264' '-acodec' 'libfaac' '-b:v' '1000k' '-refs' '6' '-coder' '1' '-sc_threshold' '40' '-flags' '+loop' '-me_range' '16' '-subq' '7' '-i_qfactor' '0.71' '-qcomp' '0.6' '-qdiff' '4' '-trellis' '1' '-b:a' '128k' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes57ad320a1b685j794u/pass-57ad320a1b716' 2efeb41a1a7085a1dbd469c4895ac23e.mp4
 

Abaixo exemplos com PHP

// ------------ functions
$ffmpeg = $ffmpeg = FFMpeg\FFMpeg::create(['timeout'=>3600, 'ffmpeg.thread'=>12, 'ffmpeg.binaries'  => '/usr/local/bin/ffmpeg',
    'ffprobe.binaries' => '/usr/local/bin/ffprobe']);
            $ffprobe_prep = FFMpeg\FFProbe::create(['ffmpeg.binaries'  => '/usr/local/bin/ffmpeg',
    'ffprobe.binaries' => '/usr/local/bin/ffprobe']);
            $ffprobe = $ffprobe_prep->format($video_file);
            $video = $ffmpeg->open($video_file);
            // Get video duration to ensure our videos are never longer than our video limit.
            $duration = $ffprobe->get('duration');
            // Use mp4 format and set the audio bitrate to 56Kbit and Mono channel.
            // TODO: Try stereo later...
            $format = new FFMpeg\Format\Video\X264('libmp3lame', 'libx264');
            $format
                -> setKiloBitrate(128)
                -> setAudioChannels(1)
                -> setAudioKiloBitrate(8);
            $first = $ffprobe_prep
                        ->streams($video_file)
                        ->videos()
                        ->first();
            $width = $first->get('width');
            if($width > VIDEO_WIDTH){
                // Resize to 558 x 314 and resize to fit width.
                $video
                    ->filters()
                    ->resize(new FFMpeg\Coordinate\Dimension(VIDEO_WIDTH, ceil(VIDEO_WIDTH / 16 * 9)));
            }
            // Trim to videos longer than three minutes to 3 minutes.
            if($duration > MAX_VIDEO_PLAYTIME){
                $video
                    ->filters()
                    ->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(0), FFMpeg\Coordinate\TimeCode::fromSeconds(MAX_VIDEO_PLAYTIME));
            }
            // Change the framerate to 16fps and GOP as 9.
            $video
                ->filters()
                ->framerate(new FFMpeg\Coordinate\FrameRate(16), 9);
            // Synchronize audio and video
            $video->filters()->synchronize();
            $video->save($format, $video_file_new_2);
// ------------------------------------------------------------------ demo
$ffmpeg = FFMpegFFMpeg::create(array(
    'ffmpeg.binaries'  => '/opt/local/ffmpeg/bin/ffmpeg',
    'ffprobe.binaries' => '/opt/local/ffmpeg/bin/ffprobe',
    'timeout'          => 3600,//The timeout for the underlying process
    'ffmpeg.threads'   => 12,  //The number of threads that FFMpeg should use
));
$video = $ffmpeg->open('video.mpg');
$relative = array(
    'position'=>'relative',
    'bottom'=>50,
    'right'=>50
);
$image = '/xxx/watermarkMark.png';
$video->filters()->watermark($image, $relative);
$video->save(new FFMpegFormatVideoX264(), 'export-x264.mp4')

CONCLUSÕES

Demonstrei como instalar e utilizar o FFmpeg no Ubuntu 20.04 LTS. Convido você a visitar a documentação oficial do site ffmpeg Documentation, além de realizar conversões nos seus arquivos de áudio e vídeo do seu computador.

Se você encontrou um problema ou tem feedback, deixe um comentário abaixo.

 

Fontes:

- https://www.vivaolinux.com.br/artigo/Instalar-e-utilizar-o-FFmpeg-no-Ubuntu

https://linuxize.com/post/how-to-install-ffmpeg-on-ubuntu-20-04/


2

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email