FFMPEG Book

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

FFmpeg Basics

Multimedia handling with a


fast audio and video encoder

Frantisek Korbel

Links
Book homepage: http://ffmpeg.tv
Facebook: http://ffmpeg.tv/facebook
Twitter: http://twitter.com/FFmpeg
YouTube: http://youtube.com/FFmpegTv

Brief Contents
Introduction
1. FFmpeg Fundamentals
2. Displaying Help and Features
3. Bit Rate, Frame Rate and File Size
4. Resizing and Scaling Video
5. Cropping Video
6. Padding Video
7. Flipping and Rotating Video
8. Blur, Sharpen and Other Denoising
9. Overlay - Picture in Picture
10. Adding Text on Video
11. Conversion Between Formats
12. Time Operations
13. Mathematical Functions
14. Metadata and Subtitles
15. Image Processing
16. Digital Audio
17. Presets for Codecs
18. Interlaced Video
19. FFmpeg Components and Projects
20. Microphone and Webcam
21. Batch Files
22. Color Corrections
23. Advanced Techniques
24. Video on Web
25. Debugging and Tests
Glossary
About the author

12
15
29
60
64
69
73
77
81
87
93
99
108
113
117
122
128
138
142
147
154
159
164
179
193
200
207
216

Table of Contents
Introduction ......................................................................................................12
Welcome................................................................................................................................12
First steps..............................................................................................................................12
Dedicated website.................................................................................................................12
Conventions ..........................................................................................................................13
Your feedback is important ................................................................................................14

1. FFmpeg Fundamentals ................................................................................15


FFmpeg introduction...........................................................................................................15
Developers of FFmpeg.........................................................................................................16
Participation in FFmpeg development ..............................................................................16
FFmpeg download ...............................................................................................................17
Command line syntax ..........................................................................................................17
Windows Command Prompt and its alternatives.............................................................18
Path setting ...........................................................................................................................19
Renaming to shortened form ..............................................................................................20
Displaying output preview ..................................................................................................21
Preview with FFplay media player ...................................................................................21
Preview with SDL output device ......................................................................................21
SI prefixes available in FFmpeg .........................................................................................21
Transcoding with ffmpeg ....................................................................................................22
Filters, filterchains and filtergraphs ..................................................................................23
Selection of media streams..................................................................................................25
Lavfi virtual device ..............................................................................................................27
Color names..........................................................................................................................27

2. Displaying Help and Features .....................................................................29


Text help in FFmpeg tools...................................................................................................29
Available bitstream filters...................................................................................................29
Available codecs ...................................................................................................................30
Available decoders ...............................................................................................................36
Available encoders ...............................................................................................................43
Available filters ....................................................................................................................46
Available formats.................................................................................................................48
Available layouts of audio channels ...................................................................................52
FFmpeg license.....................................................................................................................54
Available pixel formats........................................................................................................54
Available protocols ..............................................................................................................57
Available audio sample formats .........................................................................................58
FFmpeg version....................................................................................................................58
Using MORE command for output formatting ................................................................59
Redirecting output to file ....................................................................................................59

3. Bit Rate, Frame Rate and File Size .............................................................60


Frame (frequency) rate introduction .................................................................................60
Frame rate setting................................................................................................................61
Using -r option ..................................................................................................................61
Using fps filter...................................................................................................................61
Predefined values for frame rate........................................................................................61
Bit (data) rate introduction.................................................................................................62

Table of Contents

Setting bit rate ......................................................................................................................62


Constant bit rate (CBR) setting ..........................................................................................62
Setting maximum size of output file ...................................................................................63
File size calculation ..............................................................................................................63

4. Resizing and Scaling Video..........................................................................64


Resizing video .......................................................................................................................64
Predefined video frame sizes...............................................................................................64
Considerations when resizing - Nyquist sampling theorem .............................................66
Special enlarging filter.........................................................................................................67
Advanced scaling..................................................................................................................67
Scaling video proportionately to input...............................................................................68
Scaling to predefined width or height ................................................................................68

5. Cropping Video ............................................................................................69


Cropping basics....................................................................................................................69
Cropping frame center ........................................................................................................70
Automatic detection of cropping area................................................................................71
Cropping of timer ................................................................................................................71

6. Padding Video...............................................................................................73
Padding basics ......................................................................................................................73
Padding videos from 4:3 to 16:9 .........................................................................................75
Padding videos from 16:9 to 4:3 .........................................................................................75
Padding from and to various aspect ratios ........................................................................76
Pillarboxing - adding boxes horizontally ..........................................................................76
Letterboxing - adding boxes vertically..............................................................................76

7. Flipping and Rotating Video .......................................................................77


Horizontal flip ......................................................................................................................77
Vertical flip ...........................................................................................................................77
Introduction to rotating.......................................................................................................78
Rotation by 90 degrees counterclockwise and flip vertically ...........................................79
Rotation by 90 degrees clockwise .......................................................................................79
Rotation by 90 degrees counterclockwise ..........................................................................80
Rotation by 90 degrees clockwise and flip vertically ........................................................80

8. Blur, Sharpen and Other Denoising ...........................................................81


Blur video effect ...................................................................................................................81
Sharpen video .......................................................................................................................83
Noise reduction with denoise3d ..........................................................................................84
Noise reduction with hqdn3d ..............................................................................................85
Noise reduction with nr option ...........................................................................................86

9. Overlay - Picture in Picture.........................................................................87


Introduction to overlay........................................................................................................87
Command structure for overlay .........................................................................................87
Logo in one of corners .........................................................................................................88
Logo in top-left corner ......................................................................................................89
Logo in top-right corner ....................................................................................................89
Logo in bottom-right corner ..............................................................................................89
4

Table of Contents

Logo in bottom-left corner ................................................................................................90


Logo shows in specified moment ........................................................................................90
Video with timer ..................................................................................................................91
Other overlay examples.......................................................................................................92

10. Adding Text on Video ................................................................................93


Introduction to adding text on video..................................................................................93
Text positioning....................................................................................................................95
Horizontal location setting ................................................................................................95
Vertical location setting ....................................................................................................95
Font size and color setting...................................................................................................96
Dynamic text.........................................................................................................................97
Horizontal text movement.................................................................................................97
Vertical text movement .....................................................................................................98

11. Conversion Between Formats....................................................................99


Introduction to media formats ...........................................................................................99
File formats .......................................................................................................................99
Media containers ...............................................................................................................99
Transcoding and conversion...............................................................................................99
Introduction to codecs .........................................................................................................100
Overwriting same named output files................................................................................101
Generic options for conversion...........................................................................................102
Private options for conversion............................................................................................105
MPEG-1 video encoder.....................................................................................................105
MPEG-2 video encoder.....................................................................................................106
MPEG-4 video encoder.....................................................................................................106
libvpx video encoder .........................................................................................................106
AC-3 audio encoder ..........................................................................................................107
Simplified encoding of VCD, SVCD, DVD, DV and DV50 ..............................................107

12. Time Operations .........................................................................................108


Duration of audio and video ..............................................................................................108
Setting with -t option.........................................................................................................108
Setting with number of frames ..........................................................................................108
Setting delay from start.......................................................................................................108
Extracting specific part from media file............................................................................108
Delay between input streams ..............................................................................................109
One input file.....................................................................................................................109
Two or more input files.....................................................................................................109
Limit for processing time ....................................................................................................109
Shortest stream determines encoding time........................................................................109
Timestamp and time bases..................................................................................................110
Encoder timebase setting ....................................................................................................110
Audio and video speed modifications.................................................................................111
Video speed change...........................................................................................................111
Audio speed change ..........................................................................................................112
Synchronizing audio data with timestamps ......................................................................112

13. Mathematical Functions ............................................................................113


5

Table of Contents

Expressions that can use mathematical functions.............................................................113


Built-in arithmetic operators ..............................................................................................114
Built-in constants .................................................................................................................114
Table of built-in mathematical functions...........................................................................114
Examples of using functions................................................................................................116

14. Metadata and Subtitles ..............................................................................117


Introduction to metadata ....................................................................................................117
Creating metadata ...............................................................................................................117
Saving and loading metadata to/from the file ...................................................................119
Deletion of metadata ............................................................................................................119
Introduction to subtitles ......................................................................................................119
Subtitles encoded directly to video .....................................................................................121

15. Image Processing ........................................................................................122


Supported image formats ....................................................................................................122
Creating images....................................................................................................................123
Screenshots from videos....................................................................................................123
Animated GIFs from videos ..............................................................................................123
Images from FFmpeg video sources..................................................................................123
Video conversion to images ..............................................................................................124
Resizing, cropping and padding images.............................................................................125
Flipping, rotating and overlaying images ..........................................................................126
Conversion between image types........................................................................................127
Creating video from images ................................................................................................127
Video from one image .......................................................................................................127
Video from many images ..................................................................................................127

16. Digital Audio...............................................................................................128


Introduction to digital audio ...............................................................................................128
Audio quantization and sampling......................................................................................128
Audio file formats ................................................................................................................130
Sound synthesis ....................................................................................................................130
Stereo and more complex sounds .......................................................................................132
Binaural tones for stress reduction ....................................................................................132
Sound volume settings .........................................................................................................133
Multiple sounds mixed to one output .................................................................................133
Downmixing stereo to mono, surround to stereo ..............................................................134
Simple audio analyzer..........................................................................................................135
Adjusting audio for listening with headphones.................................................................136
Audio modifications with -map_channel option ...............................................................136
Switching audio channels in stereo input ..........................................................................137
Splitting stereo sound to 2 separate streams......................................................................137
Muting one channel from stereo input ..............................................................................137
Merging 2 audio streams to 1 multichannel stream .........................................................137
Audio stream forwarding with buffer order control ........................................................137

17. Presets for Codecs ......................................................................................138


Introduction to preset files ..................................................................................................138
Examples of preset files .......................................................................................................139
6

Table of Contents

Preset file libvpx-1080p.ffpreset.......................................................................................139


Preset file libvpx-1080p50_60.ffpreset.............................................................................139
Preset file libvpx-360p.ffpreset.........................................................................................140
Preset file libvpx-720p.ffpreset.........................................................................................140
Preset file libvpx-720p50_60.ffpreset...............................................................................141

18. Interlaced Video..........................................................................................142


NTSC, PAL and SECAM TV standards ...........................................................................142
Interlaced frame type setting..............................................................................................143
Field order change of interlaced video ..............................................................................143
Deinterlacing ........................................................................................................................144
yadif filter..........................................................................................................................144
Option -deinterlace............................................................................................................144
Deinterlacing filters from MPlayer project .......................................................................144
Pullup filter........................................................................................................................145
Interlaced video and digital television ...............................................................................145

19. FFmpeg Components and Projects ...........................................................147


FFplay introduction.............................................................................................................147
Key and mouse controls during playback .........................................................................148
FFplay show modes...........................................................................................................148
FFprobe introduction ..........................................................................................................149
FFserver introduction .........................................................................................................150
FFmpeg software libraries ..................................................................................................150
libavcodec .........................................................................................................................150
libavdevice ........................................................................................................................150
libavfilter ...........................................................................................................................151
libavformat ........................................................................................................................151
libavutil .............................................................................................................................151
libpostproc.........................................................................................................................151
libswresample....................................................................................................................151
libswscale ..........................................................................................................................151
Projects using FFmpeg components...................................................................................152
HTML5 support in Google Chrome..................................................................................152
Videoprocessing on YouTube and Facebook ...................................................................152
Multimedia frameworks utilizing FFmpeg .......................................................................152
Video editors .....................................................................................................................152
Audio editors.....................................................................................................................152
Media players using FFmpeg ............................................................................................153

20. Microphone and Webcam..........................................................................154


Introduction to input devices..............................................................................................154
List of available cameras and microphones ......................................................................154
Available options for webcam ..........................................................................................155
Displaying and recording webcam input ...........................................................................156
Using two webcams..............................................................................................................156
Recording sound and sending it to loudspeakers..............................................................158

21. Batch Files ...................................................................................................159


Advantages of batch files.....................................................................................................159
7

Table of Contents

Batch file commands............................................................................................................159


Typical usage of batch files .................................................................................................161
Tone generator .....................................................................................................................161
Creating Jingle Bells ............................................................................................................162
Simplified conversion ..........................................................................................................163

22. Color Corrections .......................................................................................164


Video modifications with lookup table...............................................................................164
Conversion to monochrome (black-and-white) image ......................................................164
Introduction to color spaces................................................................................................165
YUV color space and its derivatives...................................................................................166
Luma (luminance) and chroma (chrominance) .................................................................166
Pixel formats.........................................................................................................................166
RGB pixel format modifications.........................................................................................167
Color balance.....................................................................................................................168
Modifications of YUV pixel format ....................................................................................169
Brightness correction.........................................................................................................170
Hue and saturation setting ..................................................................................................171
Comparison in 2 windows ...................................................................................................172
2 windows compared horizontally ....................................................................................172
2 windows compared vertically.........................................................................................173
Space between windows....................................................................................................173
Modified version first........................................................................................................174
2 modified versions without input.....................................................................................174
Comparison in 3 windows ...................................................................................................175
3 windows compared horizontally ....................................................................................175
3 windows compared vertically.........................................................................................175
Input in the middle window...............................................................................................176
Brightness correction in 2 and 3 windows .........................................................................176
Comparison in 4 windows ...................................................................................................178

23. Advanced Techniques ................................................................................179


Joining audio and video files...............................................................................................179
Concatenation with shell command ..................................................................................179
Concatenation with concat protocol..................................................................................180
Concatenation with concat filter .......................................................................................180
Other types of joining........................................................................................................180
Removing logo ......................................................................................................................181
delogo filter .......................................................................................................................181
Fixing of shaking video parts ..............................................................................................182
Adding color box to video....................................................................................................183
Number of frames detection................................................................................................183
Detection of ads, section transitions or corrupted encoding ............................................184
Detection with blackframe filter .......................................................................................185
Selecting only specified frames to output ..........................................................................186
Scaling input by changing aspect ratios.............................................................................187
Screen grabbing ...................................................................................................................188
Detailed video frame information ......................................................................................188
8

Table of Contents

Audio frequency spectrum..................................................................................................189


Audio waves visualization ...................................................................................................190
Voice synthesis .....................................................................................................................190
Saving output to multiple formats at once ........................................................................191
Additional media input to filtergraph................................................................................192

24. Video on Web ..............................................................................................193


HTML5 support on main browsers ...................................................................................193
Adding audio with HTML5 ................................................................................................194
Adding video with HTML5.................................................................................................195
Adding video for Flash Player ............................................................................................196
Video sharing websites ........................................................................................................196
Videoprocessing on webserver............................................................................................198
Monetizing video uploads....................................................................................................199

25. Debugging and Tests ..................................................................................200


debug, debug_ts and fdebug options ..................................................................................200
Flags for error detection .....................................................................................................202
Logging level setting ............................................................................................................202
Timebase configuration test................................................................................................203
Testing encoding features....................................................................................................203
Test patterns.........................................................................................................................205
RGB test pattern................................................................................................................205
Color pattern with scrolling gradient and timestamp........................................................205
SMPTE bars pattern ..........................................................................................................205
Simple packet dumping or with payload (hexadecimally)...............................................205
CPU time used and memory consumption ........................................................................206

Glossary .............................................................................................................207
About the author...............................................................................................216

Introduction
Welcome
Dear reader,
welcome to the book that will try to make you familiar with many interesting features of the FFmpeg
project. Its quality indicates several FFmpeg users:
Facebook, the largest social network, handles videos from users with ffmpeg tool
Google Chrome, popular web browser, uses FFmpeg libraries for HTML5 audio and video support
YouTube, the biggest video sharing website, converts uploaded videos with ffmpeg.
The books focus is to explain the basic video editing like resizing, cropping, padding, denoising, overlay,
etc., but included are instructions for more complex processing and experiments.
The chapter Digital Audio describes how to convert and create audio, advanced sound processing is in the
chapters Batch Files and Advanced Techniques.

First steps
The first step is to download FFmpeg binaries, if not already done, the details are in the first chapter or on
the dedicated website. Many Linux distributions already have FFmpeg tools installed or advanced users can
compile their own binaries.
The first chapter contains basic information about FFmpeg project and how to simplify the work with its
tools. If already familiar with these data or if it looks too technical for the start, you can move to the second
chapter and start to enter various ffmpeg commands.
Please note, that many commands in this book are simplified to illustrate the currently explained feature
and some parameters are omitted, especially in conversions, the details are in the chapter Conversion
Between Formats.

Dedicated website
For the book was created a special website on ffmpeg.tv that contains:
book index, table of contents and description of the book
examples from the book in the video format, videos are located in the particular chapters
user forum to discuss the book topics and various ideas
list of found errors (errata)
contact form
40 last articles from 6 FFmpeg mailing lists (constantly updated)

Introduction

Conventions
Text that should be entered on the command line is printed in a serif proportional typeface, for example:
ffmpeg -i input.mpg -q 1 output.avi
The part of the command that should be replaced with a particular text is printed in italics, for example:
ffmpeg -i input -vf mp=denoise3d -s vga output
The console output is printed in a sans serif proportional typeface:
Muxer avi [AVI (Audio Video Interleaved)]:
Common extensions: avi.
Mime type: video/x-msvideo.
Default video codec: mpeg4.
Default audio codec: mp3.
The blue caret ^ indicates that the command is too long to be printed on one line in the book and continues
on another, but on computer it remains a 1-line command, for example:
ffplay -f lavfi -i color=c=white ^
-vf drawtext=fontfile=/Windows/Fonts/arial.ttf:text=Welcome
Please note a space between the word white and ^ in the previous example, the space indicates that there
will be space also on the command line. This form of notation is required in the batch files that will be
explained in the chapter Batch Files.

13

Introduction

For a better orientation the book contains a colored differentiation of FFmpeg elements like the filters,
devices, sources and other items.
Colored differentiation of devices, filters, etc. related to audio and video
audio only
video only
both audio and video

Your feedback is important


Many options and parameters of FFmpeg tools cannot be described in the book with about 200 pages and
your opinion what can be improved and included in the next edition is welcome.
Please before sending a query by e-mail, visit www.ffmpeg.tv and search on the forum or FAQ, it will
prevent repeated questions and in some cases it will provide instant help.
Thank you very much and best wishes.

12

You might also like