====== libav ======
* [[faac]]
* [[mp4box]]
* [[x264]]
* [[Video Conversion]]
=== Examples ===
== Ask for help ==
The help file seems to be more up-to-date than the man. Also has a section for x264 encoding options.
avconv -h
== Simple x264 encoding, copy audio ==
avconv -i input.mp4 -c:v libx264 -c:a copy output.mp4
== Set frame size ==
avconv -i input.mp4 -c:v libx264 -s <640x480|hd480|hd720|hd1080> -c:a copy output.mp4
== Set aspect ratio ==
avconv -i input.mp4 -c:v libx264 -aspect <16:9|4:3> -c:a copy output.mp4
== x264 encoding, set CRF ==
avconv -i input.mp4 -c:v libx264 -crf 20 -c:a copy output.mp4
== x264 encoding, set CRF ==
avconv -i input.mp4 -c:v libx264 -crf 20 -c:a copy output.mp4
== x264 encoding, set to baseline video profile ==
avconv -i input.mp4 -c:v libx264 -profile:v baseline output.mp4
=== Video Sizes ===
avconv -i input.mp4 -s hd1080 output.mp4
* hd480 (854x480)
* hd720 (1280x720)
* hd1080 (1920x1080)
* vga (640x480)
* qvga (320x240)
* qqvga (160x120)
=== Aspect Ratios ===
avconv -i input.mp4 -s hd480 -aspect 16:9 output.mp4
* 4:3
* 16:9
* 1.3333
* 1.7777
== Metadata ==
MP4 files generated by libav are not, by default, setup for streaming over HTTP. The reason for this is that part of the metadata is located at the end of the file. When that happens, the client needs to download the entire video before playback.
qt-faststart (libav) will fix that.
qt-faststart input.mp4 output.mp4
Alternatively, you can use the python wrapper script qtfaststart, which has more features.
qtfaststart input.mp4 output.mp4
To copy metadata when encoding a file:
avconv -i source.mp3 -map_metadata 0 output.m4a
=== libx264 encoding ===
* [[x264]]
* [[http://mewiki.project357.com/wiki/X264_Settings|x264 Settings]]
* [[http://mewiki.project357.com/wiki/X264_Encoding_Suggestions|x264 Encoding Suggestions]]
== Encoding Raw Video ==
If you want to use x264 to encode the video, it's simple to use libav to re-encode the original source to raw video, and then encode using x264, then remux using libav again. YUVMPEG2 is a simple format to use that contains frame data so that you don't need to pass anything to x264.
If you need your video resized, use libav, since x264 does not support that feature.
An example:
avconv -i input.mp4 -s hd480 -an input.y4m
avconv -i input.mp4 -vn -c copy input.aac
x264 -o input.264 input.y4m
avconv -i input.264 -i input.aac -c copy output.mp4
== Presets ==
Use ''-preset'' to set the x264 preset.
avconv -i video.mpg -c:v libx264 -preset medium x264.mp4
== Profiles ==
Main profile, 3.1 requires at least 720×480@80.0fps (?)
=== Gotchas ===
== Lowering bitrate of AAC ==
On one sample, libav had difficulty creating a new AAC container from a source AAC file when lowering the bitrate (say, 256k to 96k). Playback with MPlayer would squelch and terminate quickly. The solution was to convert it to an MP4 container.
avconv -i input.aac -ab 96k output.aac.mp4
== Preset speeds ==
The ''veryslow'' preset provides hiqh quality encodes at the cost of encoding speed, but the tradeoff seems negligible. Using the ''placebo'' preset, however, will dramatically increase the amount of encoding time, measured in hours.
== MP3 encoding ==
Sometimes libav will have issues encoding MP3s, where the length is incorrectly read in some players. The workaround is to decode the MP3 to a PCM file, and then reencode it using lame directly.
avconv -i audio.mp3 audio.wav
lame audio.wav
Lame will encode at 128k by default.