This is an old revision of the document!
Multimedia encoding
Windows
VirtualDub
Linux
Images
convert
size operations
- resize: scale image
convert in.png -resize 640x480 out.png
- crop: crop image
convert in.png -crop 640x480+10+10 out.png
- extent: add margins or crops
convert in.png -gravity center -extent 1420x1420 out.png convert in.png -extent 1420x1420-10-10 out.png
Annotate an image with text
Simple text:
convert in.png \ -pointsize 20 -fill red -draw 'text 10,30 "My text" ' \ out.png
Text with shadow:
convert in.png \ -gravity SouthEast \ -stroke '#000C' -strokewidth 2 -annotate 0 "My text" \ -stroke none -fill white -annotate 0 "My text" \ out.png
Append images
convert in1.png in2.png +append out.png # horizontally convert in1.png in2.png -append out.png # vertically
More complex:
convert im1.png -resize 640x480 ppm:- \ | convert im2.png - +append ppm:- \ | convert im3.png - -append final.png
Formats
- EPS to RGB:
convert -density 600x600 -flatten -depth 8 -colorspace RGB file.eps ppm:- | convert - file.png
Exif
exiftool
- restore exif Orientation tag: if you have photos captured with a device that sets the orientation tag, but you used a viewer that doesn't use this tag, and rotated the image with a software that doesn't update this tag, then the image is inconsistent and is not well displayed in exif-aware viewers. To reset the orientation tag, you can use the following command:
exiftool -overwrite_original -Orientation="Horizontal (normal)" <file>
Video
mencoder
(comes with mplayer).
http://gentoo-wiki.com/HOWTO_Mencoder_Introduction_Guide
General syntax:
mencoder \ <input data> \ <input options> \ <output options> \ <output data>
Input data and options
- Video files
mencoder \ <input_file_1> <input_file_2> ... \ <input options> \ <output options> \ <output data>
- Image files
mencoder \ "mf://img.o.*.PNG" \ -mf fps=25 \ <output options> \ <output data>
- Image files from stdin (only works with jpg images, but you can use convert to pipe to mencoder)
mencoder \ - \ -demuxer lavf -lavfdopts format=mjpeg \ <output options> \ <output data>
- Video filters:
-vf yadif=0
: deinterlace-vf scale=640:480
: scale video-vf pp=?
: post processing subfilters
Output data and options
Specify the video codec with -ovc
option, and audio codec with -oac
option. copy
is possible with both.
- xvid
mencoder \ <input data> \ <input options> \ -ovc xvid -xvidencopts bitrate=800:quant_type=mpeg:gmc:chroma_opt:vhq=4:bvhq=1:trellis \ -o <output_file>
xvid encode options:
bitrate=<value>
: constant bitrate, in kbsfixed_quant=<1-31>
: constant quantization (quality), lower is bettertrellis
: speeds up encoding
- h264
mencoder \ <input data> \ <input options> \ -ovc x264 -x264encopts bitrate=800 \ -o <output_file>
x264 encode options:
bitrate=<value>
: constant bitrate, in kbscrf=<1.0-50.0>
: constant quality, lower is better
- WebM
mencoder \ <input data> \ <input options> \ -ovc lavc -ffourcc VP80 -of lavf -lavfopts format=webm -lavcopts vcodec=libvpx:vqscale=22.0 \ -o <output_file>
lavc options:
vbitrate=<value>
: constant bitrate, in kbsvqscale=<1.0-31.0>
: constant quantization (quality), lower is better
- mp3
mencoder \ <input data> \ <input options> \ -oac mp3lame -lameopts abr:br=128 \ -o <output_file>
Other operations
- cut the file (here from 10'00“ to 10'30”):
mencoder -ss 10:00 -endpos 30 -ovc copy -oac copy movie.avi -o submovie.avi
AviDemux
A GUI easier to use, like VirtualDub for Windows.
Audio
mp3
⇒ lame
To encode from wav to mp3 in “speech” quality :
lame -V2 --vbr-new -q0 --lowpass 10 -s 22.05 -b32 file.wav file.mp3
ogg
(using vorbis-tools package)
⇒ oggenc
To encode from wav to ogg in “speech” quality :
oggenc -b 32 --downmix --resample 22050 file.wav -o file.ogg
Converting from ogg to ogg in “speech” quality :
oggdec -b 16 -R file.ogg -o - | oggenc -r -B 16 -C 1 -b 32 --resample 22050 - -o file_recomp.ogg
sox
play,record,process
ffmpeg
- extract sound track from video:
ffmpeg -i video.avi sound.mp3