doc:appunti:linux:video:ffmpeg_final_rendering
                Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:linux:video:ffmpeg_final_rendering [2023/11/13 12:38] – [Encoding for High Definition Video] niccolo | doc:appunti:linux:video:ffmpeg_final_rendering [2024/07/31 09:57] (current) – [Two pass encoding] niccolo | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Final Rendering | + | ====== Final Rendering with libx264 and ffmpeg ====== | 
| Whether you are working with **Ffmepg**, **Avidemux** or **Olive Video Editor**, you should be wondering what parameters to use to final render a video montage. Here are my choices for some specific purpose. | Whether you are working with **Ffmepg**, **Avidemux** or **Olive Video Editor**, you should be wondering what parameters to use to final render a video montage. Here are my choices for some specific purpose. | ||
| - | |||
| ===== Encoding for High Definition Video ===== | ===== Encoding for High Definition Video ===== | ||
| Line 16: | Line 15: | ||
| ^ Basic x264 | Preset: **slow** (or less), Tuning: **film**, Profile: **High**, IDC Level: **Auto** | | ^ Basic x264 | Preset: **slow** (or less), Tuning: **film**, Profile: **High**, IDC Level: **Auto** | | ||
| ^ Video encoding | ^ Video encoding | ||
| - | ^ Pixel format | + | ^ Pixel format | 
| ^ Bits per sample | ^ Bits per sample | ||
| - | ^ Color range       | We use the **full range** | + | ^ Color range       | We use the **full range** | 
| ^ Audio codec       | < | ^ Audio codec       | < | ||
| ^ Audio bitrate | ^ Audio bitrate | ||
| Line 36: | Line 35: | ||
| -filter:v " | -filter:v " | ||
| -vcodec ' | -vcodec ' | ||
| + | -b:v 4M -maxrate:v 6M -bufsize:v 6M \ | ||
| -acodec copy \ | -acodec copy \ | ||
| " | " | ||
| </ | </ | ||
| + | |||
| + | Notice that we selected a target bitrate of **4 Mbps** and a maximum bitrate of **6 Mbps**. Sepcifying both the //bitrate// and the //max bitrate tolerance// requires also to specify a //buffer size//; '' | ||
| + | |||
| + | ===== A warning about the H.264 profile level ===== | ||
| + | |||
| + | It turned out that **Kodi 19.4** (running on a Raspberry Pi 4 with **Raspbian GNU/Linux 11 Bullseye** o.s.) has some problems playing H.264 video files depending on the video format profile used for the encoding. The video actually starts to play, but nothing is seen on the screen; sometimes the screen goes totally green. Similarly a **Google TV** with Kodi 21.0 has problems with the same files, showing stuttering and video artifacts. | ||
| + | |||
| + | Here it is a table of playing capabilities based on experimental testing: | ||
| + | |||
| + | ^ Format profile | ||
| + | | High@L5 | ||
| + | | High@L4 | ||
| + | | High@L4.1 | ||
| + | | High@5 | ||
| + | | High@5 | ||
| + | |||
| + | ===== Two pass encoding ===== | ||
| + | |||
| + | Here it is a recipe of **two-pass encoding** from an high quality //master// produced with [[olive_editor_tools# | ||
| + | |||
| + | <code bash> | ||
| + | TITLE=' | ||
| + | ffmpeg \ | ||
| + | -i full32bit-veryslow-crf18-fullcolor.mkv \ | ||
| + | -metadata title=" | ||
| + | -vcodec ' | ||
| + | -profile:v ' | ||
| + | -b:v 6M -maxrate:v 9M -bufsize:v 18M \ | ||
| + | -x264-params ' | ||
| + | -an \ | ||
| + | -pass 1 \ | ||
| + | -f matroska -y /dev/null | ||
| + | # First pass produces two files: ffmpeg2pass-0.log and ffmpeg2pass-0.log.mbtree. | ||
| + | ffmpeg \ | ||
| + | -i full32bit-veryslow-crf18-fullcolor.mkv \ | ||
| + | -metadata title=" | ||
| + | -vcodec ' | ||
| + | -profile:v ' | ||
| + | -b:v 6M -maxrate:v 9M -bufsize:v 18M \ | ||
| + | -x264-params ' | ||
| + | -an \ | ||
| + | -pass 2 \ | ||
| + | -f matroska marocco-twopass-6max9-level41.mkv | ||
| + | </ | ||
| + | |||
| + | The transcoding works on the video only, suppressing any audio stream (**%%-an%%** option). Using the **keyint=64** option will produce a keyframe every 64 frames (about two seconds), this make seeking back and forward in the video more smooth. | ||
| ===== Pixel format considerations ===== | ===== Pixel format considerations ===== | ||
doc/appunti/linux/video/ffmpeg_final_rendering.1699875512.txt.gz · Last modified:  by niccolo
                
                