SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
Introduction

Resources

Appendix
               FFmpeg - the universal multimedia toolkit

                            Stefano Sabatini
                      mailto:stefasab@gmail.com

                                Video Vortex #9


                       Video Vortex #9 - 1 March, 2013




                                                           1 / 13
Description



Introduction

Resources

Appendix
                   multiplatform software project (Linux, Mac, Windows,
                   Android, etc...)
                   Comprises several command line tools: ffmpeg,
                   ffplay, ffprobe, ffserver
                   Comprises C libraries to handle multimedia at several
                   levels
                   Free Software / FLOSS: LGPL/GPL




                                                                           2 / 13
Objective



Introduction

Resources      Provide universal and complete support to multimedia
Appendix       content access and processing.
                   decoding/encoding
                   muxing/demuxing
                   streaming
                   filtering
                   metadata handling




                                                                      3 / 13
History



Introduction       2000: Fabrice Bellard starts the project with the initial
Resources          aim to implement an MPEG encoding/decoding library.
Appendix           The resulting project is integrated as multimedia engine
                   in MPlayer, which also hosts the project.
                   2003: Fabrice Bellard leaves the project, Michael
                   Niedermayer acts as project maintainer since then.
                   March 2009: release version 0.5, first official release
                   January 2011: a group of discontented developers
                   takes control over the FFmpeg web server and creates
                   an alternative Git repo, a few months later a proper fork
                   is created (Libav).


                                                                           4 / 13
Development model

                  Source code is handled through Git, tickets (feature
                  requests, bugs) handled by Trac
Introduction

Resources         Patches are discussed and approved on mailing-list,
Appendix          and directly pushed or merged from external repos,
                  trivial patches or hot fixes can be pushed directly with
                  no review.
                  Every contributor/maintainer reviews patches in his/her
                  own area of expertise/interest, review is done on a best
                  effort basis by a (hopefully) competent developer.
                  Formal releases are delivered every 6 months or so.
                  Custom testing environment (FATE) and samples
                  archive used for automated testing
                  around 10 core developers, 200/300 per-year total
                  contributors
                                                                         5 / 13
What is used for



Introduction
                   audio / video low level conversions (libswscale,
Resources

Appendix
                   libswresample - rescaling, image format conversion,
                   audio conversion)
                   decoding / encoding (libavcodec - more than 300
                   codecs)
                   muxing / demuxing (libavformat)
                   grabbing input devices (libavdevice)
                   streaming (libavformat, RTSP, RTP, RTMP, ...)
                   filtering (libavfilter)



                                                                         6 / 13
High level Features



Introduction

Resources

Appendix
                   written mostly in C/assembly
                   provides an extensible framework
                   modular/configurable
                   relies on external libraries (e.g. libmp3lame, libx264,
                   libvorbis, libspeex, frei0r, ...) when it makes sense




                                                                             7 / 13
Libavfilter



Introduction
                   Audio / Video filters
Resources

Appendix
                   timestamps manipulation
                   more than 100 filters, some wrapped libraries (opencv,
                   frei0r filters)
                   transmedia filtering (e.g. audio to video)
                   subtitles video hardcoding through ass/subtitles filter
                   command API (allow to send commands to various
                   filters)
                   future development: lua scripting, subtitles filtering



                                                                            8 / 13
FFmpeg-based projects



Introduction
                  Used by most (all?) web transcoding multimedia
Resources

Appendix
                  back-ends: (e.g. used by Youtube according to this
                  post: http://multimedia.cx/eggs/
                  googles-youtube-uses-ffmpeg/)
                  MPlayer (libavcodec, libavformat)
                  VLC (libavcodec, libavformat)
                  GStreamer (libav/ffmpeg plugin)
                  Chromium
                  more: http://ffmpeg.org/projects.html



                                                                       9 / 13
Organization



Introduction

Resources

Appendix
                   No official organization backing the project. Donations
                   are collected through SPI (Software in the Public
                   Interest) since June 2012.
                   Partecipated to several editions of Google Summer of
                   Code (2006, 2007, 2008, 2009, 2010, 2011) and ESA
                   Summer of Code in Space (2011, 2012)
                   Crowd funding would be nice at some point




                                                                          10 / 13
Summary



Introduction

Resources

Appendix
                  free universal multimedia engine
                  flexible, powerful -> complex
                  integrated into large number of FLOSS multimedia
                  projects
                  huge community of developers / users




                                                                     11 / 13
Resources



Introduction

Resources

Appendix
                  FFmpeg project web site: http://www.ffmpeg.org
                  FFmpeg wiki:
                  https://ffmpeg.org/trac/ffmpeg/wiki
                  Mike Melanson multimedia wiki
                  http://wiki.multimedia.cx/




                                                               12 / 13
License of this document



Introduction

Resources
               This document is released under Creative Commons
Appendix
               License - Attribution-NonCommercial-ShareAlike 3.0:
               http://creativecommons.org/licenses/
               by-nc-sa/3.0/)




                                                                     13 / 13

Contenu connexe

Tendances

MARTINEZ KROMER RAWCooked
MARTINEZ KROMER RAWCookedMARTINEZ KROMER RAWCooked
MARTINEZ KROMER RAWCookedFIAT/IFTA
 
Development and deployment with composer and kite
Development and deployment with composer and kiteDevelopment and deployment with composer and kite
Development and deployment with composer and kiteChristian Opitz
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategiesrahulbot
 
Os Koziarsky
Os KoziarskyOs Koziarsky
Os Koziarskyoscon2007
 
Debian packaging howto
Debian packaging howtoDebian packaging howto
Debian packaging howtoDing Zhou
 
Beginning with Composer - Dependency manager in php
Beginning with Composer  - Dependency manager in php Beginning with Composer  - Dependency manager in php
Beginning with Composer - Dependency manager in php Yogesh Salvi
 
openSUSE tools on Debian
openSUSE tools on DebianopenSUSE tools on Debian
openSUSE tools on DebianHideki Yamane
 
平行化你的工作 part1
平行化你的工作 part1平行化你的工作 part1
平行化你的工作 part1Shuen-Huei Guan
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
 
Debugging Python with gdb
Debugging Python with gdbDebugging Python with gdb
Debugging Python with gdbRoman Podoliaka
 
Transcode star
Transcode starTranscode star
Transcode starunweb
 
Internet Archive at Open Video Conference 2009
Internet Archive at Open Video Conference 2009Internet Archive at Open Video Conference 2009
Internet Archive at Open Video Conference 2009tracey jaquith
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019corehard_by
 
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesWebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesAlexandre Gouaillard
 
How to write patches for Vim
How to write patches for VimHow to write patches for Vim
How to write patches for Vimk-takata
 
DNF FUDCon Pune 2015
DNF FUDCon Pune 2015DNF FUDCon Pune 2015
DNF FUDCon Pune 2015Parag
 

Tendances (20)

MARTINEZ KROMER RAWCooked
MARTINEZ KROMER RAWCookedMARTINEZ KROMER RAWCooked
MARTINEZ KROMER RAWCooked
 
Linux Edtitors
Linux EdtitorsLinux Edtitors
Linux Edtitors
 
Development and deployment with composer and kite
Development and deployment with composer and kiteDevelopment and deployment with composer and kite
Development and deployment with composer and kite
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies
 
Os Koziarsky
Os KoziarskyOs Koziarsky
Os Koziarsky
 
Debian packaging howto
Debian packaging howtoDebian packaging howto
Debian packaging howto
 
Beginning with Composer - Dependency manager in php
Beginning with Composer  - Dependency manager in php Beginning with Composer  - Dependency manager in php
Beginning with Composer - Dependency manager in php
 
openSUSE tools on Debian
openSUSE tools on DebianopenSUSE tools on Debian
openSUSE tools on Debian
 
平行化你的工作 part1
平行化你的工作 part1平行化你的工作 part1
平行化你的工作 part1
 
Programming
ProgrammingProgramming
Programming
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
 
Debugging Python with gdb
Debugging Python with gdbDebugging Python with gdb
Debugging Python with gdb
 
Transcode star
Transcode starTranscode star
Transcode star
 
Internet Archive at Open Video Conference 2009
Internet Archive at Open Video Conference 2009Internet Archive at Open Video Conference 2009
Internet Archive at Open Video Conference 2009
 
Pablo 9r multimedia
Pablo 9r multimediaPablo 9r multimedia
Pablo 9r multimedia
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
 
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesWebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differences
 
Open Source Softwares
Open Source SoftwaresOpen Source Softwares
Open Source Softwares
 
How to write patches for Vim
How to write patches for VimHow to write patches for Vim
How to write patches for Vim
 
DNF FUDCon Pune 2015
DNF FUDCon Pune 2015DNF FUDCon Pune 2015
DNF FUDCon Pune 2015
 

Similaire à FFmpeg - the universal multimedia toolkit

Adobe AIR. NativeProcess. FFMPEG. Awesome.
Adobe AIR. NativeProcess. FFMPEG. Awesome.Adobe AIR. NativeProcess. FFMPEG. Awesome.
Adobe AIR. NativeProcess. FFMPEG. Awesome.Joseph Labrecque
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011camp_drupal_ua
 
Developing FirefoxOS
Developing FirefoxOSDeveloping FirefoxOS
Developing FirefoxOSFred Lin
 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldSkills Matter
 
Graphical libraries
Graphical librariesGraphical libraries
Graphical librariesguestbd40369
 
Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008smancke
 
IPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishIPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishBruno Cornec
 
Fos sintro pres-dav
Fos sintro pres-davFos sintro pres-dav
Fos sintro pres-davParin Sharma
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
 
LCA 2014 project-builder.org presentation
LCA 2014 project-builder.org presentationLCA 2014 project-builder.org presentation
LCA 2014 project-builder.org presentationBruno Cornec
 
Open Developer Platform: What Is It and Why Should I Care? Maurizio Pillitu
Open Developer Platform: What Is It and Why Should I Care? Maurizio PillituOpen Developer Platform: What Is It and Why Should I Care? Maurizio Pillitu
Open Developer Platform: What Is It and Why Should I Care? Maurizio PillituSymphony Software Foundation
 
A Tour of Open Source on the Mainframe
A Tour of Open Source on the MainframeA Tour of Open Source on the Mainframe
A Tour of Open Source on the MainframeAll Things Open
 
stackconf 2022: It’s Time to Debloat the Cloud with Unikraft
stackconf 2022: It’s Time to Debloat the Cloud with Unikraftstackconf 2022: It’s Time to Debloat the Cloud with Unikraft
stackconf 2022: It’s Time to Debloat the Cloud with UnikraftNETWAYS
 

Similaire à FFmpeg - the universal multimedia toolkit (20)

Libavfilter
LibavfilterLibavfilter
Libavfilter
 
Fedora Modularity
Fedora ModularityFedora Modularity
Fedora Modularity
 
Adobe AIR. NativeProcess. FFMPEG. Awesome.
Adobe AIR. NativeProcess. FFMPEG. Awesome.Adobe AIR. NativeProcess. FFMPEG. Awesome.
Adobe AIR. NativeProcess. FFMPEG. Awesome.
 
libdash 2.0
libdash 2.0libdash 2.0
libdash 2.0
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
 
Foss Presentation
Foss PresentationFoss Presentation
Foss Presentation
 
Developing FirefoxOS
Developing FirefoxOSDeveloping FirefoxOS
Developing FirefoxOS
 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source world
 
Graphical libraries
Graphical librariesGraphical libraries
Graphical libraries
 
Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008
 
IPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishIPMI is dead, Long live Redfish
IPMI is dead, Long live Redfish
 
Fos sintro pres-dav
Fos sintro pres-davFos sintro pres-dav
Fos sintro pres-dav
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
 
LCA 2014 project-builder.org presentation
LCA 2014 project-builder.org presentationLCA 2014 project-builder.org presentation
LCA 2014 project-builder.org presentation
 
Open Developer Platform: What Is It and Why Should I Care? Maurizio Pillitu
Open Developer Platform: What Is It and Why Should I Care? Maurizio PillituOpen Developer Platform: What Is It and Why Should I Care? Maurizio Pillitu
Open Developer Platform: What Is It and Why Should I Care? Maurizio Pillitu
 
BitTorrent on iOS
BitTorrent on iOSBitTorrent on iOS
BitTorrent on iOS
 
Main Slide
Main SlideMain Slide
Main Slide
 
A Tour of Open Source on the Mainframe
A Tour of Open Source on the MainframeA Tour of Open Source on the Mainframe
A Tour of Open Source on the Mainframe
 
The Parrot VM
The Parrot VMThe Parrot VM
The Parrot VM
 
stackconf 2022: It’s Time to Debloat the Cloud with Unikraft
stackconf 2022: It’s Time to Debloat the Cloud with Unikraftstackconf 2022: It’s Time to Debloat the Cloud with Unikraft
stackconf 2022: It’s Time to Debloat the Cloud with Unikraft
 

Plus de Stefano 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
 
FFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleFFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleStefano 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
 

Plus de Stefano Sabatini (9)

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
 
FFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universaleFFmpeg - lo strumento multimediale universale
FFmpeg - lo strumento multimediale universale
 
Introduzione al software libero
Introduzione al software liberoIntroduzione al software libero
Introduzione al software libero
 
Flash e software libero
Flash e software liberoFlash e software libero
Flash e software libero
 
Multimedia con GNU/Linux
Multimedia con GNU/LinuxMultimedia con GNU/Linux
Multimedia con GNU/Linux
 
Multimedia con FFmpeg
Multimedia con FFmpegMultimedia con FFmpeg
Multimedia con FFmpeg
 
Ekiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/LinuxEkiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/Linux
 

FFmpeg - the universal multimedia toolkit

  • 1. Introduction Resources Appendix FFmpeg - the universal multimedia toolkit Stefano Sabatini mailto:stefasab@gmail.com Video Vortex #9 Video Vortex #9 - 1 March, 2013 1 / 13
  • 2. Description Introduction Resources Appendix multiplatform software project (Linux, Mac, Windows, Android, etc...) Comprises several command line tools: ffmpeg, ffplay, ffprobe, ffserver Comprises C libraries to handle multimedia at several levels Free Software / FLOSS: LGPL/GPL 2 / 13
  • 3. Objective Introduction Resources Provide universal and complete support to multimedia Appendix content access and processing. decoding/encoding muxing/demuxing streaming filtering metadata handling 3 / 13
  • 4. History Introduction 2000: Fabrice Bellard starts the project with the initial Resources aim to implement an MPEG encoding/decoding library. Appendix The resulting project is integrated as multimedia engine in MPlayer, which also hosts the project. 2003: Fabrice Bellard leaves the project, Michael Niedermayer acts as project maintainer since then. March 2009: release version 0.5, first official release January 2011: a group of discontented developers takes control over the FFmpeg web server and creates an alternative Git repo, a few months later a proper fork is created (Libav). 4 / 13
  • 5. Development model Source code is handled through Git, tickets (feature requests, bugs) handled by Trac Introduction Resources Patches are discussed and approved on mailing-list, Appendix and directly pushed or merged from external repos, trivial patches or hot fixes can be pushed directly with no review. Every contributor/maintainer reviews patches in his/her own area of expertise/interest, review is done on a best effort basis by a (hopefully) competent developer. Formal releases are delivered every 6 months or so. Custom testing environment (FATE) and samples archive used for automated testing around 10 core developers, 200/300 per-year total contributors 5 / 13
  • 6. What is used for Introduction audio / video low level conversions (libswscale, Resources Appendix libswresample - rescaling, image format conversion, audio conversion) decoding / encoding (libavcodec - more than 300 codecs) muxing / demuxing (libavformat) grabbing input devices (libavdevice) streaming (libavformat, RTSP, RTP, RTMP, ...) filtering (libavfilter) 6 / 13
  • 7. High level Features Introduction Resources Appendix written mostly in C/assembly provides an extensible framework modular/configurable relies on external libraries (e.g. libmp3lame, libx264, libvorbis, libspeex, frei0r, ...) when it makes sense 7 / 13
  • 8. Libavfilter Introduction Audio / Video filters Resources Appendix timestamps manipulation more than 100 filters, some wrapped libraries (opencv, frei0r filters) transmedia filtering (e.g. audio to video) subtitles video hardcoding through ass/subtitles filter command API (allow to send commands to various filters) future development: lua scripting, subtitles filtering 8 / 13
  • 9. FFmpeg-based projects Introduction Used by most (all?) web transcoding multimedia Resources Appendix back-ends: (e.g. used by Youtube according to this post: http://multimedia.cx/eggs/ googles-youtube-uses-ffmpeg/) MPlayer (libavcodec, libavformat) VLC (libavcodec, libavformat) GStreamer (libav/ffmpeg plugin) Chromium more: http://ffmpeg.org/projects.html 9 / 13
  • 10. Organization Introduction Resources Appendix No official organization backing the project. Donations are collected through SPI (Software in the Public Interest) since June 2012. Partecipated to several editions of Google Summer of Code (2006, 2007, 2008, 2009, 2010, 2011) and ESA Summer of Code in Space (2011, 2012) Crowd funding would be nice at some point 10 / 13
  • 11. Summary Introduction Resources Appendix free universal multimedia engine flexible, powerful -> complex integrated into large number of FLOSS multimedia projects huge community of developers / users 11 / 13
  • 12. Resources Introduction Resources Appendix FFmpeg project web site: http://www.ffmpeg.org FFmpeg wiki: https://ffmpeg.org/trac/ffmpeg/wiki Mike Melanson multimedia wiki http://wiki.multimedia.cx/ 12 / 13
  • 13. License of this document Introduction Resources This document is released under Creative Commons Appendix License - Attribution-NonCommercial-ShareAlike 3.0: http://creativecommons.org/licenses/ by-nc-sa/3.0/) 13 / 13