doc:appunti:linux:video:fix_smartphone_portrait_videos
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:linux:video:fix_smartphone_portrait_videos [2018/04/07 14:33] – [The ffmpeg Recipe] niccolo | doc:appunti:linux:video:fix_smartphone_portrait_videos [2018/04/07 15:47] (current) – [The Gradient Overlay Mask] niccolo | ||
---|---|---|---|
Line 22: | Line 22: | ||
{{choose_crop_area.png? | {{choose_crop_area.png? | ||
- | We wrote a **Python script** to assist in step #1, which calculate all the required numbers just provinding two parameters: the **crop_aspect** and the **offset_y**. | + | We wrote a **[[# |
Adjust the **crop_aspect** from 0.0 (which selects a square) to 1.0 (which selects the full rectangle of the picture). Using a square-shaped crop area we will get the **highest zoom** level into the video, but we will cut-out | Adjust the **crop_aspect** from 0.0 (which selects a square) to 1.0 (which selects the full rectangle of the picture). Using a square-shaped crop area we will get the **highest zoom** level into the video, but we will cut-out | ||
Line 36: | Line 36: | ||
===== The Gradient Overlay Mask ===== | ===== The Gradient Overlay Mask ===== | ||
- | When the cropped image is placed above the background, it is quite annoying to see the **sharp edge** of the image. A better approach is to gradually fade the image at the right and at left edges. This requires to blend the image and the background using a **gradient mask**. We prepared the mask as a PNG image, using **convert** | + | When the cropped image is placed above the background, it is quite annoying to see the **sharp edge** of the image. A better approach is to gradually fade the image at the right and at left edges. This requires to blend the image and the background using a **gradient mask**. We prepared the mask as a **{{gradient_overlay_mask.png? |
< | < | ||
Line 47: | Line 47: | ||
</ | </ | ||
- | {{gradient_overlay_mask.png?direct&150|Overlay Mask With Gradient}} | + | **NOTICE**: It seems that [[https:// |
===== The ffmpeg Recipe ===== | ===== The ffmpeg Recipe ===== | ||
Line 61: | Line 60: | ||
< | < | ||
ffmpeg -i tmp_norotate.mp4 -loop 1 -i tmp_mask.png -filter_complex "\ | ffmpeg -i tmp_norotate.mp4 -loop 1 -i tmp_mask.png -filter_complex "\ | ||
- | [0:v]split [a][b]; \ | + | |
- | [a]transpose=1, | + | [a]transpose=1, |
- | [b]transpose=1, | + | [b]transpose=1, |
- | [1: | + | [1: |
- | [crop][mask]alphamerge [masked]; \ | + | [crop][mask]alphamerge [masked]; \ |
- | [back][masked]overlay=299: | + | [back][masked]overlay=299: |
- | " video_out.mp4" | + | " video_out.mp4 |
</ | </ | ||
The first video stream **%%[0: | The first video stream **%%[0: | ||
+ | |||
+ | ===== The Python Script ===== | ||
+ | |||
+ | The Python script **{{smartphonevideo_2landscape.txt|smartphonevideo_2landscape}}** will make the calculation to prepare the whole incantation: | ||
+ | |||
+ | < | ||
+ | smartphonevideo_2landscape video_file [crop_aspect] [offset_y] > ffmpeg_recipe | ||
+ | source ffmpeg_recipe | ||
+ | </ | ||
+ | |||
+ | You have to edit the script to adjust the size of the input video (default 1280x720), the rotation needed (default 1 = 90 deg clockwise), and the size of output video produced (default 1366x768). |
doc/appunti/linux/video/fix_smartphone_portrait_videos.txt · Last modified: 2018/04/07 15:47 by niccolo