SlideShare a Scribd company logo
1 of 22
Download to read offline
●   Multimedia con FF-mpeg
    ●   Introduzione ad alcuni concetti della compressione
        video
         –   contenitore multimediale e flussi monomediali
         –   compressione video
    ●   Introduzione a FF-mpeg (storia, modello di sviluppo)
    ●   Esempi d'uso di FF-mpeg




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                               1
Compressione video
   ●   Principi di base
        –   I metodi di compressione generici (huffman,
            compressione basata su vocabolario) da soli non sono
            sufficienti/efficienti
        –   Sfrutta le ridondanze spaziali (e.g. sfondo con colore
            uniforme) e temporali (e.g. sfondo fisso) presenti in
            un generico flusso video.
        –   Rende l'immagazzinamento e la trasmissione dei
            flussi video fattibile dal punto di vista economico e
            tecnologico
        –   Può essere con perdita di informazione o senza
            perdita di informazione
        –   Realizza un compromesso tra risorse computazionali
            richieste, livello di compressione ottenuto, qualità

Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                     2
Contenitori multimediali e flussi
    ●   Il formato del contenitore multimediale definisce come
        “multiplexare” molti flussi monomediali in un'unico
        flusso o file “Multimediale”
    ●   Ciascun contenitore multimediale presenta delle
        limitazioni
    ●   Esempi: Avi, Mpeg-4:14 (Quicktime, 3GP), ASF,
        Matroska, Nut, Ogg
    ●   Strumenti diagnostici: ffmpeg -i, mpeg4ip




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                 3
FF-mpeg
   ●   Caratteristiche - 1
        –   Nasce nel 2000 (Fabrice Bellard), inizialmente per
            implementare una libreria di codifica/decodifica Mpeg
        –   Libreria multipiattaforma (Linux, Be-OS, Mac, Windows)
        –   Strumenti a linea di comando che usano le librerie: ffmpeg,
            ffplay, ffserver
        –   Software libero (GPL/LGPL)
        –   Efficiente (ottimizzata per varie piattaforme)
        –   Progettata per supportare potenzialmente tutti i possibili
            formati multimediali (contenitori e flussi
            audio/video/testuali) e fornire uno strato di astrazione
            generico per gestire flussi multimediali




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                          4
FF-mpeg
   ●   Caratteristiche – 2
        –   Uno degli obiettivi del progetto è quello di fornire
            documentazione e supporto per il maggior numero
            possibile di formati fornendo al tempo stesso
            un'implementazione funzionante di codifica/decodifica dei
            vari formati (preservazione dei contenuti digitali nei
            secoli a venire)
        –   Ingegnerizzazione a rovescio (reverse enginnering) di
            molti formati proprietari (e.g. WMV, RV)
        –   Progetti innovativi:
             ● Snow

             ● Nut




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                        5
FF-mpeg
   ●   Modello di sviluppo
        –   Non vengono rilasciate release formali, l'ultima “versione”
            è considerato l'ultimo checkout SVN
        –   Le patch sono discusse e approvate nella mailing-list
            ffmpeg-devel, quindi (eventualmente) applicate
            ffmpeg-devel
        –   I manutentori principali si occupano di effetuare la
            revisione delle patch proposte ed eventualmente della loro
            applicazione
        –   Si può diventare sviluppatori “ufficiali” (permesso di
            scrittura SVN) per richiesta esplicita di mantenimento di un
            modulo o per “investitura” diretta
        –   Dal 2006 partecipa al progetto “Google Summer of Code”




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                           6
FF-mpeg
    ●   Alcuni progetti che usano FF-mpeg
         –   FFD-show
         –   M-player
         –   Myth-TV
         –   Open-H323
         –   Video-lan (VLC media player)
         –   Xine
         –   Molti servizi commerciali (YouTube?)




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                    7
Installazione di FF-mpeg - 1
    ●   Data la natura sperimentale di FF-mpeg, solo versioni
        recenti (snapshot SVN) sono considerate “supportate”;
        per questo è necessario installare da sorgenti.
         –   Procedura:
              ●  svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk
                ffmpeg
              ● ./configure --help; ./configure --bla-bla

              ● make

              ● make install


    ●   In molti casi è necessario installare librerie ed header
        esterni per abilitare il supporto a formati non supportati
        nativamente:
               ●   es.: sudo apt-get install libmp3lame-dev libmp3lame
                   libvorbis libvorbis-dev
Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                         8
Installazione di FF-mpeg - 2
    ●   Christian Marillat mantiene dei pacchetti deb per
        sistemi basati su Debian:
         –   deb http://www.debian-multimedia.org/ lenny main




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                9
ffmpeg: cosa è possibile fare
    ●   ffmpeg: coltellino svizzero per processare un flusso/file
        multimediale
    ●   muxing, demuxing, transcodifica
    ●   acquisizione da sorgenti varie (/dev/audio, x11grab)
    ●   riproduzione con ffplay (player multimediale minimale)
    ●   streaming con ffstream (attualmente non funziona!!)
    ●   filtraggio a livello di transcodifica con filtri video (V-
        hook: deprecati, libavfilter): es. watermarking
    ●   non è uno editor multimediale (vedi cinelerra, kino)



Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                     10
ffmpeg - autodocumentazione
    ●   RTFM:
         –   man ffmpeg
         –   ffmpeg -h
    ●   RTFS (Read The Fine Source)
    ●   Ottenere la lista dei formati (contenitori multimediali e
        flussi media) supportati:
         –   ffmpeg -formats
         –   ffmpeg -pix_fmt list




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                    11
ffmpeg – determinare il tipo di un
         file multimediale
    ●   ffmpeg -i <input file>
    ●   ffprobe -show_files -show_streams <input files>




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                          12
ffmpeg – processazione di file
         audio
    ●   Conversione a MP3 (-ab fino a 32Kbps):
         –   ffmpeg -i file.wav -ab 128k -acodec libmp3lame file.mp3
         –   conversione con downmixing:
               ● ffmpeg -i file.wav -ab 128k -acodec libmp3lame -ac 1

                 file.mp3
    ●   Conversione a vorbis (VBR: -aq variabile)
         –   ffmpeg -i file.wav -aq 30 -acodec vorbis file.vorbis
    ●   Conversione ad AAC (Advanced Audio Codec file):
         –   ffmpeg -i file.wav -ab 128k -acodec libfaac file.aac




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                        13
ffmpeg – processazione di file
  audio
    ●   Estrazione della traccia audio di un file multimediale:
         –   ffmpeg -i “Kylie Minogue – Slow.flv” -vn -acodec vorbis
             -sameq “Kylie Minogue – Slow.ogg”
         –   vedi anche youtube-download:
             http://thread.gmane.org/gmane.comp.video.ffmpeg.user/11723
    ●   non è attualmente supportata la possibilità di filtrare
        flussi audio (patches are welcome)




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                  14
ffmpeg – processazione di file
  video
      ●   Estrarre le immagioni da un flusso video:
           –   Estrazione di tutti i frame video:
                ● ffmpeg -i movie.avi -sameq -f image2 movie-

                  images/image-%03d.jpeg
           –   Con framerate diverso dall'originale:
                ●  ffmpeg -i movie.avi -f image2 -sameq -r 1 movie-
                  images/image-%03d.jpeg
      ●   Da immagini a un flusso video:
           –   ffmpeg -f image2 -i images-%d03.jpeg -r 1 -vcodec mpeg4
               movie.avi




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                      15
Transcodifica di file multimediali
    ●   Conversione di un file multimedia a un formato
        riproducibile da un telefono cellulare (video: H263,
        audio: AMR NB o AMR WB, contenitore: 3GP):
         –   ffmpeg -i movie.avi -b 37k -vcodec h263 -acodec
             libamr_nb -s qcif movie.3gp
    ●   Conversione di un file multimediale a un formato
        riproducibile da un I-pod (video: Mpeg-4:2, audio: AAC,
        contenitore: Mpeg-4:14):
         –   ffmpeg -i movie.avi -acodec libfaac -ab 128k -vcodec
             mpeg4 -flags trell+mv4 -s 320x180 movie.mp4




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                    16
Processazione di file multimediali
    ●   Codifica a qualità costante
         –   ffmpeg -i movie.avi -qscale 2 movie.mp4
    ●   Codifica a bitrate costante
         –   ffmpeg -i movie.avi -b 1000k -minrate 1000k -maxrate
             1000k -bufsize 2000k movie.mp4
    ●   ffmpeg dispone di centinaia di opzioni per controllare
        nel dettaglio il processo di transcodifica




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                    17
Filtraggio di contenuti
         multimediali
    ●   Applicare degli effetti (filtri) al video in input:
         –   V-hook filter (deprecati!! Vedi libavfilter)
               ● null filter

               ● watermarking filter

               ● imlib filter (ad esempio per generare sottotitoli)


         –   libavfilter: ancora non inserita nel ramo principale del
             codice di FF-mpeg:
               ● svn checkout svn://svn.mplayerhq.hu/soc/libavfilter


    ●   L'attuale architettura di libavfilter non supporta ancora
        il filtraggio di flussi audio (e neanche testuali)




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                        18
Acquisizione da sorgenti
    ●   libavsources: non esiste ma esistono implementate in
        libavformat funzionalità di acquisizione da vari
        dispositivi. Esempi:
         –   ffmpeg -f x11grab -s 1280x800 -i :0.0 -r 5 xgrab.avi
         –   ffmpeg -f oss -i /dev/audio audiograb.avi
         –   ffmpeg -f oss -i /dev/audio -f x11grab -s 1650x1050 -r 5 -i
             :0.0 screencast.avi
    ●   lettura da pipe:
         –   ffmpeg -t 10 -s qcif -f rawvideo -pix_fmt rgb24 -r 25 -i
             /dev/urandom -y noise.mpeg




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                           19
Google Summer of Code e FF-
      mpeg
●   Da un paio di anni FF-mpeg partecipa al Progetto Google
    Summer of Code:
      –   http://code.google.com/soc/2007
      –   http://wiki.multimedia.cx/index.php?title=Summer_Of_Code_2007




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                                          20
Link utili
    ●   Sito web di FFmpeg:
        http://ffmpeg.mplayerhq.hu/index.html
    ●   Mailing list di FFmpeg (ffmpeg-user e ffmpeg-devel)
        (English only!):
        http://ffmpeg.mplayerhq.hu/mailinglists.html
    ●   Wiki di Mike Melanson sul multimedia:
        http://wiki.multimedia.cx/index.php?title=Main_Page
    ●   Pagina di wikipedia sul multimedia:
        http://en.wikipedia.org/wiki/Multimedia




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                                              21
Grazie per l'attenzione!




Stefano Sabatini, Multimedia con FF-mpeg
Cagliari, 27 Ottobre 2007
                                           22

More Related Content

What's hot

CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsMirko Mancin
 
Debian translation party 2
Debian translation party 2Debian translation party 2
Debian translation party 2Stefano Canepa
 
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsMirko Mancin
 
Presentazione Dvd OpenStreetMap versione 1.0
Presentazione Dvd OpenStreetMap versione 1.0 Presentazione Dvd OpenStreetMap versione 1.0
Presentazione Dvd OpenStreetMap versione 1.0 Infoweblan
 
Appunti_01 LPIC-1 Junior Level Linux Certification
Appunti_01 LPIC-1 Junior Level Linux CertificationAppunti_01 LPIC-1 Junior Level Linux Certification
Appunti_01 LPIC-1 Junior Level Linux CertificationVincenzo Argese
 

What's hot (6)

CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
 
Debian translation party 2
Debian translation party 2Debian translation party 2
Debian translation party 2
 
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
 
Presentazione Dvd OpenStreetMap versione 1.0
Presentazione Dvd OpenStreetMap versione 1.0 Presentazione Dvd OpenStreetMap versione 1.0
Presentazione Dvd OpenStreetMap versione 1.0
 
Appunti_01 LPIC-1 Junior Level Linux Certification
Appunti_01 LPIC-1 Junior Level Linux CertificationAppunti_01 LPIC-1 Junior Level Linux Certification
Appunti_01 LPIC-1 Junior Level Linux Certification
 
Distro linux
Distro linuxDistro linux
Distro linux
 

Similar to Multimedia con FFmpeg

LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesMaurizio Antonelli
 
Degree Dissertation
Degree DissertationDegree Dissertation
Degree Dissertationbbg5ne
 
Costruisci la tua piattaforma open-source di video-sharing in Python
Costruisci la tua piattaforma open-source di video-sharing in Python Costruisci la tua piattaforma open-source di video-sharing in Python
Costruisci la tua piattaforma open-source di video-sharing in Python simahawk
 
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...Roberto Ellero
 
Vsns sf032
Vsns sf032Vsns sf032
Vsns sf032GpsLazio
 
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014Janhu Silvio Crispiatico
 
Formati aperti vs formati proprietari
Formati aperti vs formati proprietariFormati aperti vs formati proprietari
Formati aperti vs formati proprietariRiccardo Zanella
 
Magix video easy_terratec_edition_manual_it
Magix video easy_terratec_edition_manual_itMagix video easy_terratec_edition_manual_it
Magix video easy_terratec_edition_manual_itTania Bozhova
 
Vshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okVshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okGpsLazio
 
Vshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okVshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okGpsLazio
 
Vsns sf016 ok
Vsns sf016 okVsns sf016 ok
Vsns sf016 okGpsLazio
 
Vudvr16 cc(new)
Vudvr16 cc(new)Vudvr16 cc(new)
Vudvr16 cc(new)GpsLazio
 
Linux Day 2016 Milano - Open Source Hardware PowerPC Notebook
Linux Day 2016 Milano - Open Source Hardware PowerPC Notebook Linux Day 2016 Milano - Open Source Hardware PowerPC Notebook
Linux Day 2016 Milano - Open Source Hardware PowerPC Notebook Roberto Innocenti
 
Vsns sf064
Vsns sf064Vsns sf064
Vsns sf064GpsLazio
 
Presentazione di The Gimp al Linux Day 2015
Presentazione di The Gimp al Linux Day 2015Presentazione di The Gimp al Linux Day 2015
Presentazione di The Gimp al Linux Day 2015Janhu Silvio Crispiatico
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Marcello Teodori
 
FFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleFFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleStefano Sabatini
 
Multimedia Cde
Multimedia CdeMultimedia Cde
Multimedia Cdeclayton
 
Corso live streaming sett 2013 lesson 1
Corso live streaming sett 2013 lesson 1 Corso live streaming sett 2013 lesson 1
Corso live streaming sett 2013 lesson 1 InSide Training
 

Similar to Multimedia con FFmpeg (20)

LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slides
 
Degree Dissertation
Degree DissertationDegree Dissertation
Degree Dissertation
 
Costruisci la tua piattaforma open-source di video-sharing in Python
Costruisci la tua piattaforma open-source di video-sharing in Python Costruisci la tua piattaforma open-source di video-sharing in Python
Costruisci la tua piattaforma open-source di video-sharing in Python
 
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...
 
Vsns sf032
Vsns sf032Vsns sf032
Vsns sf032
 
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014
 
Formati aperti vs formati proprietari
Formati aperti vs formati proprietariFormati aperti vs formati proprietari
Formati aperti vs formati proprietari
 
Magix video easy_terratec_edition_manual_it
Magix video easy_terratec_edition_manual_itMagix video easy_terratec_edition_manual_it
Magix video easy_terratec_edition_manual_it
 
Vshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okVshr 5160 p-5162p-ok
Vshr 5160 p-5162p-ok
 
Vshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okVshr 5160 p-5162p-ok
Vshr 5160 p-5162p-ok
 
Vsns sf016 ok
Vsns sf016 okVsns sf016 ok
Vsns sf016 ok
 
Vudvr16 cc(new)
Vudvr16 cc(new)Vudvr16 cc(new)
Vudvr16 cc(new)
 
Linux Day 2016 Milano - Open Source Hardware PowerPC Notebook
Linux Day 2016 Milano - Open Source Hardware PowerPC Notebook Linux Day 2016 Milano - Open Source Hardware PowerPC Notebook
Linux Day 2016 Milano - Open Source Hardware PowerPC Notebook
 
Vsns sf064
Vsns sf064Vsns sf064
Vsns sf064
 
Presentazione di The Gimp al Linux Day 2015
Presentazione di The Gimp al Linux Day 2015Presentazione di The Gimp al Linux Day 2015
Presentazione di The Gimp al Linux Day 2015
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5
 
FFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleFFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universale
 
Multimedia Cde
Multimedia CdeMultimedia Cde
Multimedia Cde
 
Corso live streaming sett 2013 lesson 1
Corso live streaming sett 2013 lesson 1 Corso live streaming sett 2013 lesson 1
Corso live streaming sett 2013 lesson 1
 

More from Stefano Sabatini

FFmpeg - the universal multimedia toolkit
FFmpeg - the universal multimedia toolkitFFmpeg - the universal multimedia toolkit
FFmpeg - the universal multimedia toolkitStefano Sabatini
 
Software libero: verso un modello di business
Software libero: verso un modello di businessSoftware libero: verso un modello di business
Software libero: verso un modello di businessStefano Sabatini
 
Introduzione a libavfilter
Introduzione a libavfilterIntroduzione a libavfilter
Introduzione a libavfilterStefano Sabatini
 
Introduzione al software libero
Introduzione al software liberoIntroduzione al software libero
Introduzione al software liberoStefano Sabatini
 
Ekiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/LinuxEkiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/LinuxStefano Sabatini
 

More from Stefano Sabatini (7)

FFmpeg - the universal multimedia toolkit
FFmpeg - the universal multimedia toolkitFFmpeg - the universal multimedia toolkit
FFmpeg - the universal multimedia toolkit
 
Software libero: verso un modello di business
Software libero: verso un modello di businessSoftware libero: verso un modello di business
Software libero: verso un modello di business
 
Vulnerabilità exploit
Vulnerabilità exploitVulnerabilità exploit
Vulnerabilità exploit
 
Introduzione a libavfilter
Introduzione a libavfilterIntroduzione a libavfilter
Introduzione a libavfilter
 
Libavfilter
LibavfilterLibavfilter
Libavfilter
 
Introduzione al software libero
Introduzione al software liberoIntroduzione al software libero
Introduzione al software libero
 
Ekiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/LinuxEkiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/Linux
 

Multimedia con FFmpeg

  • 1. Multimedia con FF-mpeg ● Introduzione ad alcuni concetti della compressione video – contenitore multimediale e flussi monomediali – compressione video ● Introduzione a FF-mpeg (storia, modello di sviluppo) ● Esempi d'uso di FF-mpeg Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 1
  • 2. Compressione video ● Principi di base – I metodi di compressione generici (huffman, compressione basata su vocabolario) da soli non sono sufficienti/efficienti – Sfrutta le ridondanze spaziali (e.g. sfondo con colore uniforme) e temporali (e.g. sfondo fisso) presenti in un generico flusso video. – Rende l'immagazzinamento e la trasmissione dei flussi video fattibile dal punto di vista economico e tecnologico – Può essere con perdita di informazione o senza perdita di informazione – Realizza un compromesso tra risorse computazionali richieste, livello di compressione ottenuto, qualità Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 2
  • 3. Contenitori multimediali e flussi ● Il formato del contenitore multimediale definisce come “multiplexare” molti flussi monomediali in un'unico flusso o file “Multimediale” ● Ciascun contenitore multimediale presenta delle limitazioni ● Esempi: Avi, Mpeg-4:14 (Quicktime, 3GP), ASF, Matroska, Nut, Ogg ● Strumenti diagnostici: ffmpeg -i, mpeg4ip Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 3
  • 4. FF-mpeg ● Caratteristiche - 1 – Nasce nel 2000 (Fabrice Bellard), inizialmente per implementare una libreria di codifica/decodifica Mpeg – Libreria multipiattaforma (Linux, Be-OS, Mac, Windows) – Strumenti a linea di comando che usano le librerie: ffmpeg, ffplay, ffserver – Software libero (GPL/LGPL) – Efficiente (ottimizzata per varie piattaforme) – Progettata per supportare potenzialmente tutti i possibili formati multimediali (contenitori e flussi audio/video/testuali) e fornire uno strato di astrazione generico per gestire flussi multimediali Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 4
  • 5. FF-mpeg ● Caratteristiche – 2 – Uno degli obiettivi del progetto è quello di fornire documentazione e supporto per il maggior numero possibile di formati fornendo al tempo stesso un'implementazione funzionante di codifica/decodifica dei vari formati (preservazione dei contenuti digitali nei secoli a venire) – Ingegnerizzazione a rovescio (reverse enginnering) di molti formati proprietari (e.g. WMV, RV) – Progetti innovativi: ● Snow ● Nut Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 5
  • 6. FF-mpeg ● Modello di sviluppo – Non vengono rilasciate release formali, l'ultima “versione” è considerato l'ultimo checkout SVN – Le patch sono discusse e approvate nella mailing-list ffmpeg-devel, quindi (eventualmente) applicate ffmpeg-devel – I manutentori principali si occupano di effetuare la revisione delle patch proposte ed eventualmente della loro applicazione – Si può diventare sviluppatori “ufficiali” (permesso di scrittura SVN) per richiesta esplicita di mantenimento di un modulo o per “investitura” diretta – Dal 2006 partecipa al progetto “Google Summer of Code” Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 6
  • 7. FF-mpeg ● Alcuni progetti che usano FF-mpeg – FFD-show – M-player – Myth-TV – Open-H323 – Video-lan (VLC media player) – Xine – Molti servizi commerciali (YouTube?) Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 7
  • 8. Installazione di FF-mpeg - 1 ● Data la natura sperimentale di FF-mpeg, solo versioni recenti (snapshot SVN) sono considerate “supportate”; per questo è necessario installare da sorgenti. – Procedura: ● svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg ● ./configure --help; ./configure --bla-bla ● make ● make install ● In molti casi è necessario installare librerie ed header esterni per abilitare il supporto a formati non supportati nativamente: ● es.: sudo apt-get install libmp3lame-dev libmp3lame libvorbis libvorbis-dev Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 8
  • 9. Installazione di FF-mpeg - 2 ● Christian Marillat mantiene dei pacchetti deb per sistemi basati su Debian: – deb http://www.debian-multimedia.org/ lenny main Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 9
  • 10. ffmpeg: cosa è possibile fare ● ffmpeg: coltellino svizzero per processare un flusso/file multimediale ● muxing, demuxing, transcodifica ● acquisizione da sorgenti varie (/dev/audio, x11grab) ● riproduzione con ffplay (player multimediale minimale) ● streaming con ffstream (attualmente non funziona!!) ● filtraggio a livello di transcodifica con filtri video (V- hook: deprecati, libavfilter): es. watermarking ● non è uno editor multimediale (vedi cinelerra, kino) Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 10
  • 11. ffmpeg - autodocumentazione ● RTFM: – man ffmpeg – ffmpeg -h ● RTFS (Read The Fine Source) ● Ottenere la lista dei formati (contenitori multimediali e flussi media) supportati: – ffmpeg -formats – ffmpeg -pix_fmt list Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 11
  • 12. ffmpeg – determinare il tipo di un file multimediale ● ffmpeg -i <input file> ● ffprobe -show_files -show_streams <input files> Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 12
  • 13. ffmpeg – processazione di file audio ● Conversione a MP3 (-ab fino a 32Kbps): – ffmpeg -i file.wav -ab 128k -acodec libmp3lame file.mp3 – conversione con downmixing: ● ffmpeg -i file.wav -ab 128k -acodec libmp3lame -ac 1 file.mp3 ● Conversione a vorbis (VBR: -aq variabile) – ffmpeg -i file.wav -aq 30 -acodec vorbis file.vorbis ● Conversione ad AAC (Advanced Audio Codec file): – ffmpeg -i file.wav -ab 128k -acodec libfaac file.aac Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 13
  • 14. ffmpeg – processazione di file audio ● Estrazione della traccia audio di un file multimediale: – ffmpeg -i “Kylie Minogue – Slow.flv” -vn -acodec vorbis -sameq “Kylie Minogue – Slow.ogg” – vedi anche youtube-download: http://thread.gmane.org/gmane.comp.video.ffmpeg.user/11723 ● non è attualmente supportata la possibilità di filtrare flussi audio (patches are welcome) Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 14
  • 15. ffmpeg – processazione di file video ● Estrarre le immagioni da un flusso video: – Estrazione di tutti i frame video: ● ffmpeg -i movie.avi -sameq -f image2 movie- images/image-%03d.jpeg – Con framerate diverso dall'originale: ● ffmpeg -i movie.avi -f image2 -sameq -r 1 movie- images/image-%03d.jpeg ● Da immagini a un flusso video: – ffmpeg -f image2 -i images-%d03.jpeg -r 1 -vcodec mpeg4 movie.avi Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 15
  • 16. Transcodifica di file multimediali ● Conversione di un file multimedia a un formato riproducibile da un telefono cellulare (video: H263, audio: AMR NB o AMR WB, contenitore: 3GP): – ffmpeg -i movie.avi -b 37k -vcodec h263 -acodec libamr_nb -s qcif movie.3gp ● Conversione di un file multimediale a un formato riproducibile da un I-pod (video: Mpeg-4:2, audio: AAC, contenitore: Mpeg-4:14): – ffmpeg -i movie.avi -acodec libfaac -ab 128k -vcodec mpeg4 -flags trell+mv4 -s 320x180 movie.mp4 Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 16
  • 17. Processazione di file multimediali ● Codifica a qualità costante – ffmpeg -i movie.avi -qscale 2 movie.mp4 ● Codifica a bitrate costante – ffmpeg -i movie.avi -b 1000k -minrate 1000k -maxrate 1000k -bufsize 2000k movie.mp4 ● ffmpeg dispone di centinaia di opzioni per controllare nel dettaglio il processo di transcodifica Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 17
  • 18. Filtraggio di contenuti multimediali ● Applicare degli effetti (filtri) al video in input: – V-hook filter (deprecati!! Vedi libavfilter) ● null filter ● watermarking filter ● imlib filter (ad esempio per generare sottotitoli) – libavfilter: ancora non inserita nel ramo principale del codice di FF-mpeg: ● svn checkout svn://svn.mplayerhq.hu/soc/libavfilter ● L'attuale architettura di libavfilter non supporta ancora il filtraggio di flussi audio (e neanche testuali) Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 18
  • 19. Acquisizione da sorgenti ● libavsources: non esiste ma esistono implementate in libavformat funzionalità di acquisizione da vari dispositivi. Esempi: – ffmpeg -f x11grab -s 1280x800 -i :0.0 -r 5 xgrab.avi – ffmpeg -f oss -i /dev/audio audiograb.avi – ffmpeg -f oss -i /dev/audio -f x11grab -s 1650x1050 -r 5 -i :0.0 screencast.avi ● lettura da pipe: – ffmpeg -t 10 -s qcif -f rawvideo -pix_fmt rgb24 -r 25 -i /dev/urandom -y noise.mpeg Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 19
  • 20. Google Summer of Code e FF- mpeg ● Da un paio di anni FF-mpeg partecipa al Progetto Google Summer of Code: – http://code.google.com/soc/2007 – http://wiki.multimedia.cx/index.php?title=Summer_Of_Code_2007 Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 20
  • 21. Link utili ● Sito web di FFmpeg: http://ffmpeg.mplayerhq.hu/index.html ● Mailing list di FFmpeg (ffmpeg-user e ffmpeg-devel) (English only!): http://ffmpeg.mplayerhq.hu/mailinglists.html ● Wiki di Mike Melanson sul multimedia: http://wiki.multimedia.cx/index.php?title=Main_Page ● Pagina di wikipedia sul multimedia: http://en.wikipedia.org/wiki/Multimedia Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 21
  • 22. Grazie per l'attenzione! Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 22