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 revisionLast revisionBoth sides next revision | ||
doc:appunti:linux:video:ffmpeg_final_rendering [2023/11/13 10:15] – [Encoding for High Definition Video] niccolo | doc:appunti:linux:video:ffmpeg_final_rendering [2023/11/13 11:39] – [Encoding for High Definition Video] niccolo | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Final Rendering in x264 with ffmpeg ====== | ====== Final Rendering in x264 with 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. | ||
+ | |||
===== Encoding for High Definition Video ===== | ===== Encoding for High Definition Video ===== | ||
Line 9: | Line 12: | ||
Our main source of videos is the Xiaomi Yi action camera, which records full HD videos **1920x1080 pixels** at a variable bitrate of **12.0 Mb/s**. So we re-encode the final montage with the following settings: | Our main source of videos is the Xiaomi Yi action camera, which records full HD videos **1920x1080 pixels** at a variable bitrate of **12.0 Mb/s**. So we re-encode the final montage with the following settings: | ||
- | ^ Video codec | + | ^ Video codec |
- | ^ Video filter | + | ^ Video filter |
- | ^ 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 |
- | ^ Audio codec | + | ^ Pixel format |
- | ^ Audio bitrate | + | ^ Bits per sample |
+ | ^ Color range | We use the **full range** of colors. The **j** letter in the // | ||
+ | ^ Audio codec | ||
+ | ^ Audio bitrate | ||
We can use **Avidemux** to make the final rendering (re-encoding). For a **command line only** solution you can consider **ffmpeg** to perfomr the re-encoding and to make the merge (mux) all into a Matroska container. | We can use **Avidemux** to make the final rendering (re-encoding). For a **command line only** solution you can consider **ffmpeg** to perfomr the re-encoding and to make the merge (mux) all into a Matroska container. | ||
Line 34: | Line 40: | ||
</ | </ | ||
+ | ===== Pixel format considerations ===== | ||
+ | |||
+ | We used the **yuvj420p pixel format**. What does it means? | ||
+ | |||
+ | First of all consider the **420** code; this means tat for each matrix of 4x2 pixels the stream encode all the values for the luminance, only 2 values for the chrominance on the X axis and zero values for the chrominance on the Y axis. This figure explains clearly the 4:4:4, 4:2:2 and 4:2:0 subsampling methods: | ||
+ | |||
+ | {{subsampling.png? | ||
+ | |||
+ | Is file size is not a concern, we might ask ourselves whether a pixel format with less loss of chroma information would be preferable. Obviously is useless to add more chroma information if the final rendering has the same resolution of the original video, but if we are **scaling down** the video resolution we may **retain chroma information** using a different pixel format. | ||
+ | |||
+ | The fact is that **in movies 4:2:0 is almost lossless visually**, which is why it can be found used in Blu-ray discs and a lot of modern video cameras. There is virtually no advantage to using 4:4:4 for consuming video content. | ||
+ | |||
+ | Furthermore, | ||
+ | |||
+ | ===== How to probe a video ===== | ||
+ | |||
+ | How to get the **piexel format**: | ||
+ | |||
+ | < | ||
+ | ffprobe -loglevel error \ | ||
+ | -show_entries stream=pix_fmt \ | ||
+ | -select_streams v YDXJ4050.mp4 | ||
+ | </ | ||
+ | |||
+ | How to get the **bits per raw sample**: | ||
+ | |||
+ | < | ||
+ | ffprobe -loglevel panic \ | ||
+ | -show_entries stream=bits_per_raw_sample \ | ||
+ | -select_streams v YDXJ4050.mp4 | ||
+ | </ | ||
+ | |||
+ | ===== Web Resources ===== | ||
+ | |||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
doc/appunti/linux/video/ffmpeg_final_rendering.txt · Last modified: 2023/11/13 11:39 by niccolo