The help file seems to be more up-to-date than the man. Also has a section for x264 encoding options.
avconv -h
avconv -i input.mp4 -c:v libx264 -c:a copy output.mp4
avconv -i input.mp4 -c:v libx264 -s <640x480|hd480|hd720|hd1080> -c:a copy output.mp4
avconv -i input.mp4 -c:v libx264 -aspect <16:9|4:3> -c:a copy output.mp4
avconv -i input.mp4 -c:v libx264 -crf 20 -c:a copy output.mp4
avconv -i input.mp4 -c:v libx264 -crf 20 -c:a copy output.mp4
avconv -i input.mp4 -c:v libx264 -profile:v baseline output.mp4
avconv -i input.mp4 -s hd1080 output.mp4
avconv -i input.mp4 -s hd480 -aspect 16:9 output.mp4
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
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
Use -preset
to set the x264 preset.
avconv -i video.mpg -c:v libx264 -preset medium x264.mp4
Main profile, 3.1 requires at least 720×[email protected] (?)
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
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.
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.