0% found this document useful (0 votes)
50 views9 pages

Ffmpeg Arch Guide

This document provides an overview and instructions for installing and using FFmpeg, an open-source multimedia framework. It describes how to encode video from one format to another, such as converting VOB files to MP4. It also provides examples of single-pass and two-pass encoding for various codecs and quality presets. Additional sections cover extracting audio, adjusting volume, adding subtitles, and recording from a webcam.

Uploaded by

baflorem
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views9 pages

Ffmpeg Arch Guide

This document provides an overview and instructions for installing and using FFmpeg, an open-source multimedia framework. It describes how to encode video from one format to another, such as converting VOB files to MP4. It also provides examples of single-pass and two-pass encoding for various codecs and quality presets. Additional sections cover extracting audio, adjusting volume, adding subtitles, and recording from a webcam.

Uploaded by

baflorem
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

FFmpeg

Summary

This article attempts to walk users through the installation, usage and configuration
of FFmpeg.

Contents
• 1 Introduction
• 2 Package installation
• 3 Encoding examples
• 3.1 VOB to any container
• 3.2 Single-pass x264 (lossless)
• 3.3 Single-pass MPEG-2 (near lossless)
• 3.4 Single-pass x264 (very high-quality)
• 3.5 Two-pass x264 (very high-quality)
• 3.6 Two-pass MPEG-4 (very high-quality)
• 3.6.1 Determining bitrates with fixed output file sizes
• 4 Preset files
• 4.1 Creating presets
• 4.2 Using preset files
• 4.2.1 libavcodec-vhq.ffpreset
• 4.2.1.1 Two-pass MPEG-4 (very high quality)
• 5 Volume gain
• 6 Extracting audio
• 6.1 Stripping audio
• 7 Adding subtitles
• 8 Recording webcam
• 9 Package removal
• 10 Additional resources

1
Introduction
FFmpeg is command-line driven collection of tools which enables the decoding,
encoding, conversion and playback of most audio and video streams.

Note: Encoding to Xvid is best accomplished by way of MEncoder as FFmpeg


currently does not support all available Xvid-specific options (i.e. -xvidopts).

Package installation
FFmpeg is part of the official Arch Linux [extra] repository.

# pacman -S ffmpeg

Encoding examples
• Examples using syntax and recommended options from extra/ffmpeg
20110622-1

VOB to any container

• Concatenate the desired VOB files into a single VOB file:

$ cat VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOB >


Transformers.3.Dark.of.the.Moon.VOB

• Or concatenate and then pipe the output VOB to FFmpeg:

$ cat VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOB >


Transformers.3.Dark.of.the.Moon.VOB | ffmpeg -i ...

Single-pass x264 (lossless)

• crf=0 is the recommended option for x264 lossless encoding.

• crf=0 produces higher quality visuals versus qp=0 at the same filesize:

2
ffmpeg -i 13.Assassins.VOB -acodec copy -vcodec libx264 -preset placebo
-crf 0 -x264opts frameref=15 13.Assassins.mkv

• qp=0 does not depend on lookahead and can result in a faster encoding
times:

ffmpeg -i 13.Assassins.VOB -acodec copy -vcodec libx264 -preset placebo


-x264opts qp=0:frameref=15 13.Assassins.mkv

• Drawbacks for both lossless methods include relatively slow encoding speed
and no reasonable way to estimate output filesize.

Single-pass MPEG-2 (near lossless)

• Allow FFmpeg to automatically set DVD standardized parameters:

• Encode to DVD MPEG-2 at a frame rate of 30 frames/second:

ffmpeg -i 13.Assassins.VOB -target ntsc-dvd -sameq 13.Assassins.mpg

• Encode to DVD MPEG-2 at a frame rate of 24 frames/second:

ffmpeg -i 13.Assassins.VOB -target film-dvd -sameq 13.Assassins.mpg

Single-pass x264 (very high-quality)

• threads=0 = automatically detect and select the appropriate number of


threads:

ffmpeg -i Transformers.3.Dark.of.the.Moon.VOB -acodec libmp3lame -ab 256k


-vcodec libx264 -preset veryslow -crf 15 -threads 0 -x264opts
frameref=15:fast_pskip=0 Transformers.3.Dark.of.the.Moon.mkv

• tune option should be set to match the type and content of the of media
being encoded:

ffmpeg -i 13.Assassins.VOB -acodec libmp3lame -ab 256k -vcodec libx264


-preset veryslow -tune film -crf 15 -threads 0 -x264opts
frameref=15:fast_pskip=0 13.Assassins.mkv

• libmp3lame is generally recommended over libfaac encoding at all bitrates.

3
Two-pass x264 (very high-quality)

• Audio deactivated as only video statistics are recorded during the first of
multiple pass runs:

ffmpeg -i Transformers.3.Dark.of.the.Moon.VOB -an -vcodec libx264 -pass 1


-preset veryslow -threads 0 -b 3000k -x264opts frameref=15:fast_pskip=0 -f
rawvideo -y /dev/null

• Container format is automatically detected and muxed into from the output
file extenstion (.mkv):

ffmpeg -i Transformers.3.Dark.of.the.Moon.VOB -acodec libvo-aacenc -ab 256k


-ar 96000 -vcodec libx264 -pass 2 -preset veryslow -threads 0 -b 3000k
-x264opts frameref=15:fast_pskip=0 Transformers.3.Dark.of.the.Moon.mkv

Two-pass MPEG-4 (very high-quality)

• Audio deactivated as only video statistics are logged during the first of
multiple pass runs:

ffmpeg -i Transformers.3.Dark.of.the.Moon.VOB -an -vcodec mpeg4 -pass 1


-mbd 2 -trellis 2 -flags +cbp+mv0 -pre_dia_size 4 -dia_size 4 -precmp 4
-cmp 4 -subcmp 4 -preme 2 -qns 2 -b 3000k -f rawvideo -y /dev/null

• Container format is automatically detected and muxed into from the output
file extenstion (.avi):

ffmpeg -i Transformers.3.Dark.of.the.Moon.VOB -acodec copy -vcodec mpeg4


-vtag DX50 -pass 2 -mbd 2 -trellis 2 -flags +cbp+mv0 -pre_dia_size 4
-dia_size 4 -precmp 4 -cmp 4 -subcmp 4 -preme 2 -qns 2 -b 3000k
Transformers.3.Dark.of.the.Moon.avi

• Introducing threads=n>1 for -vcodec mpeg4 may skew the effects of


motion estimation and lead to reduced video quality and compression
efficiency.
• The two-pass MPEG-4 example above also supports output to the MP4
container (replace .avi with .mp4).

4
Determining bitrates with fixed output file sizes

• (Desired File Size in MB - Audio File Size in MB) x 8192 kb/MB / Length of
Media in Seconds (s) = Bitrate in kb/s

• (3900 MB - 275 MB) = 3625 MB x 8192 kb/MB / 8830 s = 3363 kb/s


required to achieve an approximate total output file size of 3900 MB

Preset files

Creating presets

• Populate ~/.ffmpeg with the default preset files:

$ cp -iR /usr/share/ffmpeg ~/.ffmpeg

• Create new and/or modify the default preset files:

File: ~/.ffmpeg/libavcodec-vhq.ffpreset

vtag=DX50
mbd=2
trellis=2
flags=+cbp+mv0
pre_dia_size=4
dia_size=4
precmp=4
cmp=4
subcmp=4
preme=2
qns=2

Using preset files

• Enable the -vpre option after declaring the desired -vcodec

libavcodec-vhq.ffpreset

• libavcodec = Name of the vcodec/acodec


• vhq = Name of specific preset to be called out

5
• ffpreset = FFmpeg preset filetype suffix

Two-pass MPEG-4 (very high quality)

• First pass of a multipass (bitrate) ratecontrol transcode:

ffmpeg -i 13.Assassins.2010.mpg -an -vcodec mpeg4 -pass 1 -vpre vhq -f


rawvideo -y /dev/null

• Ratecontrol based on the video statistics logged from the first pass:

ffmpeg -i 13.Assassins.2010.mpg -acodec libvorbis -aq 8 -ar 48000 -vcodec


mpeg4 -pass 2 -vpre vhq -b 3000k 13.Assassins.2010.mp4

• libvorbis quality settings (VBR)

• -aq 4 = 128 kb/s


• -aq 5 = 160 kb/s
• -aq 6 = 192 kb/s
• -aq 7 = 224 kb/s
• -aq 8 = 256 kb/s

• aoTuV is generally preferred over libvorbis provided by Xiph.Org and is


provided by libvorbis-aotuv in the AUR.

Volume gain
• Change the audio volume in multiples of 256 where 256 = 100% (normal)
volume. Additional values such as 400 are also valid options.

-vol 256 = 100%


-vol 512 = 200%
-vol 768 = 300%
-vol 1024 = 400%
-vol 2048 = 800%

• To double the volume (512 = 200%) of an MP3 file:

ffmpeg -i example.mp3 -vol 512 loud-example.mp3

• To quadruple the volume (1024 = 400%) of an Ogg file:

6
ffmpeg -i example.ogg -vol 1024 loud-example.ogg

• Note that gain metadata is only written to the output file. Unlike mp3gain or
ogggain, the source sound file is untouched.

Extracting audio
$ ffmpeg -i The.Kings.Speech.mpg
Input #0, avi, from 'The.Kings.Speech.2010.mpg':
Duration: 01:58:28.96, start: 0.000000, bitrate: 3000 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 720x480 [PAR 1:1 DAR
16:9], 29.97 tbr, 29.97 tbn, 29.97 tbc
Stream #0.1: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
Stream #0.2: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream #0.3: Audio: dts, 48000 Hz, 5.1 768 kb/s

• Extract the first (-map 0:1) AC-3 encoded audio stream exactly as it was
multiplexed into the file:

ffmpeg -i The.Kings.Speech.mpg -map 0:1 -acodec copy -vn


The.Kings.Speech.ac3

• Convert the third (-map 0:3) DTS audio stream to an AAC file with a bitrate
of 192 kb/s and a sampling rate of 96000 Hz:

ffmpeg -i The.Kings.Speech.mpg -map 0:3 -acodec libvo-aacenc -ab 192k -ar


96000 -vn The.Kings.Speech.aac

• -vn disables the processing of the video stream.

Stripping audio

1. Copy the first video stream (-map 0:0) along with the second AC-3 audio
stream (-map 0:2).
2. Convert the AC-3 audio stream to two-channel MP3 with a bitrate of 128 kb/s
and a sampling rate of 48000 Hz.

ffmpeg -i The.Kings.Speech.mpg -map 0:0 -map 0:2 -vcodec copy -acodec


libmp3lame -ab 128k -ar 48000 -ac 2 The.Kings.Speech.mkv

7
$ ffmpeg -i The.Kings.Speech.mkv
Input #0, avi, from 'The.Kings.Speech.2010.mpg':
Duration: 01:58:28.96, start: 0.000000, bitrate: 3000 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 720x480 [PAR 1:1 DAR
16:9], 29.97 tbr, 29.97 tbn, 29.97 tbc
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s

Note: Removing undesired audio streams allows for additional bits to be


allocated towards improving video quality.

Adding subtitles
FFmpeg does not currently support muxing subtitle files into existing streams. See
MEncoder for subtitle muxing support.

Recording webcam
With FFmpeg it is very easy to record a video from the webcam and including audio
sources from an additional microphone. This following example uses pulseaudio
with the alsa backend for the microphone and assumes that the webcam is
correctly recognised under /dev/video0.

$ ffmpeg -f alsa -i pulse -f video4linux2 -s 640x480 -i /dev/video0 out.mpg

Package removal
• pacman will not remove configuration files outside of the defaults that were
created during package installation. This includes user-created preset files.

Additional resources
• x264 Settings - MeWiki Documentation
• FFmpeg Documentation - Official Documentation
• Encoding with the x264 Codec - MEncoder Documentation
• H.264 eEcoding Guide - Avidemux Wiki

8
• Using FFmpeg - Linux How To Pages

Retrieved from "https://wiki.archlinux.org/index.php/FFmpeg"

Category: Audio/Video (English)

You might also like