X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Fffmpeg-doc.texi;h=8910dc679aa75a17199ed40fb87f242f55af8c44;hb=3c88ea24761efda7d1c7886119c618e1f66cb1c9;hp=8489a8382a67f75c6d31fa58f01edb8731116a77;hpb=9fcee5853de3642dfa0798e39a506219db98dd4e;p=ffmpeg diff --git a/doc/ffmpeg-doc.texi b/doc/ffmpeg-doc.texi index 8489a8382a6..8910dc679aa 100644 --- a/doc/ffmpeg-doc.texi +++ b/doc/ffmpeg-doc.texi @@ -109,7 +109,7 @@ stream, in the order of the definition of output streams. * You can transcode decrypted VOBs @example -ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi +ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi @end example This is a typical DVD ripping example; the input is a VOB file, the @@ -139,7 +139,7 @@ ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{ If no input file is given, audio/video grabbing is done. As a general rule, options are applied to the next specified -file. For example, if you give the @option{-b 64} option, it sets the video +file. For example, if you give the @option{-b 64k} option, it sets the video bitrate of the next file. The format option may be needed for raw input files. @@ -190,6 +190,12 @@ Set the copyright. @item -comment string Set the comment. +@item -track number +Set the track. + +@item -year number +Set the year. + @item -target type Specify target file type ("vcd", "svcd", "dvd", "dv", "pal-vcd", "ntsc-svcd", ... ). All the format options (bitrate, codecs, @@ -206,9 +212,6 @@ they do not conflict with the standard, as in: ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg @end example -@item -hq -Activate high quality settings. - @item -itsoffset offset Set the input time offset in seconds. @code{[-]hh:mm:ss[.xxx]} syntax is also supported. @@ -223,7 +226,7 @@ streams are delayed by 'offset' seconds. @table @option @item -b bitrate -Set the video bitrate in kbit/s (default = 200 kb/s). +Set the video bitrate in bit/s (default = 200 kb/s). @item -r fps Set frame rate (default = 25). @item -s size @@ -266,13 +269,13 @@ blue (default = 000000 (black)). @item -vn Disable video recording. @item -bt tolerance -Set video bitrate tolerance (in kbit/s). +Set video bitrate tolerance (in bit/s). @item -maxrate bitrate -Set max video bitrate tolerance (in kbit/s). +Set max video bitrate tolerance (in bit/s). @item -minrate bitrate -Set min video bitrate tolerance (in kbit/s). +Set min video bitrate tolerance (in bit/s). @item -bufsize size -Set rate control buffer size (in kbit). +Set rate control buffer size (in bits). @item -vcodec codec Force video codec to @var{codec}. Use the @code{copy} special value to tell that the raw codec data must be copied as is. @@ -298,17 +301,32 @@ Set the group of pictures size. @item -intra Use only intra frames. @item -qscale q -Use fixed video quantiser scale (VBR). +Use fixed video quantizer scale (VBR). @item -qmin q -minimum video quantiser scale (VBR) +minimum video quantizer scale (VBR) @item -qmax q -maximum video quantiser scale (VBR) +maximum video quantizer scale (VBR) @item -qdiff q -maximum difference between the quantiser scales (VBR) +maximum difference between the quantizer scales (VBR) @item -qblur blur -video quantiser scale blur (VBR) +video quantizer scale blur (VBR) @item -qcomp compression -video quantiser scale compression (VBR) +video quantizer scale compression (VBR) + +@item -lmin lambda +minimum video lagrange factor (VBR) +@item -lmax lambda +max video lagrange factor (VBR) +@item -mblmin lambda +minimum macroblock quantizer scale (VBR) +@item -mblmax lambda +maximum macroblock quantizer scale (VBR) + +These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units, +but you may use the QP2LAMBDA constant to easily convert from 'q' units: +@example +ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext +@end example @item -rc_init_cplx complexity initial complexity for single pass encoding @@ -435,7 +453,7 @@ Enable Unlimited Motion Vector (h263+) @item -deinterlace Deinterlace pictures. -@item -interlace +@item -ilme Force interlacing support in encoder (MPEG-2 and MPEG-4 only). Use this option if your input file is interlaced and you want to keep the interlaced format for minimum losses. @@ -464,6 +482,18 @@ Disable audio recording. @item -acodec codec Force audio codec to @var{codec}. Use the @code{copy} special value to specify that the raw codec data must be copied as is. +@item -newaudio +Add a new audio track to the output file. If you want to specify parameters, +do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..). + +Mapping will be done automatically, if the number of output streams is equal to +the number of input streams, else it will pick the first one that matches. You +can override the mapping using @code{-map} as usual. + +Example: +@example +ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384 test.mpg -acodec mp2 -ab 192 -newaudio +@end example @end table @section Audio/Video grab options @@ -484,8 +514,10 @@ Set audio device (e.g. @file{/dev/dsp}). @section Advanced options @table @option -@item -map file:stream -Set input stream mapping. +@item -map input stream id[:input stream id] +Set stream mapping from input streams to output streams. +Just enumerate the input streams in the order you want them in the output. +[input stream id] sets the (input) stream to sync against. @item -debug Print specific debug info. @item -benchmark @@ -504,6 +536,16 @@ streams. This option is used for automatic FFserver testing. @item -loop_output number_of_times Repeatedly loop output for formats that support looping such as animated GIF (0 will loop the output infinitely). +@item -vsync parameter +Video sync method. Video will be stretched/squeezed to match the timestamps, +it is done by duplicating and dropping frames. With -map you can select from +which stream the timestamps should be taken. You can leave either video or +audio unchanged and sync the remaining stream(s) to the unchanged one. +@item -async samples_per_second +Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps, +the parameter is the maximum samples per second by which the audio is changed. +-async 1 is a special case where only the start of the audio stream is corrected +without any later correction. @end table @node FFmpeg formula evaluator @@ -603,7 +645,7 @@ the Linux player does not seem to be very fast, so it can miss frames. An example is: @example -ffmpeg -g 3 -r 3 -t 10 -b 50 -s qcif -f rv10 /tmp/b.rm +ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm @end example @item The parameter 'q' which is displayed while encoding is the current @@ -704,7 +746,14 @@ library: @tab Multimedia format used by the Creature Shock game. @item Smacker @tab @tab X @tab Multimedia format used by many games. -@item GXF @tab @tab X +@item GXF @tab X @tab X +@tab General eXchange Format SMPTE 360M, used by Thomson Grass Valley playout servers. +@item CIN @tab @tab X +@tab Multimedia format used by Delphine Software games. +@item MXF @tab @tab X +@tab Material eXchange Format SMPTE 377M, used by D-Cinema, broadcast industry. +@item SEQ @tab @tab X +@tab Tiertex .seq files used in the DOS CDROM version of the game Flashback. @end multitable @code{X} means that encoding (resp. decoding) is supported. @@ -723,6 +772,8 @@ following image formats are supported: @item .Y.U.V @tab X @tab X @tab one raw file per component @item animated GIF @tab X @tab X @tab Only uncompressed GIFs are generated. @item PNG @tab X @tab X @tab 2 bit and 4 bit/pixel not supported yet. +@item Targa @tab @tab X @tab Targa (.TGA) image format. +@item TIFF @tab @tab X @tab Only 24 bit/pixel images are supported. @item SGI @tab X @tab X @tab SGI RGB image format @end multitable @@ -734,10 +785,10 @@ following image formats are supported: @item Supported Codec @tab Encoding @tab Decoding @tab Comments @item MPEG-1 video @tab X @tab X @item MPEG-2 video @tab X @tab X -@item MPEG-4 @tab X @tab X @tab also known as DivX4/5 +@item MPEG-4 @tab X @tab X @item MSMPEG4 V1 @tab X @tab X @item MSMPEG4 V2 @tab X @tab X -@item MSMPEG4 V3 @tab X @tab X @tab also known as DivX3 +@item MSMPEG4 V3 @tab X @tab X @item WMV7 @tab X @tab X @item WMV8 @tab X @tab X @tab not completely working @item H.261 @tab X @tab X @@ -760,6 +811,8 @@ following image formats are supported: @item Sorenson Video 1 @tab X @tab X @tab fourcc: SVQ1 @item Sorenson Video 3 @tab @tab X @tab fourcc: SVQ3 @item On2 VP3 @tab @tab X @tab still experimental +@item On2 VP5 @tab @tab X @tab fourcc: VP50 +@item On2 VP6 @tab @tab X @tab fourcc: VP62 @item Theora @tab @tab X @tab still experimental @item Intel Indeo 3 @tab @tab X @item FLV @tab X @tab X @tab Sorenson H.263 used in Flash @@ -803,14 +856,13 @@ following image formats are supported: @item Smacker Video @tab @tab X @tab Video encoding used in Smacker. @item RTjpeg @tab @tab X @tab Video encoding used in NuppelVideo files. @item KMVC @tab @tab X @tab Codec used in Worms games. +@item VMware Video @tab @tab X @tab Codec used in videos captured by VMware. +@item Cin Video @tab @tab X @tab Codec used in Delphine Software games. +@item Tiertex Seq Video @tab @tab X @tab Codec used in DOS CDROM FlashBack game. @end multitable @code{X} means that encoding (resp. decoding) is supported. -See @url{http://mplayerhq.hu/~michael/codec-features.html} to -get a precise comparison of the FFmpeg MPEG-4 codec compared to -other implementations. - @section Audio Codecs @multitable @columnfractions .4 .1 .1 .1 .7 @@ -879,6 +931,10 @@ other implementations. @item DSP Group TrueSpeech @tab @tab X @item True Audio (TTA) @tab @tab X @item Smacker Audio @tab @tab X +@item WavPack Audio @tab @tab X +@item Cin Audio @tab @tab X +@tab Codec used in Delphine Software games. +@item Intel Music Coder @tab @tab X @end multitable @code{X} means that encoding (resp. decoding) is supported. @@ -1084,6 +1140,60 @@ MinGW tools). Then you can easily test FFmpeg with Wine (@url{http://www.winehq.com/}). +@subsection Compilation under Cygwin + +Cygwin works very much like Unix. + +Just install your Cygwin with all the "Base" packages, plus the +following "Devel" ones: +@example +binutils, gcc-core, make, subversion +@end example + +Do not install binutils-20060709-1 (they are buggy on shared builds); +use binutils-20050610-1 instead. + +Then run + +@example +./configure --enable-static --disable-shared +@end example + +to make a static build or + +@example +./configure --enable-shared --disable-static +@end example + +to build shared libraries. + +If you want to build FFmpeg with additional libraries, download Cygwin +"Devel" packages for Ogg and Vorbis from any Cygwin packages repository +and/or SDL, xvid, faac, faad2 packages from Cygwin Ports, +(@url{http://cygwinports.dotsrc.org/}). + +@subsection Crosscompilation for Windows under Cygwin + +With Cygwin you can create Windows binaries that don't need the cygwin1.dll. + +Just install your Cygwin as explained before, plus these additional +"Devel" packages: +@example +gcc-mingw-core, mingw-runtime, mingw-zlib +@end example + +and add some special flags to your configure invocation. + +For a static build run +@example +./configure --enable-mingw32 --enable-memalign-hack --enable-static --disable-shared --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin +@end example + +and for a build with shared libraries +@example +./configure --enable-mingw32 --enable-memalign-hack --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin +@end example + @section Mac OS X @section BeOS @@ -1109,7 +1219,7 @@ valid results, then crashes. @chapter Developers Guide @section API -@itemize +@itemize @bullet @item libavcodec is the library containing the codecs (both encoding and decoding). Look at @file{libavcodec/apiexample.c} to see how to use it. @@ -1214,7 +1324,6 @@ int myfunc(int my_parameter) fprintf and printf are forbidden in libavformat and libavcodec, please use av_log() instead. -@node Development Policy @section Development Policy @enumerate @@ -1271,11 +1380,11 @@ please use av_log() instead. answer to ffmpeg-devel (or wherever you got the patch from) saying that you applied the patch. @item - Do NOT commit to code actively maintained by others without permission. Send - a patch to ffmpeg-devel instead. If noone awnsers within a reasonable time - (12h for build failure and security fixes, 3 days for all other small changes - 1 week for big patches) then commit your patch if you think its ok - also note, the maintainer can simply ask for more time to review! + Do NOT commit to code actively maintained by others without permission. + Send a patch to ffmpeg-devel instead. If noone answers within a reasonable + timeframe (12h for build failures and security fixes, 3 days small changes, + 1 week for big patches) then commit your patch if you think it's OK. + Also note, the maintainer can simply ask for more time to review! @item Subscribe to the ffmpeg-cvslog mailing list. The diffs of all commits are sent there and reviewed by all the other developers. Bugs and possible @@ -1294,9 +1403,9 @@ please use av_log() instead. parts (libavutil, libavcodec, libavformat) you are changing. You need to change the version integer and the version string. Incrementing the first component means no backward compatibility to - previous versions (e.g. removal of a function). + previous versions (e.g. removal of a function from the public API). Incrementing the second component means backward compatible change - (e.g. addition of a function). + (e.g. addition of a function to the public API). Incrementing the third component means a noteworthy binary compatible change (e.g. encoder bug fix that matters for the decoder). @item @@ -1311,10 +1420,6 @@ We think our rules are not too hard. If you have comments, contact us. Note, these rules are mostly borrowed from the MPlayer project. -@subsection Renaming/moving files or content of files - You CANNOT do that. Post a request for such a change to the mailing list - Do NOT remove & readd a file - it will kill the changelog!!!! - @section Submitting patches First, (@pxref{Coding Rules}) above if you didn't yet.