From 27d669599a1da9325df5a6dd995fbf111734597e Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Tue, 28 May 2024 15:37:18 +0200 Subject: [PATCH] Keyframes --- content/blogs/transcoder/index.md | 44 ++++++++++++------------ content/blogs/transcoder/ipb-frames.jpg | Bin 0 -> 56261 bytes 2 files changed, 22 insertions(+), 22 deletions(-) create mode 100644 content/blogs/transcoder/ipb-frames.jpg diff --git a/content/blogs/transcoder/index.md b/content/blogs/transcoder/index.md index 92b09bc..fbe8740 100644 --- a/content/blogs/transcoder/index.md +++ b/content/blogs/transcoder/index.md @@ -18,7 +18,7 @@ The service should be able to: - Allow clients to automatically select the best video quality it can play (and auto-switch when internet speed changes) - Prefer the original video if it can be played by the device/connection speed -The last point is particularly important since Kyoo is self-hosted and user's servers are not always powerful enough to always transcode video. +The last point is particularly important since Kyoo is self-hosted and user's servers are not always powerful enough to always transcode video. For example a Raspberry Pi will not be able to transcode videos, but simply transmuxing and conserving the original video stream is possible. As for any video services, the following points should also be satisfied: - Start playing fast (we don't want to wait 30s to start watching a movie) @@ -152,42 +152,45 @@ The user will now have to rewatch part of the movie or wait for the transcoder t ![scenario-illustration.png](./scenario-paint.png "A schema of the scenario made with the help of paintjs.app") -So how should we fix that? The obvious idea is to start the new encode directly at the requested segment, so users don't have to wait. While the idea is pretty simple, actually implementing it is a lot harder. -First, you want to start the transcode at a specific segment, but you don't know the start time in seconds of that segment. And even if we knew the start time of the segment, we can't simply remove previous segments from the index.m3u8 file. It's illegal to do so and the player would not be able to seek before in the video. +So how should we fix that? The obvious idea is to start the new encode directly at the requested segment, so users don't have to wait.
+While the idea is pretty simple, actually implementing it is a lot harder. First, you want to start the transcode at a specific segment, but you don't know the start time in seconds of that segment. And even if we knew the start time of the segment, we can't simply remove previous segments from the index.m3u8 file. It's illegal to do so and the player would not be able to seek before in the video. +### Alignments In truth, HLS has another rule: each variant needs to have their segments aligned (same length and start time). I'll steel a diagram from a twitch's blog: ![variant-alignment](./twitch-variant-alignment.png "Source: https://blog.twitch.tv/en/2017/10/10/live-video-transmuxing-transcoding-f-fmpeg-vs-twitch-transcoder-part-i-489c1c125f28/") -We will talk about what does IDR means in the next chapter. You can see that each segment is aligned: they start and end at exactly the same time in all variants. This makes it easy to switch quality/variant at any point (as illustrated by the arrows). +You can see that each segment is aligned: they start and end at exactly the same time in all variants. This makes it easy to switch quality/variant at any point (as illustrated by the arrows). -To specify segments length we can either use `-segment_time` to specify a single length for all segments, or we can use `-segment_times` and specify an array of length with one value per segment. -That's great, and you might think this solves the issue, but we can't simply cut a video in two at any point. We need each segment to start with a keyframe, the `IDR` in the previous illustration. +In ffmpeg, we can either use `-segment_time` to specify a single length for all segments, or we can use `-segment_times` and specify an array of length with one value per segment.
+If we tried to run a ffmpeg command with this flags, you would quickly notice an issue: segments are not at the right duration! This is because a segment must start with a keyframe (the `IDR` in the previous illustration). -While we can manually create keyframes at the start of segment when we transcode, we have no control over keyframes when we transmux (keep the original video stream). This means we could have a HLS setup like this: +While we can manually create keyframes at the start of segment when we transcode (using the `-force_key_frames` flag), we have no control over keyframes when we transmux (keep the original video stream). This means we could have a HLS setup like this: ![variant-misalignment](./twitch-variant-misalignment.png "Same graph as before but with a transmux stream") -Let's take a step back and focus on what's a keyframe beforehand: +Clients watching this stream could not change quality without replaying or skipping part of a segment. Let's take a step back and focus on what's a keyframe before searching for a solution. -## Keyframes +## A story about Keyframes -What's a keyframe you might ask: it's an independent frame (I-frame) in a video stream. Think of it has an image. Video frames can either be independent (keyframes) or dependant on a keyframe. A dependant frame does not store the whole image but the differences relative to a keyframe (a keyframe before for a B-frame and a keyframe after for a P-frame) +### What's a keyframe -![i frame graph] +So, what's a keyframe: it's an independent frame (I-frame) in a video stream. Think of it has an image. Video frames can either be independent (keyframes) or dependent on another frame. A dependent frame does not store the whole image but the differences relative to another frame. -Great so just put a keyframe every time we create a segment, no? Well yes and no. It would be easy to do so when we transcode, there is a ffmpeg option for that: `-force_keyframe 2` will force a keyframe every 2 seconds. But what about times when we preserve the original video stream (copy it)? +![ipb-frame-explanation](./ipb-frames.jpg "Source: https://www.canon.com.hk/cpx/en/technical/va_EOS_Movie_Compression_Options_All_I_and_IPB.html") -It's important to allow playback of the original video stream without re-encoding it since it offers the best video quality. It is also way faster to process on the server. With this enabled even playing on a raspberry pi is doable. +In the previous illustration, you can see on the top row what you would see when playing the video. On the bottom row, you can see video frames. I-frames are keyframes, P-frames and B-frames are both dependent frames (B-frames are `bidirectionally predicted pictures`, it can depend on both previous and future frames). You can read more about I/P/B frames on [Wikipedia](https://en.wikipedia.org/wiki/Inter_frame).br/ +With this new knowledge about dependent frames, you can now understand why segments must start with a keyframe. A player could not show the image without the preceding keyframe anyway. -So we absolutely need to allow playback of the original video stream, where we have no control of keyframes. There can be a keyframe every frame or we could have 3 minutes of video without any keyframes. Segments still need to start with a keyframe, even in original quality. +So we absolutely need to allow playback of the original video stream, where we have no control of keyframes. There can be a keyframe every frame, or we could have 3 minutes of video without any keyframe. Segments still need to start with a keyframe, even in original quality. -## Allowing original playback +### Allowing original playback -There is only one way to meet the previously stated constraints: giving up control on fixed segments length and aligning on keyframes. Instead of creating a segment every 4s, we scan the whole video and extract keyframes timestamps and create a new segment only on one of those timestamps. +There is only one way to align the original video stream with the transcoded stream: giving up control on fixed segments length and aligning on the original keyframes. Since we can control the transcoded's stream keyframe, we can put them at the same times as the original's stream keyframes.
+This means we can't simply create a keyframe/segment every 4s, we need to scan the whole video to extract keyframes timestamps and create a new segment only on one of those timestamps. -When creating the hls stream from the original video stream, we simply cut it at a previously extracted keyframes. For transcoded stream, we force keyframes and segments cut exactly like before but we use the original's video keyframes as a reference. +When creating the hls stream from the original video stream, we simply cut segments at a previously extracted keyframes. For transcoded stream, we force keyframes and segments cut exactly like before but we use the original's video keyframes as a reference. To extract keyframes from a video file, we can use ffprobe, a tool that ships with ffmpeg. The following command gives keyframes: @@ -195,7 +198,7 @@ To extract keyframes from a video file, we can use ffprobe, a tool that ships wi If you run this command, you will notice that it's extremily slow. That's because the `-skipkey` argument is a decoder argument so it needs to decode all video frames and then discard the frames wich are not keyframes. We can effectively do the same thing 20 times faster by manually filtering keyframes. -```ffprobe fast``` +```ffprobe -loglevel error -select_streams v:0 -show_entries packet=pts_time,flags -of csv=print_section=0 input.mkv | awk -F',' '/K/ {print $1}'``` This command will output something like that: @@ -215,10 +218,7 @@ I iterated a lot on this transcoder, my first implementation was written in C an Kyoo's transcoder also has other features that resolve around video like extracting subtitles, fonts or media thumbnails for seeking (see picture below). It's still a moving project with new features coming, but the core transcoding process is done and fully working! The next feature that will probably come is intro/outro detection using audio fingerprints. -This was my first blog about Kyoo's development, If you want to read more about a specific topic, please manifest yourself! If you liked this article, consider sharing it or staring Kyoo on github. +This was my first blog about Kyoo's development, If you want to read more about a specific topic, please manifest yourself! If you liked this article, consider sharing it or staring [Kyoo](https://github.com/zoriya/kyoo) on github. -`ffmpeg -i input.mkv -map 0:V:0 -c:v libx264 -preset faster -vf scale=854:480 -bufsize 10500000 -b:v 1200000 -maxrate 2100000 -force_key_frames 2.002000,4.004000,6.006000,... -sc_threshold 0 -f segment -segment_time_delta 0.2 -segment_format mpegts -segment_times 2.002000,4.004000,6.006000,... -segment_list_type flat -segment_list pipe:1 -segment_start_number 0 /tmp/k/segment-480p-0-%d.ts ` - - diff --git a/content/blogs/transcoder/ipb-frames.jpg b/content/blogs/transcoder/ipb-frames.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd154a916416d3c04cfe391771885a425ca91f53 GIT binary patch literal 56261 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%0AB~-6a}KxyiGVf>!fx*fhW32}qiP73 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