Multimedia con FFmpeg

22
Stefano Sabatini, Multimedia con FF-mpeg Cagliari, 27 Ottobre 2007 1 Multimedia con FF-mpeg 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

description

Introduzione al multimedia e a FFmpeg.

Transcript of Multimedia con FFmpeg

Page 1: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

1

● Multimedia con FF-mpegMultimedia 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

Page 2: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

2

● Principi di basePrincipi di base– I metodi di compressione generici (huffman, I metodi di compressione generici (huffman,

compressione basata su vocabolario) da soli non sono compressione basata su vocabolario) da soli non sono sufficienti/efficientisufficienti/efficienti

– Sfrutta le ridondanze spaziali (e.g. sfondo con colore Sfrutta le ridondanze spaziali (e.g. sfondo con colore uniforme) e temporali (e.g. sfondo fisso) presenti in uniforme) e temporali (e.g. sfondo fisso) presenti in un generico flusso video.un generico flusso video.

– Rende l'immagazzinamento e la trasmissione dei Rende l'immagazzinamento e la trasmissione dei flussi video fattibile dal punto di vista economico e flussi video fattibile dal punto di vista economico e tecnologicotecnologico

– Può essere con perdita di informazione o senza Può essere con perdita di informazione o senza perdita di informazioneperdita di informazione

– Realizza un compromesso tra risorse computazionali Realizza un compromesso tra risorse computazionali richieste, livello di compressione ottenuto, qualitàrichieste, livello di compressione ottenuto, qualità

Compressione video

Page 3: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 4: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 5: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

5

FF-mpeg

● Caratteristiche – 2– Uno degli obiettivi del progetto è quello di fornire

documentazionedocumentazione e supporto per il maggior numero possibile di formati fornendo al tempo stesso un'implementazione funzionante di codifica/decodifica dei vari formati (preservazionepreservazione dei contenuti digitali nei secoli a venire)

– Ingegnerizzazione a rovescioIngegnerizzazione a rovescio (reverse enginnering) di molti formati proprietari (e.g. WMV, RV)

– Progetti innovativi:● SnowSnow● NutNut

Page 6: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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-develffmpeg-devel, quindi (eventualmente) applicate

– 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”

Page 7: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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?)

Page 8: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 9: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 10: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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)

Page 11: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 12: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

12

ffmpeg – determinare il tipo di un file multimediale

● ffmpeg -i <input file>● ffprobe -show_files -show_streams <input files>

Page 13: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 14: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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)

Page 15: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 16: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 17: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 18: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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)

Page 19: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 20: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 21: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

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

Page 22: Multimedia con FFmpeg

Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007

22

Grazie per l'attenzione!