From eec8ec8a5c5a7272fb44d1e9ddc9fc3ef0d6dc50 Mon Sep 17 00:00:00 2001 From: gpoirier Date: Wed, 22 Jun 2005 09:39:27 +0000 Subject: Encoding guide featured by Richard Felker III, and updated by Jeff Clagg. Part of this guide is already in the XML docs. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15797 b3059339-0415-0410-9bf9-f77b7e298cf2 --- DOCS/tech/encoding-guide.txt | 819 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 819 insertions(+) create mode 100644 DOCS/tech/encoding-guide.txt (limited to 'DOCS/tech') diff --git a/DOCS/tech/encoding-guide.txt b/DOCS/tech/encoding-guide.txt new file mode 100644 index 0000000000..661d52812e --- /dev/null +++ b/DOCS/tech/encoding-guide.txt @@ -0,0 +1,819 @@ +Topics: + + +I. Preparing to encode + 1. Identifying source material and framerate + 2. Selecting the quality you want + 3. Constraints for efficient encoding + 4. Cropping and scaling + 5. Choosing resolution and bitrate + +II. Containers and codecs + 1. Where the movie will be played + 2. Constraints of DVD, SVCD, and VCD + 3. Limitations of AVI container + +III. Basic MEncoder usage + 1. Selecting codecs & format + 2. Selecting input file or device + 3. Loading video filters + 4. Notes on A/V sync + +IV. Encoding procedures + 1. Encoding progressive video + 2. Two-pass encoding + 3. Encoding interlaced video + 4. Deinterlacing + 5. Inverse telecine + 6. Capturing TV input + 7. Dealing with mixed-source content + 8. Low-quality & damaged sources + +V. Optimizing encoding quality + 1. Noise removal + 2. Pure quality-gain options + 3. Questionable-gain options + 4. Advanced MPEG-4 features + + + +I. Preparing to encode + +Before you even think about encoding a movie, you need to take several +preliminary steps to + + +I.1. Identifying source material and framerate + +The first and most important step before you encode should be +determining what type of content you're dealing with. If your source +material comes from DVD or broadcast/cable/satellite TV, it will be +stored in one of two formats: NTSC for North America and Japan, and +PAL for Europe, etc. But it's important to realize that this is just +the formatting for presentation on a television, and often does NOT +correspond to the original format of the movie. In order to produce a +suitable encode, you need to know the original format. Failure to take +this into account will result in ugly combing (interlacing) artifacts +in your encode, and will greatly reduce the quality/bitrate ratio of +the encoder! + +Here is a list of common types of source material, where you're likely +to find them, and their properties: + +Standard Film: Produced for theatrical display at 24fps. + +PAL video: Recorded with a PAL video camera at 50 fields per second. A +field consists of just the even or odd numbered lines of a frame. +Television was designed to refresh these in alternation as a cheap +form of analog compression. The human eye supposedly compensates for +this, but once you understand interlacing you'll learn to see it on TV +too and never enjoy TV again. Two fields do NOT make a complete frame, +because they are captured 1/50 of a second apart in time, and thus +they do not line up unless there is no motion. + +NTSC Video: Recorded with an NTSC video camera at 59.94 fields per +second, or 60 fields per second in the pre-color era. Otherwise +similar to PAL. + +Animation: Usually drawn at 24fps, but animation also comes in +mixed-framerate varieties. + +Computer Graphics (CG): Can be any framerate, but 24 and 30 fps are +the most frequently encountered in NTSC regions, and 25 fps in PAL +regions. + +Old Film: Various lower framerates. + +Movies consisting of frames are referred to as progressive, while +those consisting of independent fields are called interlaced, or +sometimes video, although this latter term is ambiguous. + +To further complicate matters, some movies will be a mix of several of +the above. + +The most important distinction to make between all of these formats is +that some are frame-based, while others are field-based. WHENEVER a +movie is prepared for display on television (including DVD), it is +converted to a field-based format. The various methods by which this +can be done are collectively referred to as "pulldown", of which the +infamous NTSC "3:2 telecine" is one variety. Unless the original +material was also field-based (and the same fieldrate), you are +getting the movie in a format other than the original. + +There are several common types of pulldown: + +PAL 2:2 pulldown: The nicest of them all. Each frame is shown for two +fields duration, by extracting the even and odd lines and showing them +in alternation. If the original material is 24fps, this process speeds +up the movie by 4%. + +PAL 2:2:2:2:2:2:2:2:2:2:2:3 pulldown: Every 12th frame is shown for +three fields duration, instead of just two. This avoids the 4% speedup +issue, but makes the process much more difficult to reverse. It is +usually seen in musical productions where adjusting the speed by 4% +would seriously damage the musical score. + +NTSC 3:2 telecine: Frames are shown alternatively for 3 fields or 2 +fields duration. This gives a fieldrate 5/2 times the original +framerate. The result is also slowed down very slightly from 60 fields +per second to 59.94 fields per second to maintain NTSC fieldrate. + +NTSC 2:2 pulldown: Used for showing 30fps material on NTSC. Nice, just +like 2:2 PAL pulldown. + +There are also methods for converting between NTSC and PAL video. Such +topics are beyond the scope of this guide. If you encounter such a +movie and want to encode it, your best bet is to find a copy in the +original format. NTSC/PAL conversion is highly destructive and cannot +be reversed cleanly, so your encode will greatly suffer if it is made +from a converted source. + +When video is stored on DVD, consecutive pairs of fields are grouped +as a frame, even though they are not intended to be shown at the same +moment in time. The MPEG2 standard used on DVD and digital TV provides +a way to encode the original progressive frames, and store the number +of fields for which each should be shown in the frame headers. If this +method has been used, the term "soft telecine" will often be used to +describe the movie, since the process only directs the DVD player to +apply pulldown to the movie rather than altering the movie itself. +This case is highly preferable since it can easily be reversed +(actually ignored) by the encoder, and since it preserves maximal +quality. However, many DVD and broadcast production studios do not use +proper encoding techniques, and instead produce movies with "hard +telecine", where fields are actually duplicated in the encoded MPEG2. + +The procedures for dealing with these cases will be covered later in +this guide. For now, we leave you with some guides to identifying +which type of material you're dealing with: + +NTSC regions: + +- If MPlayer prints that the framerate has changed to 23.976 when + watching your movie, and never changes back, it's almost certainly + 24fps content that has been "soft telecined". + +- If MPlayer shows the framerate switching back and forth between + 23.976 and 29.97, and you see "combing" at times, then there are + several possibilities. The 23.976 fps segments are almost certainly + 24fps progressive content, "soft telecined", but the 29.97 fps parts + could be either hard-telecined 24fps content or NTSC video content. + Use the same guidelines as the following two cases to determine + which. + +- If MPlayer never shows the framerate change, and every single frame + with motion appears combed, your movie is NTSC video at 59.94 fields + per second. + +- If MPlayer never shows the framerate change, and two frames out of + every five appear combed, your movie is "hard telecined" 24fps + content. + +PAL regions: + +- If you never see any combing, your movie is 2:2 pulldown. + +- If you see combing alternating in and out every half second, then + your movie is 2:2:2:2:2:2:2:2:2:2:2:3 pulldown. + +- If you always seem combing during motion, then your movie is PAL + video at 50 fields per second. + +Hint: MPlayer can slow down movie playback with the -speed option. Try +using -speed 0.2 to watch the movie very slowly and identify the +pattern, if you can't see it at full speed. + + +I.2. Selecting the quality you want + +It's possible to encode your movie at a wide range of qualities. With +modern video encoders and a bit of pre-codec compression (downscaling +and denoising), it's possible to achieve very good quality at 700 MB, +for a 90-110 minute widescreen movie. And all but the longest movies +can be encoded with near-perfect quality at 1400 MB. + +If you do not plan to store your movies on CD or other size-limited +media, and you want maximal quality at all costs, you can encode in +constant quantizer mode, which will not aim to meet a specific target +bitrate or filesize but instead use the maximal accuracy encoding for +all frames. This is not recommended in most cases, because you can +achieve significantly smaller file sizes without noticeable loss. +However, it may be desirable for the hardcore archivists out there. + + +I.4. Cropping and scaling + +Recall from the previous section that the final picture size you +encode should be a multiple of 16 (in both width and height). This can +be achieved by cropping, scaling, or a combination of both. + +When cropping, there are a few guidelines that must be followed to +avoid damaging your movie. The normal YUV format, 4:2:0, stores chroma +(color) information subsampled, i.e. chroma is only sampled half as +often in each direction as luma (intensity) information. Observe this +diagram, where L indicates luma sampling points and C chroma. + + L L L L L L L L + C C C C + L L L L L L L L + + L L L L L L L L + C C C C + L L L L L L L L + +As you can see, rows and columns of the image naturally come in pairs. +Thus your crop offsets and dimensions MUST be even numbers. If they +are not, the chroma will no longer line up correctly with the luma. In +theory, it's possible to crop with odd offsets, but it requires +resampling the chroma which is potentially a lossy operation and not +supported by the crop filter. + +Further, interlaced video is sampled as follows: + + TOP FIELD BOTTOM FIELD + + L L L L L L L L + C C C C + L L L L L L L L + + L L L L L L L L + C C C C + L L L L L L L L + + L L L L L L L L + C C C C + L L L L L L L L + + L L L L L L L L + C C C C + L L L L L L L L + +As you can see, the pattern does not repeat until after 4 lines. So +for interlaced video, your y-offset and height for cropping must be +multiples of 4. + +So how do you determine a crop rectangle to begin with? Sometimes you +can guess, but the cropdetect filter in MPlayer can make it easy. Run +MPlayer with -vf cropdetect and it will print out the crop settings to +remove the borders. You should let the movie run long enough that the +whole picture area is used, in order to get accurate crop values. +Then, test the values you get with MPlayer, using the command line +cropdetect printed, and adjust the rectangle as needed. The rectangle +filter can help by allowing you to interactively position the crop +rectangle over your movie. Remember to follow the above divisibility +guidelines so that you do not misalign the chroma planes. + +If you will be scaling your movie, it's usually best to crop only the +black borders and noise, then scale so that the resulting dimensions +are multiples of 16. This can slightly distort the aspect ratio of +your movie, but in practice the error cannot be seen. It's certainly +much less visible than the MPEG artifacts you will see from failing to +crop & scale well. + +In certain cases, scaling may be undesirable. Scaling in the vertical +direction is difficult with interlaced video, and if you wish to +preserve the interlacing, you should usually refrain from scaling. If +you will not be scaling but you still want to use multiple-of-16 +dimensions, you will have to overcrop. Do not undercrop, since black +borders are very bad for encoding! + + + + +I.5. Choosing resolution and bitrate + +If you will not be encoding in constant quantizer mode, you need to +select a bitrate. The concept of bitrate is quite simple. It's the +(average) number of bits that will be consumed to store your movie, +per second. Normally bitrate is measured in kilobits (1000 bits) per +second. The size of your movie on disk is the bitrate times the length +of the movie in time, plus a small amount of "overhead" (see the +section on codecs and containers). Other parameters such as scaling, +cropping, etc. will NOT alter the file size unless you change the +bitrate as well! + +Bitrate does NOT scale proportional to resolution. That is to say, a +320x240 file at 200 kbit/sec will not be the same quality as the same +movie at 640x480 and 800 kbit/sec! There are two reasons for this: + +1. Perceptual: You notice MPEG artifacts more if they're scaled up + bigger! Artifacts appear on the scale of blocks (8x8). Your eye + will not see errors in 4800 small blocks as easily as it sees + errors in 1200 large blocks (assuming you'll be scaling both to + fullscreen). + +2. Theoretical: When you scale down an image but still use the same + size (8x8) blocks for the frequency space transform, you move more + data to the high frequency bands. Roughly speaking, each pixel + contains more of the detail than it did before. So even though your + scaled-down picture contains 1/4 the information in the spacial + directions, it could still contain a large portion of the + information in the frequency domain (assuming that the high + frequencies were underutilized in the original 640x480 image). + +Past guides have recommended choosing a bitrate and resolution based +on a "bits per pixel" approach, but this is usually not valid due to +the above reasons. A better estimate seems to be that bitrates scale +proportional to the square root of resolution, so that 320x240 and 400 +kbit/sec would be comparable to 640x480 at 800 kbit/sec. However this +has not been verified with theoretical or empirical rigor. Further, +given that movies vary greatly with regard to noise, detail, degree of +motion, etc., it's futile to make general recommendations for bits per +length-of-diagonal (the analogue of bits per pixel, using the square +root). + +So far we have discussed the difficulty of choosing a bitrate and +resolution. + +................. + + + + + + + + + + +II. Containers and codecs + +II.1. Where the movie will be played + +Perhaps the most important factor to choosing the format in which you +will encode your movie is where you want to be able to play it. +Usually this involves a tradeoff between quality and features, since +the formats supported by the widest variety of players are also the +worst in regards to compression. + +If you want to be able to play your encode on standalone/set-top +players, your primary choices are DVD, VCD, and SVCD. There are also +extensions such as KVCD and XVCD which violate the standards but work +on many players and deliver higher quality. Modern players are +beginning to support MPEG-4 ("DivX") movies in AVI and perhaps other +containers as well, but these are often buggy and require you to +restrict your encodes to certain subsets of the full MPEG-4 +functionality. + +If you wish to be able to share your movies with Windows or Macintosh +users, without them having to install additional software, your +choices are very limited. The ancient MPEG-1 format with MP2 or PCM +audio is probably the only choice that is universally supported. +Interoperability with Windows/Mac also comes into play when deciding +how to encode and whether to scale to preserve aspect, since popular +media player applications for these systems do not honor the aspect +ratio encoding stored in MPEG-4 avi files. + + +II.2. Constraints of DVD, SVCD, and VCD + +Unfortunately, the DVD, SVCD, and VCD formats are subject to heavy +constraints. Only a small selection of encoded picture sizes & aspect +ratios are available. If your movie does not meet one of these, you +must scale and crop or add black borders (which are bad for quality!) +to make it compliant. + +Format Resolution V.Codec A.Codec FPS Aspect +NTSC DVD 720x480 MPEG-2 AC3,PCM 24,30 4:3,16:9 +NTSC DVD 352x240 * MPEG-1 AC3,PCM 24,30 4:3 +NTSC SVCD 480x480 MPEG-2 MP2 30 4:3 +NTSC VCD 352x240 MPEG-1 MP2 24,30 4:3 +PAL DVD 720x576 MPEG-2 MP2,AC3,PCM 25 4:3,16:9 +PAL DVD 352x288 * MPEG-1 MP2,AC3,PCM 25 4:3 +PAL SVCD 480x576 MPEG-2 MP2 25 4:3 +PAL VCD 352x288 MPEG-1 MP2 25 4:3 + +* These resolutions are rarely used in DVD because they are fairly low + quality. + +DVD, VCD, and SVCD also constrain you to relatively low GOP sizes. 18 is +supposed to be the largest allowed GOP size for 30 fps NTSCP material; +for 25 or 24 fps, the GOP size should be 15. + +VCD video is required to be CBR at 1152 kbps. This highly limiting +constraint also comes along with an extremly low vbv buffer size of +327 kilobits. SVCD allows varying video bitrates up to 2500 kbps, and +a somewhat less insane vbv buffer size of 917 kilobits is allowed. DVD +video bitrates may range anywhere up to 9800 kbps (though typical bitrates +are about half that), and the vbv buffer size is 1835 kilobits. + +Here is a list of fields in lavcopts that you may be required to change +in order to make usable video for VCD, SVCD, or DVD: + +acodec: mp2 for VCD, SVCD, or PAL DVD; ac3 is most commonly used for DVD. + PCM audio may also be used for DVD, but this is mostly a big + waste of space. Note that mp3 audio isn't spec-compliant for + any of these formats, but players often have no problem playing + it anyway. + +abitrate: 224 for VCD; user-selectable for DVD and SVCD, but commonly used + values range from 192 to 384 kbps. + +vcodec: mpeg1video for VCD; mpeg2video for SVCD; mpeg2video is usually + used for DVD but you may also use mpeg1video for CIF resolutions. + +keyint: 18 for 30fps material, or 15 for 25/24 fps material. Commercial + producers seem to prefer keyframe intervals of 12. + +vrc_buf_size: 327 for VCD, 917 for SVCD, and 1835 for DVD. + +vrc_minrate: 1152, for VCD. May be left alone for SVCD and DVD. + +vrc_maxrate: 1152 for VCD; 2500 for SVCD; 9800 for DVD. For SVCD and DVD, + you might wish to use lower values depending on your own + personal preferences and requirements. + +vbitrate: 1152 for vcd; up to 2500 for SVCD; up to 9800 for DVD. For the + latter two formats, vbitrate should be set based on personal + preference. For instance, if you insist on fitting 20 or so + hours on a DVD, you could use vbitrate=400. The resulting + video quality would probably be quite bad. If you are trying + to squeeze out the maximum possible quality on a DVD, use + vbitrate=9800, but be warned that this could constrain you to + less than an hour of video on a single-layer DVD. + +Here is a typical minimum set of lavcopts for encoding video for a VCD: + +-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\ +vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2 + +SVCD: + +-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\ +keyint=15:acodec=mp2 + +DVD: + +-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\ +vbitrate=5000:keyint=15:acodec=ac3 + +For higher quality encoding, you may also wish to add quality-enhancing +options to lavcopts, such as trell, mbd=2, and others. Note that qpel +and v4mv, while often useful with MPEG-4, are not usable in MPEG-1 or +MPEG-2. Also, if you are trying to make a very high quality DVD encode, +it may be useful to add dc=10 to lavcopts. Doing so may help reduce the +appearance of blocks in flat-colored areas. Putting it all together, +here is an example of a set of lavcopts for a higher quality DVD: + +-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\ +vbitrate=8000:keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:\ +predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10 + +If your movie has 2.35:1 aspect (most recent action movies), you will +have to add black borders or crop the movie down to 16:9 to make a DVD +or VCD. If you add black borders, try to align them at 16-pixel +boundaries in order to minimize the impact on encoding performance. +Thankfully DVD has sufficiently excessive bitrate that you do not have +to worry too much about encoding efficiency, but SVCD and VCD are +highly bitrate-starved and require effort to obtain acceptable +quality. + + + + + +II.3. Limitations of the AVI container + +Although it's the most widely-supported format after MPEG-1, AVI also +has some major drawbacks. Perhaps the most obvious is the overhead. +For each chunk of the AVI file, 24 bytes are wasted on headers and +index. This translates into a little over 5 MB per hour, or 1-2.5% +overhead for a 700 MB movie. This may not seem like much, but it could +mean the difference between being able to use 700 kbit/sec video or +714 kbit/sec, and every bit of quality counts. + +In addition to gross inefficiency, AVI also has the following major +limitations: + +1. Only fixed-fps content can be stored. This is particularly limiting + if the original material you want to encode is mixed content, for + example a mix of NTSC video and film material. Actually there are + hacks that can be used to store mixed-framerate content in AVI, but + they increase the (already huge) overhead fivefold or more so they + are not practical. + +2. Audio in AVI files must be either constant-bitrate (CBR) or + constant-framesize (i.e. all frames decode to the same number of + samples). Unfortunately, the most efficient codec, Vorbis, does not + meet either of these requirements. Therefore, if you plan to store + your movie in AVI, you'll have to use a less efficient codec such + as MP3 or AC3. + +With all of that said, MEncoder does not support variable-fps output +or Vorbis encoding. Therefore, you may not see these as limitations if +MEncoder is the only tool you will be using to produce your encodes. +However, it is possible to use MEncoder only for the video encoding, +and then use external tools to encode the audio and mux it into +another container format. + + + + + + + +III. Basic MEncoder usage + +III.1. Selecting codecs & format + +Audio and video codecs for encoding are selected with the -oac and +-ovc options, respectively. The following choices are available, +although some may not have been enabled at compiletime: + +Audio Codecs +mp3lame Encode VBR or CBR MP3 with LAME +lavc Use one of libavcodec's audio encoders +pcm Uncompressed PCM audio +copy Do not reencode, just copy compressed frames + +Video codecs +lavc Use one of libavcodec's video encoders +xvid XviD +raw Uncompressed video frames +copy Do not reencode, just copy compressed frames +frameno Used for 3-pass encoding (not recommended) + +Several other video codecs are available, but not recommended. The +lavc audio and video encoders have additional suboptions to select +which codec to use within lavc. The syntax is: + + -lavcopts acodec=audio_codec_name + -lavcopts vcodec=video_codec_name + +Your choices for lavc audio are mp2, ac3, and various adpcm formats +(low efficiency). For lavc video, you have many more choices: + +mpeg1video MPEG-1 video +mpeg2video MPEG-2 video +mpeg4 MPEG-4 video, standards-compliant +msmpeg4 Pre-standard MPEG-4 used by MS (aka DivX3) +msmpeg4v2 Pre-standard MPEG-4 used by MS (low quality) +msmpeg4v1 Pre-standard MPEG-4 used by MS (low quality) +wmv1 Windows Media Video, V1 (aka WMV7) +wmv2 Windows Media Video, V2 (aka WMV8) +dvvideo DV video (used by DV cameras) +mjpeg Motion JPEG +ljpeg Lossless JPEG +ffv1 Lossless FFmpeg video codec #1 (slow) +huffyuv A standard lossless codec + +...and lots more that aren't worth mentioning for most people. + + + +III.2. Selecting input file or device + +MEncoder can encode from files or directly from a DVD or VCD disc. +Simply include the filename on the command line to encode from a file, +or dvd://titlenumber or vcd://tracknumber to encode from a DVD title +or VCD track. If you have already copied a DVD to your hard drive and +wish to encode from the copy, you should still use the dvd:// syntax, +along with -dvd-device followed by the path to the copied DVD root. +The -dvd-device and -cdrom-device options can also be used to override +the paths to the device nodes for reading directly from disc, if the +defaults of /dev/dvd and /dev/cdrom do not work on your system. + +When encoding from DVD, it is often desirable to select a chapter or +range of chapters to encode. You can use the -chapter option for this +purpose. For example, -chapter 1-4 will only encode chapters 1 through +4 from the DVD. This is especially useful if you will be making a 1400 +MB encode targetted for two CDs, since you can ensure the split occurs +exactly at a chapter boundary rather than in the middle of a scene. + +If you have a supported TV capture card, you can also encode from the +TV-in device. Use tv://channelnumber as the filename, and -tv to +configure various capture settings. DVB input works similarly. + + +III.3. Loading video filters + +Learning how to use MEncoder's video filters is essential to producing +good encodes. All video processing is performed through the filters -- +cropping, scaling, color adjustment, noise removal, sharpening, +deinterlacing, telecine, inverse telecine, and deblocking, just to +name a few. Along with the vast number of supported input formats, the +variety of filters available in MEncoder is one of its main advantages +over other similar programs. + +Filters are loaded in a chain using the -vf option: + + -vf filter1=options,filter2=options,... + +Most filters take several numeric options separated by colons, but the +syntax for options varies from filter to filter, so read the man page +for details on the filters you wish to use. + +Filters operate on the video in the order they are loaded. For +example, the following chain: + + -vf crop=688:464:12:4,scale=640:464 + +will first crop the 688x464 region of the picture with upper-left +corner at (12,4), and then scale the result down to 640x464. + +Certain filters need to be loaded at or near the beginning of the +filter chain, in order to take advantage of information from the video +decoder that will be lost or invalidated by other filters. The +principal examples are pp (postprocessing, only when it is performing +deblock or dering operations), spp (another postprocessor to remove +MPEG artifacts), pullup (inverse telecine), and softpulldown (for +converting soft telecine to hard telecine). + +Advanced topics in filter chains and usage information for specific +filters will follow in chapters IV and V, as they are needed for the +topics covered. + + + +III.4. Notes on A/V sync + +MEncoder's audio/video synchronization algorithms were designed with +the intention of recovering files with broken sync. However they seem +to cause unnecessary skipping and duplication of frames, and possibly +slight A/V desync, when used with proper input. It is therefore +recommended that you switch to basic A/V sync with the -mc 0 option, +or put this in your ~/.mplayer/mencoder config file, as long as you +are only working with good sources (DVD, TV capture, high quality +MPEG-4 rips, etc) and not broken ASF/RM/MOV files. + +If you want to further guard against strange frame skips and +duplication, you can use both -mc 0 and -noskip. This will prevent ALL +A/V sync, and copy frames one-to-one, so you cannot use it if you will +be using any filters that unpredictably add or drop frames, or if your +input file has variable framerate! Therefore, using -noskip is not in +general recommended. + +The so-called "three-pass" encoding which MEncoder supports has been +reported to cause A/V desync. This will definitely happen if it is +used in conjunction with certain filters, therefore, it is now +recommended NOT to use three-pass mode. This feature is only left for +compatibility purposes and for expert users who understand when it is +safe to use and when it is not. If you have never heard of three-pass +mode before, forget that we even mentioned it! + +There have also been reports of A/V desync when encoding from stdin +with MEncoder. Do not do this! Always use a file or CD/DVD/etc device +as input. + + + + + +IV.1. Encoding progressive video + +As long as your input video is progressive (see section I.1), + + +Let's finally see a few examples: + + Encoding from 2:2 pulldown PAL DVD, title 1 + 2.35:1 picture aspect + 1200 kbit/sec MPEG-4 video + 128 kbit/sec average-bitrate MP3 audio + + mencoder dvd://1 -vf crop=712:432,scale=640:288 -mc 0 -oac mp3lame\ + -lameopts abr:br=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200 + +The crop size was presumably obtained by using the cropdetect filter +in MPlayer, or experimenting first with crop rectangles in MPlayer. +The output framerate will be 25 fps, the same as the original DVD. It +would be preferable to adjust the playback speed to match the original +24 fps theatrical rate, but this is not yet possible with MEncoder. +The options we pass to libavcodec are the bare minimum, and will yield +relatively poor quality. We will refine then in subsequent sections. + +Now, a second example: + + Encoding from soft-telecined NTSC DVD, title 3 + 2.35:1 picture aspect + 900 kbit/sec MPEG-4 video + Keeping the original AC3 audio + + mencoder dvd://1 -vf crop=708:360,scale=640:288 -mc 0 -oac copy \ + -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 -ofps 23.976023976 + +This example is very similar to the first example, except for the +-ofps option to adjust the output framerate. Unless you tell it +otherwise, MEncoder takes its output framerate from the input +framerate. This is reported as 29.97 fps (actually 30000/1001), or +rather, 29.97 pairs of fields per second. But since the DVD is +soft-telecined, 1/5 of these fields are not actually present, but +intended to be added by the player when it telecines the movie in +realtime. There are actually only 23.976 (24000/1001) frames per +second. If you leave the framerate at the default, 29.97, it will +still work, but every 4th frame will get encoded in duplicate, making +the motion appear choppy. + +Finally, a comment on the number 23.976023976. You'll often see +recommendations to use -ofps 23.976, but this is wrong. MEncoder will +reduce 23.976 to 2997/125, which is not the same as 24000/1001. So in +order to get the right framerate written in the output file's header, +always use plenty of precision. + + + + +IV.2. Two-pass encoding + +The complexity (and thus the number of bits) required to compress the +frames of a movie can vary greatly from one scene to another. Modern +video encoders can adjust to these needs as they go and vary the +bitrate. However, they cannot exceed the requested average bitrate for +long stretches of time, because they do not know the bitrate needs of +future scenes. + +Two-pass encoding solves this problem by encoding the movie twice. +During the first pass, statistics are generated regarding the number +of bits used by each frame and the quantization level (quality) at +which it was encoded. Then, when the second pass begins, the encoder +reads these statistics and redistributes the bits from frames where +they are in excess to frames that are suffering from low quality. + +In order for the process to work properly, the encoder should be given +exactly the same sequence of frames during both passes. This means +that the same filters must be used, the same encoder parameters must +be used (with the possible exception of bitrate), and the same frame +drops and duplications (if any) must take place. + +In theory it's possible to use -oac pcm or -oac copy during the first +pass to avoid spending time encoding the audio. However, this can +result in slight variations in which frames get dropped or duplicated, +so it may be preferable to encode the audio during the first pass as +well as the second. This also allows you to examine the final audio +bitrate and filesize, and to adjust the audio or video bitrate +slightly between passes if you don't meet your target size. + +Here is an example: + + Encoding from an existing AVI file + 500 kbit/sec MPEG-4 video + 96 kbit/sec average-bitrate MP3 audio + + mencoder bar.avi -vf scale=448:336 -mc 0 -oac mp3lame -lameopts \ + abr:br=96 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500:vpass=1 + + mencoder bar.avi -vf scale=448:336 -mc 0 -oac mp3lame -lameopts \ + abr:br=96 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500:vpass=2 + +If you do not want to overwrite the output from the first pass when +you begin the second, you can use the -o option to choose a different +output filename. Note the addition of the vpass option in this +example. If vpass is not specified, single-pass encoding is performed. +If vpass=1, a log file is written with statistics from the first pass. +If vpass=2, the log file is read and the second pass is encoded based +on those statistics. If you are short on disk space or don't want the +extra disk wear from writing the file twice, you can use -o /dev/null +during the first pass. However, sometimes it is beneficial to watch +the first-pass file before beginning the second pass to make sure +nothing went wrong in the encoding. + +Next, an example using XviD instead of libavcodec: + + Encoding from an existing AVI file + 500 kbit/sec MPEG-4 video + Copying the existing audio stream unmodified + + mencoder foo.avi -vf scale=320:240 -mc 0 -oac copy -ovc xvid \ + -xvidencopts bitrate=400:pass=1 + + mencoder foo.avi -vf scale=320:240 -mc 0 -oac copy -ovc xvid \ + -xvidencopts bitrate=400:pass=2 + +The options used are slightly different, but the process is otherwise +the same. + + + + +IV.3. Encoding interlaced video + +If the movie you want to encode is interlaced (NTSC video or PAL +video), you will need to choose whether you want to deinterlace or +not. While deinterlacing will make your movie usable on progressive +scan displays such a computer monitors and projectors, it comes at a +cost: the field rate of 50 or 59.94 fields per second is halved to 25 +or 29.97 frames per second, and roughly half the information in your +movie will be lost during scenes with significant motion. + +Therefore, if you are encoding for high quality archival purposes, it +is recommended not to deinterlace. You can always deinterlace the +movie at playback time when displaying it on progressive scan devices, +and future players will be able to deinterlace to full fieldrate, +interpolating 50 or 59.94 entire frames per second from the interlaced +video. + +Special care must be taken when working with interlaced video: + +1. Crop height and y-offset must be multiples of 4. + +2. Any vertical scaling must be performed in interlaced mode. + +3. Postprocessing and denoising filters may not work as expected + unless you take special care to operate them a field at a time, and + they may damage the video if used incorrectly. + +With these things in mind, here is our first example: + + mencoder capture.avi -mc 0 -oac lavc -ovc lavc -lavcopts \ + vcodec=mpeg2video:vbitrate=6000:ilmv:ildct:acodec=mp2:abitrate=224 + +Note the ilmv and ildct options. -- cgit v1.2.3