FFmpeg: il tuo potente aiuto video / audio nella tua applicazione

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati

Il nome è ispirato da MPEG, que significa Moving Picture Expert Group. FF sta per Fast Forward. Il gruppo MPEG è l'alleanza di gruppi di lavoro dietro la creazione di molti degli standard video essenziali di oggi., incluso il formato MP4, con cui tutti conosciamo.

Risultati

  1. Cos'è FFmpeg?
  2. Perché le persone usano FFmpeg?
  3. Come configurare FFmpeg in Windows, Ubuntu e macOS.
  4. Le librerie sono disponibili da FFmpeg per la manipolazione dei media.
  5. Strumenti forniti da FFmpeg per le applicazioni della riga di comando.
  6. Uso ed esempi per FFprobe e FFplay.

Perché le persone usano FFmpeg?

Viene spesso definito il coltellino svizzero della transcodifica o dello streaming dei media.. Possiamo usare FFmpeg per eseguire molte funzioni. Il codice è scritto in linguaggio C e ottimizzato per prestazioni migliori. I suoi comandi sono semplici da eseguire. Una volta acquisita familiarità con i concetti, è molto flessibile per tutti i filtri e le opzioni che puoi utilizzare per soddisfare le tue esigenze.

FFmpeg supporta un'ampia gamma di codici, formati, dispositivi e protocolli, rendendolo una scelta ideale come motore di transcodifica. A differenza di molti progetti interrotti, è ancora in attivo sviluppo da più di 20 anni. C'è una grande comunità di sviluppatori, utenti e collaboratori che sviluppano costantemente nuove funzionalità e correzioni.
FFmpeg è stato utilizzato nell'elaborazione centrale per piattaforme video come YouTube e iTunes. La maggior parte di noi usa un lettore multimediale come VLC per riprodurre file video. VLC utilizza le librerie FFmpeg come nucleo. Alcuni editor video e app mobili utilizzano anche FFmpeg sotto il cofano.

Configurazione di FFmpeg su Windows, Ubuntu e macOS

Ci sono alcune cose da sapere prima di configurare FFmpeg. Non esiste una build ufficiale per nessun sistema operativo. Ma è un progetto open source, che puoi ottenere dal codice sorgente FFmpeg su Internet. Perciò, puoi scegliere di crearlo tu stesso dal codice sorgente. Puoi scaricare un'istantanea del codice sorgente corrente qui o effettua un pagamento dal tuo git repository e segui le istruzioni per compilarlo sulla tua macchina. Questo può essere un po' complesso e dispendioso in termini di tempo e potrebbe richiedere la comprensione e la scelta di alcune opzioni di configurazione. Potrebbe anche essere necessario installare strumenti e compilatori aggiuntivi all'inizio. Quindi, a meno che tu non abbia una buona ragione per costruirlo da solo, potresti non voler seguire questa strada.

Anziché, puoi scegliere di scaricare e installare un pacchetto FFmpeg precompilato per il tuo sistema operativo. Ci sono due modi per configurare questi binari precompilati. Se hai un gestore di pacchetti come APT su Ubuntu e Homebrew su macOS, è più facile da usare poiché si occupa di scaricare FFmpeg e le sue dipendenze.

Manteniamo le cose il più semplici possibile e scegliamo il modo più semplice per iniziare. Le procedure seguenti mostrano come è possibile configurare utilizzando pacchetti precompilati.

Mac OS

Su macOS, il modo più semplice per installare FFmpeg è tramite Homebrew. Assicurati di aver installato Homebrew sul tuo macOS, oppure puoi continuare questo tutorial su come installare Homebrew.
Stiamo usando macOS 11.4 in questo caso.

  • Apri Terminale e digita brew — version . Dovresti vedere la versione di preparazione stampata nel Terminale se Homebrew è installato correttamente.
1cucofunxeyjimaenwsuefq-6213099
Versione Brew su macOS
  • Per macOS in architettura x86, usa il comandobrew install ffmpeg mentre per M1 usa il comando aarch arm64 brew install ffmpeg .
17yvx9lrfkwi9kbpydhkojg-6811127
Scarica e installa le dipendenze necessarie
  • Al termine dell'installazione, puoi digitare ffmpeg -version nel terminale. Se viene stampata la versione FFmpeg, significa che FFmpeg è stato installato con successo.
195-zjmk8ldxmvcmriaogma-5442168

finestre

A differenza di APT su Ubuntu e Homebrew su macOS, non esiste un gestore di pacchetti noto in Windows, che puoi usare per installare rapidamente FFmpeg. Per Windows, devi disabilitarlo e configurarlo manualmente.

Ci sono 4 Varianti di build di Windows FFmpeg disponibili che possono essere trovate qui:

  1. git full – costruito da un ramo principale con un ampio set di librerie.
  2. git essentials – costruito da un ramo principale con librerie di uso comune.
  3. release full – costruito dall'ultimo ramo del rilascio con un ampio set di librerie.
  4. release essentials – costruito dall'ultimo ramo della versione con librerie di uso comune.

Useremo gli elementi essenziali del rilascio di FFmpeg nel nostro caso.

  • Scarica le basi della versione FFmpeg qui.
  • Estrai i file in un luogo da cui li utilizzerai in futuro. Nel mio caso, Li metto sul mio E Drive.
1zkspmfaxhfzot8bpkx078g-8508900
  • Entro scomparto La cartella contiene gli eseguibili che vogliamo.
17wmyn89jpbnnzdkmac-sgq-9018667
  • Aggiungere scomparto cartella a Variabile de ruta de entorno de Windows in modo che possiamo eseguire questo strumento senza dover specificare ogni volta il percorso completo. Cercare variabili ambientali nella barra di ricerca e fare clic su Variabili ambientali…
1m-rbx_dnbqtqymmmvfm15a-1528972
  • Clicca su Il percorso Su Variabile utente, clic Nuovo, e incolla il percorso completo di scomparto file.
1r8dgzk3ok08cqva5bnre9w-7645832
  • Ha aperto Prompt dei comandi e digita ffmpeg -version . Se vedi che la versione di FFmpeg è stampata, significa che FFmpeg è stato installato con successo. Possiamo anche controllare ffprob -version e ffplay -version .
1ft5c0qnpv-xp6nkvuifx2w-1381098

Librerie FFmpeg

FFmpeg ha diverse preziose librerie che puoi usare direttamente dal codice della tua applicazione. Ogni libreria contiene diverse funzioni relative a una particolare area.

Alcune delle famose biblioteche sono:

  1. libavcodec: contiene tutti gli encoder e i decoder supportati da FFmpeg.
  2. libavformat: ha tutti i muxer e demuxer per lavorare con vari formati di contenitori.
  3. libavfilter: Consiste di molti filtri che puoi utilizzare per modificare l'audio o il video in base alle esigenze.
  4. libavdevice: supporta diversi dispositivi di input e output.
  5. libavutil: aiuta la programmazione multimediale portatile.
  6. libswscale: esegue un ridimensionamento dell'immagine altamente ottimizzato e operazioni di conversione dello spazio colore e del formato pixel.
  7. libswresample: esegue operazioni di ricampionamento, remix e conversione di formati di campioni audio altamente ottimizzati.

Strumenti FFmpeg

Oltre alle librerie che le librerie possono utilizzare da altre applicazioni, il pacchetto FFmpeg contiene alcuni strumenti da solo.

Alcuni degli strumenti sono:

  1. FFmpeg: motore di transcodifica principale. Spesso invocato da una riga di comando o da un altro processo.
  2. ffplay: uno strumento minimo per riprodurre audio o video.
  3. ffprobe: ispezione rapida dei media per estrarre informazioni preziose, come quanti flussi ci sono nei media, il frame rate di un video, eccetera.

Esempi e utilizzo di FFprobe

Utilizzo

ffprobe [OPTIONS] [INPUT_FILE]

  • man ffprobe– Vedi il manuale.
  • ffprobe -h– Esempio di aiuto incluso.
  • -v error– Nascondi i record a meno che non ci sia un errore.
  • -show_format– Mostra metadati video formattati utilizzando Tag.
  • show_streams– Mostra tutti i flussi nell'archivio (sia video che audio).
  • -print_format —Stampa i metadati in un formato specifico (CSV / XML / JSON).
  • -select_streams
  • -show_entries stream=- Mostra solo l'entità specifica e le sue dipendenze nidificate.
  • -show_entries stream= default-noprint_wrappers=1- Mostra solo l'entità specifica.
  • Puoi saperne di più sull'uso di FFprob qui.

    Esempi di base

    $ ffprobe -v errore -show_format -show_streams input.mp4
    Produzione:
    [FLUSSO]
    indice=0
    codec_name=h264
    codec_long_name=H.264 / Ictus / MPEG-4 AVC / MPEG-4 parte 10
    profilo=Alto
    codec_type=video
    codec_time_base=1/50
    codec_tag_string=avc1
    codec_tag=0x31637661
    larghezza=320
    altezza=240
    has_b_frames=2
    sample_aspect_ratio=1:1
    display_aspect_ratio=4:3
    pix_fmt=yuv420p
    livello=13
    color_range=N/A
    color_space=sconosciuto
    color_transfer=sconosciuto
    color_primaries=sconosciuto
    chroma_location=sinistra
    codice temporale=N/A
    rif=4
    is_avc=1
    nal_length_size=4
    id=N/A
    r_frame_rate=25/1
    avg_frame_rate=25/1
    base_tempo=1/12800
    punti_iniziali=0
    start_time=0.000000
    duration_ts=384000
    durata=30.000000
    bit_rate=34761
    max_bit_rate=N/A
    bits_per_raw_sample=8
    nb_frames=750
    nb_read_frames=N/A
    nb_read_packets=N/A
    DISPOSIZIONE:predefinito=1
    DISPOSIZIONE:doppiare=0
    DISPOSIZIONE:originale=0
    DISPOSIZIONE:commento = 0
    DISPOSIZIONE:testo=0
    DISPOSIZIONE:karaoke=0
    DISPOSIZIONE:forzato=0
    DISPOSIZIONE:non udenti=0
    DISPOSIZIONE:visual_impaired=0
    DISPOSIZIONE:clean_effects=0
    DISPOSIZIONE:foto_attaccata=0
    ETICHETTA:lingua = e
    GIORNO:handler_name=VideoHandler
    [/FLUSSO]
    [FLUSSO]
    indice=1
    codec_name=aac
    codec_long_name=AAC (Codifica audio avanzata)
    profilo=LC
    codec_type=audio
    codec_time_base=1/44100
    codec_tag_string=mp4a
    codec_tag=0x6134706d
    sample_fmt=fltp
    sample_rate=44100
    canali=1
    channel_layout=mono
    bits_per_sample=0
    id=N/A
    r_frame_rate=0/0
    avg_frame_rate=0/0
    base_tempo=1/44100
    punti_iniziali=-1024
    start_time=-0.023220
    duration_ts=1324024
    durata=30.023220
    bit_rate=56517
    max_bit_rate=N/A
    bits_per_raw_sample=N/A
    nb_frames=1293
    nb_read_frames=N/A
    nb_read_packets=N/A
    DISPOSIZIONE:predefinito=1
    DISPOSIZIONE:doppiare=0
    DISPOSIZIONE:originale=0
    DISPOSIZIONE:commento = 0
    DISPOSIZIONE:testo=0
    DISPOSIZIONE:karaoke=0
    DISPOSIZIONE:forzato=0
    DISPOSIZIONE:non udenti=0
    DISPOSIZIONE:visual_impaired=0
    DISPOSIZIONE:clean_effects=0
    DISPOSIZIONE:foto_attaccata=0
    ETICHETTA:lingua = e
    GIORNO:handler_name=SoundHandler
    [/FLUSSO]
    [FORMATO]
    nomefile=input.mp4
    nb_streams=2
    nb_programmi=0
    nome_formato=movimento,mp4,m4a,3gp,3g2, mj2
    format_long_name=QuickTime / MOV
    start_time=-0.023220
    durata=30.024.000
    taglia=368644
    bit_rate=98226
    probe_score=100
    ETICHETTA:major_brand=isom
    ETICHETTA:versione_minore=512
    ETICHETTA:marchi_compatibili=isomiso2avc1mp41
    ETICHETTA:title=Suggerimenti FFprobe
    ETICHETTA:encoder=Lavf56.15.101
    [/FORMATO]
    • Dall'esempio sopra, se solo vuoi duration=30.024000 .
    $ ffprobe -v errore -show_entries format=duration -of default=noprint_wrappers=1 input.mp4
    Produzione: taglia=368644
    • Se vuoi solo il valore senza chiave.
    $ ffprobe -v errore -show_entries format=size -of default=noprint_wrappers=1:nokey=1 input.mp4
    Produzione: 368644
    • Ottenere larghezza e altezza (risoluzione) di video.
    $ ffprobe -v errore -select_streams v:0 -show_entries flusso=altezza,larghezza -di csv=s=x:p=0 input.mp4
    Produzione: 1280x720

    Uso ed esempi di FFplay

    Utilizzo

    ffplay [OPTIONS] [INPUT_FILE]

    • man ffplay- Vedi il manuale.
    • ffplay -h- Esempio di aiuto incluso.
    • ffplay - Riproduci video a schermo intero.
    • -x -y - Riproduci il video con una dimensione specifica di altezza e larghezza pop-up al centro. Riempirà automaticamente lo spazio extra tra l'area del video e l'area della finestra se le proporzioni della finestra popup e del video sono diverse.
    • -noborder- Nascondi la barra del titolo durante la riproduzione di video nelle finestre pop-up.
    • -[top/left/bottom/right] - Crea popup a coordinate specifiche. Per impostazione predefinita, apparirà al centro dello schermo.

    Puoi saperne di più sull'uso di FFplay qui.

    Esempi di base

    • Riproduci un file video chiamato video.mp4 a schermo intero.
    $ ffplay video.mp4
    • Riproduci un file video in una finestra pop-up con dimensioni di 600 larghezze, 600 alto e senza barra del titolo.
    $ ffplay video.mp4 -x 600 -e 600 -senza confine
    1xn2_esngyfgnieo0zaf8fg-2510588
    • Riproduci un file video in una finestra pop-up nell'angolo in alto a sinistra.
    $ ffplay video.mp4 -x 600 -e 600 -noborder -top 0 -sinistra 0
    1vo6spqx-apam4u8fpvhylq-5692967

    conclusione

    Avevamo coperto tutte le basi di FFmpeg. Sentiti libero di leggere la loro documentazione ufficiale qui se vuoi avere una comprensione più profonda!

    Riferimenti

    Circa l'autore:

    Questo articolo è stato scritto da Han Sheng, uno sviluppatore di app AI Full Stack di Cameron Highlands, Malaysia. Le apasiona el apprendimento profondo, computer vision e anche dispositivi Edge. Realizzate varie applicazioni web / Dispositivi mobili basati sull'intelligenza artificiale per aiutare i clienti a risolvere i problemi del mondo reale. Sentiti libero di leggerlo attraverso il suo portafoglio.

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.