Ffmpeg2theora
ffmpeg2theora is a command line converter which can create Ogg Theora videofiles using most common videoformats (mpg, dv, etc).[1] The converted video files are typically larger in file size than the original and the quality is typically worse.
Contents |
[edit] Usage
ffmpeg2theora 0.28 - Xiph.Org libtheora 1.1 20090822 (Thusnelda)
Usage: ffmpeg2theora [options] input
General output options:
-o, --output alternative output filename
--no-skeleton disables ogg skeleton metadata output
--skeleton-3 outputs Skeleton Version 3, without keyframe indexes
-s, --starttime start encoding at this time (in sec.)
-e, --endtime end encoding at this time (in sec.)
-p, --preset encode file with preset.
Right now there is preview, pro and videobin. Run
'ffmpeg2theora -p info' for more informations
Video output options:
-v, --videoquality [0 to 10] encoding quality for video (default: 6)
use higher values for better quality
-V, --videobitrate encoding bitrate for video (kb/s)
--soft-target Use a large reservoir and treat the rate
as a soft target; rate control is less
strict but resulting quality is usually
higher/smoother overall. Soft target also
allows an optional -v setting to specify
a minimum allowed quality.
--two-pass Compress input using two-pass rate control
This option requires that the input to the
to the encoder is seekable and performs
both passes automatically.
--first-pass <filename> Perform first-pass of a two-pass rate
controlled encoding, saving pass data to
<filename> for a later second pass
--second-pass <filename> Perform second-pass of a two-pass rate
controlled encoding, reading first-pass
data from <filename>. The first pass
data must come from a first encoding pass
using identical input video to work
properly.
--optimize optimize video output filesize (slower)
(same as speedlevel 0)
--speedlevel encoding is faster with higher values
the cost is quality and bandwidth (default 1)
available values depend on the version of libtheora
your version supports speedlevels 0 to 2
-x, --width scale to given width (in pixels)
-y, --height scale to given height (in pixels)
--max_size scale output frame to be within box of
given size, height optional (%d[x%d], i.e. 640x480)
--aspect define frame aspect ratio: i.e. 4:3 or 16:9
--pixel-aspect define pixel aspect ratio: i.e. 1:1 or 4:3,
overwrites frame aspect ratio
-F, --framerate output framerate e.g 25:2 or 16
--croptop, --cropbottom, --cropleft, --cropright
crop input by given pixels before resizing
-K, --keyint [1 to 2147483647] keyframe interval (default: 64)
-d --buf-delay <n> Buffer delay (in frames). Longer delays
allow smoother rate adaptation and provide
better overall quality, but require more
client side buffering and add latency. The
default value is the keyframe interval for
one-pass encoding (or somewhat larger if
--soft-target is used) and infinite for
two-pass encoding. (only works in bitrate mode)
--no-upscaling only scale video or resample audio if input is
bigger than provided parameters
--resize-method <method> Use this method for rescaling the video
See --resize-method help for a list of available
resizing methods
Video transfer options:
--pp Video Postprocessing, denoise, deblock, deinterlacer
use --pp help for a list of available filters.
-C, --contrast [0.1 to 10.0] contrast correction (default: 1.0)
Note: lower values make the video darker.
-B, --brightness [-1.0 to 1.0] brightness correction (default: 0.0)
Note: lower values make the video darker.
-G, --gamma [0.1 to 10.0] gamma correction (default: 1.0)
Note: lower values make the video darker.
-Z, --saturation [0.1 to 10.0] saturation correction (default: 1.0)
Note: lower values make the video grey.
Audio output options:
-a, --audioquality [-2 to 10] encoding quality for audio (default: 1)
use higher values for better quality
-A, --audiobitrate [32 to 500] encoding bitrate for audio (kb/s)
-c, --channels set number of output channels
-H, --samplerate set output samplerate (in Hz)
--noaudio disable audio from input
--novideo disable video from input
Input options:
--deinterlace force deinterlace, otherwise only material
marked as interlaced will be deinterlaced
--no-deinterlace force deinterlace off
-f, --format specify input format
--inputfps fps override input fps
--audiostream id by default the first audio stream is selected,
use this to select another audio stream
--videostream id by default the first video stream is selected,
use this to select another video stream
--nosync do not use A/V sync from input container.
try this if you have issues with A/V sync
Subtitles options:
--subtitles file use subtitles from the given file (SubRip (.srt) format)
--subtitles-encoding encoding set encoding of the subtitles file
supported are all encodings supported by iconv (see iconv help for list)
--subtitles-language language set subtitles language (de, en_GB, etc)
--subtitles-category category set subtitles category (default "subtitles")
--subtitles-ignore-non-utf8 ignores any non UTF-8 sequence in UTF-8 text
--nosubtitles disables subtitles from input
(equivalent to --subtitles=none)
--subtitle-types=[all,text,spu,none] select what subtitle types to include from the
input video (default text)
Metadata options:
--artist Name of artist (director)
--title Title
--date Date
--location Location
--organization Name of organization (studio)
--copyright Copyright
--license License
--contact Contact link
--nometadata disables metadata from input
--no-oshash do not include oshash of source file(SOURCE_OSHASH)
Keyframe indexing options:
--index-interval <n> set minimum distance between indexed keyframes
to <n> ms (default: 2000)
--theora-index-reserve <n> reserve <n> bytes for theora keyframe index
--vorbis-index-reserve <n> reserve <n> bytes for vorbis keyframe index
--kate-index-reserve <n> reserve <n> bytes for kate keyframe index
Other options:
--nice n set niceness to n
-P, --pid fname write the process' id to a file
-h, --help this message
--info output json info about input file, use -o to save json to file
--frontend print status information in json, one json dict per line
Examples:
ffmpeg2theora videoclip.avi (will write output to videoclip.ogv)
ffmpeg2theora videoclip.avi --subtitles subtitles.srt (same, with subtitles)
cat something.dv | ffmpeg2theora -f dv -o output.ogv -
Encode a series of images:
ffmpeg2theora frame%06d.png -o output.ogv
Live streaming from V4L Device:
ffmpeg2theora --no-skeleton /dev/video0 -f video4linux \
--inputfps 15 -x 160 -y 128 -o - \
| oggfwd icast2server 8000 password /theora.ogv
(you might have to use video4linux2 depending on your hardware)
Live encoding from a DV camcorder (needs a fast machine):
dvgrab - | ffmpeg2theora -f dv -x 352 -y 288 -o output.ogv -
Live encoding and streaming to icecast server:
dvgrab --format raw - \
| ffmpeg2theora --no-skeleton -f dv -x 160 -y 128 -o /dev/stdout - \
| oggfwd icast2server 8000 password /theora.ogv
[edit] Usage tips
It should be mentioned that you can pipe multiple files. Example:
cat *.mpeg | \ ffmpeg2theora -f mpg --optimize -o /pub/local/video/GNU/stallman.ogg -
[edit] Performance
It must be mentioned that ffmpeg2theora is extremely slow and uses ages compared to encoding MPEG-4 ASP using mencoder and it's version of the Xvid codec.
You likely want to encode your flies using fmpeg2theora regardless if you prefer freedom over slavery simply because Ogg Theora is not subject to software patents (which Xvid isn't[2]).
It should also be mentioned that --optimize creates signifficantly smaller files (at the price of way longer encoding time).
[edit] Limitations
You can't set target size to get a output file which is exactly 350 MB or something like that.
[edit] File size by quality
The --audioquality and --videoquality have a huge impact on the resulting file size.
Am_I_Paranoid.avi is a huge music video file. The resolution is 450x360. It is encoded with ffodivx. It is 1 hour and 28 minutes long. Here is what happens when it is encoded using ffmpeg2theora:
- Original file size: 701636274 bytes
- --videoquality 9: 1526874517 bytes
- --videoquality 7: 878089489 bytes
- --videoquality 6: 684008965 bytes
- --videoquality 5: 533899719 bytes
Note that --videoquality 9 results in a file twice the size of the original file size. 6 results in a file which is about the same size. --audioquality 4 was used on all runs.
[edit] References
- ↑ Official Website: fmpeg2theora - A simple converter to create Ogg Theora files
- ↑ avidemux.org: Common myths
| HOWTO | Players | Rippers and Converters |
|
|
Audio (only) players: |
Video DVD rippers Video downloaders
Audio CD rippers
|