On Wed, 20 Apr 2005, Nicolas wrote: > Damn, y4mscaler and mpeg2enc are driving me crazy... =(
Just takes a little practice :) > Thanks for pointing me to yuvdeinterlace, Steven! I now use: Welcome. > nice -19 lav2yuv record_01.avi | y4mshift -n -2 | y4mscaler > -I active=744x560+12+8TL -O size=744x560 -S option=sinc:6 | > yuvmedianfilter -T 3 | yuvdeinterlace -f | mpeg2enc -f 0 -V 500 -c -D 10 > -E -10 -q 2 -K tmpgenc -o record_01_cvs.m2v > However, as you see, I had to use the -f 0 flag for mpeg2enc. If I use > the -f 8 flag as I did before, I have that error: > **ERROR: [mpeg2enc] Horizontal size is greater than permitted in Correct - you can't put 744x560 on a DVD. For 625line ("PAL") the valid frame sizes for a DVD are: 720x576, 704x576, 352x576 and MPEG-1 352x288. No other sizes are valid. And 560 lines is not a valid number of lines for PAL. http://www.dvddemystified.com/dvdfaq.html#3.4 > And then it stops. As it should ;) If you tell mpeg2enc it's producing output for a DVD then it will enforce the DVD limits on the frame size. > I need: > - a good quality Then don't deinterlace :) Or rather, if the DVD will be played on TV sets then leave it interlaced since almost all TV sets are interlaced. OH, and as I mention again later on TVs overscan so you will not see the edges that you're trying to crop. So you will degrade the image slightly by upscaling 560 lines to 576. Upscaling introduces no new information, it has to fabricate the new number of lines by (basically) interpolation. You'll loose some detail, the image will be a little blurrier/softer. > - a cropped video, with no black borders Be careful to take into account the fact that video pixels aren't square. For PAL the pixels have an aspect of 59:54 (they are slightly wider than they are tall). MJPEG cards product square pixels - that is why you have a 768x576 frame - 768x576 with 59:54 pixels is the same as 704x576 using 59:54 pixels! Refer to: http://www.mir.com/DMG/aspect.html In particular the first section with the formula: width DAR -------- = ----- height SAR DAR (Display Aspect Ratio) is probably the usual 4:3, SAR for PAL is 59:54 and height must be 576. Solve for 'width' (and round up to the next multiple of 16). Or you just leave the math to y4mscaler ;) See below. > there're some very large green blocks on the right border of the > picture. Moreover, there're some parts of the image (with a lot of > details) which are "blocky" Probably because you 1) didn't specify a bitrate and the default is very low (~1152Kb/s) and 2) -f 0 is generic MPEG-1 (not MPEG-2). Then too 744 is not a multiple of 16 and encoders really prefer having the dimensions be a multiple of 16 (which 720, 704, 352 are - so is 576). > How can I crop my pictures using y4mscaler? I tried, as given by Steven: > y4mscaler -O sar=src size=704x480 > > But that does not produced the expected result... That's because that was only an example. You were expected to put in appropriate numbers for your needs (PAL, input framesize, etc) :) I use that step as a final crop before going into the encoder. Something like this will be a LOT closer to what you need (but I have not tested it): y4mscaler -I active=744x560+12+8TL -I sar=1:1 -O sar=59:54 -O size=704x576 But you really don't want to do that... That will degrade the image because you're cropping the top and bottom 8 lines (total of 16) and then scaling up 560 to 576 lines. But y4mscaler will do The Right Thing to preserve the aspect ratio. On a TV set (which others may view the DVD on) the top and bottom black bars will NOT be seen due to overscan. TVs lose between 5 and 10% of the edges. A better way to handle the noise in the borders is to turn them to pure black but leave them present. Far better to do something like this using the original full 768x576 frame that you captured, blacken the top 8 and bottom 8 lines BUT LEAVE THEM PRESENT - you must have 576 lines for PAL, not 560! Use the '-b' option of y4mshift to put black on the borders. Something like "-b 12,8,754,560". That is what I do for analog captures - it blackens the VCR noise/junk in the borders and allows the encoder to use fewer bits to encode the border areas. The end commands would be something like lav2yuv ... |y4mshift -n 2 -b 12,8,744,560 | \ y4mscaler -I sar=1:1 -O sar=59:54 -O size=704x576 -S option=sinc:6 | ... What you can NOT do is arbitrarily pick your size and then scale the two dimensions to fit the frame both horizontally and vertically. You'll mangle the aspect ratio that way (people will be too skinny or too fat and circles will not be round). The number of lines is fixed at either 576 or 288, the two aspect ratios are fixed (you can not change them as desired) at 4:3 and 59:54 (or 16:9 and 118:81). If you're making DVDs then there are a lot of restrictions that have to be observed. For computer only playback the restrictions are fewer, you can set your frame sizes as desired - but for DVDs the choices are few and specific and govern how you have to crop and scale the image data. Cheers, Steven Schultz ------------------------------------------------------- This SF.Net email is sponsored by: New Crystal Reports XI. Version 11 adds new functionality designed to reduce time involved in creating, integrating, and deploying reporting solutions. Free runtime info, new features, or free trial, at: http://www.businessobjects.com/devxi/728 _______________________________________________ Mjpeg-users mailing list Mjpeg-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mjpeg-users