Introduzione a libavfilter

387 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
387
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduzione a libavfilter

  1. 1. Introduzioneal progettoIntroduzioneall’architettura Introduzione a Libavfilterdi libavfilterEsempiSviluppi futuri Stefano SabatiniAppendici mailto:stefasab@gmail.com GULCH Linux Day Cagliari - 22 Ottobre 2011 1 / 20
  2. 2. SommarioIntroduzioneal progetto 1 Introduzione al progettoIntroduzioneall’architetturadi libavfilter 2 Introduzione all’architettura di libavfilterEsempiSviluppi futuriAppendici 3 Esempi 4 Sviluppi futuri 5 Appendici 2 / 20
  3. 3. ObiettiviIntroduzioneal progettoIntroduzione fornisce supporto a filtraggio a contenuti multimedialiall’architetturadi libavfilter implementato come libreria, interfaccia accessibili dagliEsempi strumenti a linea di comandoSviluppi futuriAppendici semplifica il progetto dei tools ff*, estende la flessibilità/versatilità estende l’infrastruttura di test, supporto a filtri/sorgenti di test 3 / 20
  4. 4. Dipendenze di libavfilterIntroduzioneal progettoIntroduzioneall’architetturadi libavfilterEsempiSviluppi futuriAppendici 4 / 20
  5. 5. Caratteristiche focus sulla performance (evita copie addizionali, evitaIntroduzioneal progetto conversioni)Introduzione supporta tutti i formati supportati da FFmpegall’architetturadi libavfilter implementa un sistema sofisticato di negoziazione deiEsempi formati, minimizza il numero di conversioni di formatoSviluppi futuri audio/videoAppendici presenta supporto embrionale a caratteristiche interattive (comandi/eventi processati in modo interattivo) gestisce grafi di filtri, piuttosto che catene lineari supporta sorgenti e pozzi (sink) supporta filtraggio transmedia 5 / 20
  6. 6. Stato di sviluppoIntroduzioneal progettoIntroduzioneall’architetturadi libavfilter filtraggio video (-vf) integrato in ffmpeg.c nel MaggioEsempi 2010, incluso negli ultimi rilasci formali diSviluppi futuriAppendici FFmpeg/Libav (0.7/0.8) integrazione audio è in corso 6 / 20
  7. 7. Anatomia di un filtroIntroduzioneal progettoIntroduzione Un filtro contiene uno o più input/output padall’architetturadi libavfilter Ogni pad è associato a un tipo particolare di mediaEsempi (A/V), supporta uno o più formati di input/outputSviluppi futuri input e output pad sono connessi da un linkAppendici vari filtri possono essere collegati in modo da formare un grafo un grafo può essere rappresentato tramite un descrizione testuale 7 / 20
  8. 8. Anatomia di un filtro - 2Introduzioneal progettoIntroduzioneall’architetturadi libavfilterEsempiSviluppi futuriAppendici 8 / 20
  9. 9. Modello di filtraggioIntroduzioneal progettoIntroduzioneall’architettura un filtro processa buffer, un buffer può contenere undi libavfilter frame video o dei campioni audioEsempiSviluppi futuri le proprietà di ogni buffer (tipo del frame I/P/B etc.,Appendici timestamp, posizione nel file) possono essere acceduti e modificati durante la fase di filtraggio modello ibrido pull/push 9 / 20
  10. 10. Lavfi inputIntroduzioneal progettoIntroduzione Fornisce un dispositivo di input virtuale, legge laall’architetturadi libavfilter descrizione di un grafo di filtri e associa ogni outputEsempi aperto ad uno stream in uscita.Sviluppi futuriAppendici Example ffplay -f lavfi "testsrc[out0]; aevalsrc=0.5*sin(2*PI*440*t)[out1]" 10 / 20
  11. 11. FiltriIntroduzioneal progetto scale - basato su libswscaleIntroduzioneall’architetturadi libavfilter pad, crop, vflip, hflipEsempi frei0r / frei0r_src wrapperSviluppi futuri mp wrapper (wrapper dei filtri di MPlayer)Appendici altri: boxblur, delogo, drawtext, lutyuv, lutrgb, yadif, select, unsharp... correntemente 60 tra filtri/sorgenti/sink (vedi l’opzione -filters) 11 / 20
  12. 12. ExampleIntroduzioneal progetto color=pink,nullsinkIntroduzioneall’architetturadi libavfilter ExampleEsempi pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2:bikeshed"Sviluppi futuriAppendici Example crop="iw/2:ih/2:(iw-ow)/2+((iw-ow)/2)*sin(n/10):(ih-oh)/2 +((ih-oh)/2)*sin(n/7)" Example scale="3/2*oh:5/3*ih" 12 / 20
  13. 13. Introduzioneal progettoIntroduzione Exampleall’architetturadi libavfilter drawtext="fontsize=40:fontcolor=black@0.3:box=1:boxcolor=pinEsempi fontfile=FreeSerif.ttf:text=hello:x=50+20*t:y=(h/2)"Sviluppi futuriAppendici Example movie=linuxday-logo.png,scale=50:-1 [logo]; [in][logo] overlay=(W-w)/2:(H-h)/2" 13 / 20
  14. 14. Introduzioneal progettoIntroduzioneall’architettura Exampledi libavfilterEsempi frei0r=sobelSviluppi futuriAppendici Example ocv="dilate=5x5+2x2/cross:2" 14 / 20
  15. 15. Introduzioneal progettoIntroduzioneall’architetturadi libavfilter ExampleEsempiSviluppi futuri ffplay -f lavfi "aevalsrc=sin(2*PI*440*t) * 0.5*abs(sin(2*PI*t))Appendici - 0.1+0.2*random(1)" 15 / 20
  16. 16. Sviluppi futuri - 1Introduzioneal progettoIntroduzioneall’architetturadi libavfilter integrazione del supporto a filtri audio, wrapperEsempi sox+ladspaSviluppi futuriAppendici modifiche a livello di infrastruttura - e.g. integrazione più stretta con libavcodec, supporto a direct rendering 16 / 20
  17. 17. Sviluppi futuri - 2Introduzioneal progettoIntroduzioneall’architetturadi libavfilter filtraggio transmedia (A -> V)Esempi filtraggio di sottotitoliSviluppi futuri transmedia+filtraggio di sottotitoli: riconoscimento voceAppendici / sintesi vocale / rendering di sottotitoli più filtri! 17 / 20
  18. 18. Come contribuireIntroduzioneal progettoIntroduzioneall’architetturadi libavfilterEsempi feedback: report di bug, richieste di nuove featureSviluppi futuri patches are welcome!Appendici soldi/cartoline/altro 18 / 20
  19. 19. RisorseIntroduzioneal progettoIntroduzioneall’architetturadi libavfilter http://ffmpeg.org/libavfilter.htmlEsempi libavfilter/*.{h,c}Sviluppi futuriAppendici doc/examples/filtering.c ffmpeg-user, ffmpeg-devel mailing-list, IRC 19 / 20
  20. 20. Licenza di questo documentoIntroduzioneal progettoIntroduzioneall’architettura Rilasciato con licenza Creative Commonsdi libavfilter Attribution-NonCommercial-ShareAlike (vedi: http://Esempi creativecommons.org/licenses/by-nc-sa/3.0/)Sviluppi futuriAppendici 20 / 20

×