Sunday, September 9, 2012

To convert a video file to HD format


In the following exposition we would discuss the command line procedure to produce videos with HD aspect ratio from normal videos. This would allow the video to fill a HD screen .

NOTE: This procedure will not improve quality of a video. If it is grainy then it would remain grainy in the final result. Changing aspect ratio only allows the video to fit HD screens and not improve its quality. To improve quality you can try smoothing in AVIDEMUX.

There are many GUIs to convert a video file to HD 16:9 format. But I find its best to use the CLI.

STEP 1 : Get video file info

We have to get the file to the 16:9 ratio.  To achieve this first obtain video info using mplayer. Just play the video and press ESC immediately upon starting.  Now look at the line starting with VIDEO.
It should say something like this,


VIDEO:  [H264]  640x380  0bpp  29.970 fps  138.8 kbps (16.9 kbyte/s)


The 2nd column would be video codec. 3rd would be resolution. 5th is fps for video and 4th is sound encoding quality set in kbps.

In this example the file has aspect ratio of 640/380 = 1.68. We want 16:9 = 1.778 which is 640x360. So we have to crop the height so that we keep as much important stuff within frame as possible and reject the flat colors like sky or ground. This is a judgement call.

It works very well on small files.   It is much harder than doing it  visually in a GUI and sometimes unreasonably slow for large files because the process has to be repeated couple of time to get the right amount of cropping. So  for large files use KDENLIVE.

STEP 2: CROP

mencoder inputfile -ovc x264 -vf crop=width:height:x:y  -o outputfile

vf : video filter

crop=width:height:x:y
(x,y) is the start position of the crop.

e.g.

mencoder input.mp4 -nosound -ovc x264 -vf crop=640:370:0:7  -o zzz.mp4

The video is cropped to 640:370. The crop began at (0,7) and ended at (640,377). Now it is time to scale it to bring it to 16:9 aspect ratio.

STEP 3: SCALE

mencoder inputfile  -ovc x264 -vf scale=width:height -o outputfile

whatever the initial resolution of the video, it would be scaled to the given resolution width:height.


mencoder zzz.mp4 -nosound -ovc x264 -vf crop=640:360  -o output.mp4

And we're done.

Check by playing in mplayer.

No comments:

OK GOOGLE on Samsung Galaxy S7 doesn’t work

To make Ok Google detection work on Galaxy S7 (Galaxy series phones) we need to perform a couple of steps. 1. As long as Samsung S vo...