FFmpeg is often called the Swiss Army knife of video transcoding/streaming. It is one of the most popular multimedia frameworks out there, which is free, open-source, and cross-platform. FFmpeg is used by many popular and important applications and services, such as YouTube, iTunes, and VLC.
FFmpeg is often called the Swiss Army knife of video transcoding/streaming. It is one of the most popular multimedia frameworks out there, which is free, open-source, and cross-platform. FFmpeg is used by many popular and important applications and services, such as YouTube, iTunes, and VLC.
For its support of a wide range of codecs and containers, FFmpeg is the most commonly used tool for transcoding/converting audio/video from one format to another. It has a huge collection of filters that can be combined to manipulate and transform media in many different ways.
This course aims to be your comprehensive guide into the world of FFmpeg. The sections of this course are carefully planned to make it very easy to get started with FFmpeg in a short time. The lectures are organized with diagrams and hands-on examples, so that you can master the core concepts of FFmpeg in order to build complex media manipulation pipelines with efficiency.
By the end of this course, you will have a clear understanding about how FFmpeg works and how to put FFmpeg commands together to perform media processing tasks like transcoding, streaming, and other workflows.
Prerequisites
There are no prerequisites for this course. No prior knowledge of video, transcoding, or FFmpeg is needed. All you need is a working terminal where you can practice the commands yourself.
Objectives
Get a good overview of FFmpeg and its applications.
Set up FFmpeg on popular operating systems.
Inspect any media with ffprobe to extract valuable information.
Play audio/video with ffplay from the command line.
Learn the basics of audio/video, codecs, and containers.
Understand what happens during transcoding.
Have a crystal clear understanding of FFmpeg architecture and internal pipeline.
Construct complex filter graphs to manipulate media.
Learn about different inputs, outputs, and stream selection.
Understand factors for choosing a codec.
Encode audio/video using various codecs with FFmpeg.
Learn and apply rate control techniques and additional details for H.264 encoding.
Understand how media streaming works
Learn about popular streaming protocols including
Perform common video manipulation tasks by constructing filter graphs with FFmpeg.
Separate, mix, and manipulate audio with FFmpeg audio filters.
What is NOT covered in this course (yet)
Building FFmpeg from source code - this is not covered
Using FFmpeg libraries separately from your code - this is not covered. Only command-line examples are shown.
It is nearly impossible to discuss all the details of all codecs, containers, and filters. So only a few common ones are discussed, so that you can apply the same concepts for others.
Who this course is for
Anyone who wants to know about and work with audio/video, streaming, and FFmpeg
Developers/engineers working with audio/video (or even image) in any way
System integrators or administrators dealing with multimedia and streaming
Take a look at the course outline for examples of what FFmpeg can be used for. If you have a similar requirement and would like to learn the tricks along with a bunch of other cool stuff, this course is for you.
Money-back guarantee
If you are not satisfied with the course for some reason, I offer a 30-day money-back guarantee.
Instructor
My name is Andaleeb (Syed Andaleeb Roomy). I have been working as a software engineer professionally for more than 14 years. My experience includes diverse domains and complex software systems, including video transcoding, broadcast asset management workflows, VoIP, SaaS, AWS, cloud, microservices, and network communication solutions. I have been using FFmpeg to build transcoding pipelines for supporting many different media asset management workflows including search, transcription, proxy and editing.
Brief discussion about what is covered in this section.
Discussion about FFmpeg and its applications, libraries and tools.
Discuss FFmpeg builds.
Demo of setting up FFmpeg on macOS, Ubuntu, and Windows.
How to use ffprobe to extract valuable information about audio/video
Examples of using ffplay as a simple media player to preview audio/video from command-line
Demo of using the overlay filter to put image/video on top of another media, for example as watermark/picture-in-picture.
Revise basic concepts and building blocks of image, audio and video
Explain codecs and container formats with examples.
Discussion to explain what is meant by transcoding and the other operations that can happen during transcoding.
Basic transcoding flow in FFmpeg
Demuxing and muxing containers
Decoding and encoding with codecs
Filters in the flow
Brief discussion about the supported protocols, devices and formats, with a few use cases.
Different syntaxes for selecting a stream and mapping a stream to output.
Demo with command-line examples.
Explaining what filters are, how to specify options for filters, how to use labels to refer to inputs and outputs of filters, and how to form a filter chain.
Discuss the details of building complex filter graphs with examples and diagrams.
Understand factors for choosing a codec.
Encode audio/video using various codecs with FFmpeg.
Learn and apply rate control techniques and additional details for H.264 encoding.
What is streaming, and what is not
Ingest and delivery
Qualities of a great streaming experience
Instant start, random seek, adapt to changing conditions
Demo: different streaming experiences to illustrate the concepts
Communication protocols
RTMP, HTTP, SRT
Popularly used protocols for ingest and distribution
Demo: produce and consume RTMP, SRT and HTTP streams with FFmpeg
Benefits of single-file media
Structure of MP4 / MOV
Position of the MOOV atom
Demo: playback experience with combinations of seekable/non-seekable servers and fast-started/non-fast-started media
Demo: check atom positions with FFmpeg
Demo: fast-starting with FFmpeg
The problem with single-quality media explained with graphs and demo
Adaptive streaming with multiple variants
Graphs and demos showing adaptation based on bandwidth and resolution
Segmented media
History of HLS and DASH
Proprietary vs standard
Common characteristics
Browsers, codecs, and containers
Manifests
Demo: sample files of a multi-bitrate HLS and DASH stream
Frame types - I, P, B
GOP structures
Segment independence and duration
Encoding efficiency vs switching
Codecs
Containers - TS vs fMP4
HLS vs DASH
HLS + DASH with common media segments
Demo and explanation of FFmpeg commands generating various combinations of adaptive streams.
HLS with TS segments (audio and video together)
HLS with TS segments (audio and video separate)
HLS with fragmented MP4 segments
DASH with fragmented MP4 segments
HLS and DASH with common fMP4 segments
Demo of cutting a shorter clip from a longer media.
Demo of stitching multiple clips together into a single clip.
Demo of generating thumbnails and poster frames
Demo of resizing a video, discussing aspect ratio issues and pad filter.
Demo of using the drawtext filter to show a text or timecode on top of a video, with tricks for styling and animating it.
Demo of extracting audio channels from a media.
Demo of mixing audio channels from multiple sources into combined output.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.