Multimedia con FFmpeg
-
Upload
stefano-sabatini -
Category
Technology
-
view
1.195 -
download
2
description
Transcript of 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
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
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
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
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
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”
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?)
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
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
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)
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
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>
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
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)
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
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
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
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)
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
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
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
Stefano Sabatini, Multimedia con FF-mpegCagliari, 27 Ottobre 2007
22
Grazie per l'attenzione!