Skip to content
Go back

Kdenlive + OBS Studio: Screencast Pipeline

By SumGuy 11 min read
Kdenlive + OBS Studio: Screencast Pipeline

You Are Not Paying Camtasia $300 a Year

Camtasia is fine. Adobe Premiere is fine. DaVinci Resolve is — well, it’s free on Windows and macOS, but try exporting to MP4 with AAC audio on Linux and watch the menu go grey on you. That’s a paid feature. On Linux. In 2026.

Here’s the alternative: OBS Studio for recording, Kdenlive for editing. Both are free, both are native Linux applications, and together they produce tutorials, demos, and screencasts that look exactly as professional as anything coming out of the subscription-software crowd — assuming you set them up correctly.

The “set them up correctly” part is where most people go wrong. They hit Record in OBS with whatever defaults shipped in the package manager, drag the file into their editor, and then wonder why the audio sounds like a wet paper bag and the video has judder every time the mouse moves. This article is about avoiding that. It’s about the pipeline — the settings that let OBS hand clean footage to Kdenlive, and the render settings that let Kdenlive produce something YouTube won’t transcode into mud.

I covered the Kdenlive editing interface — cuts, transitions, titling, the clip monitor — in the Kdenlive basics article. This isn’t that. This is plumbing.

Full example: Clone the OBS profile, Kdenlive render preset, and crash-recovery script at github.com/KingPin/sumguy-examples/tree/main/productivity/kdenlive-obs-screencast.


OBS: Record for the Editor, Not for Viewers

OBS is built for streaming. The defaults reflect that — it wants to get pixels out the door fast, with constant bitrate, in a format that plays nicely with RTMP. Streaming settings are hostile to editing. You need to flip a few things.

Container: MKV, Full Stop

Go to Settings → Output → Recording and set the Recording Format to MKV.

I know. You want MP4 because everything plays MP4. That preference will bite you the day OBS crashes — or the day your recording software gets killed, or the power flickers, or a kernel module unloads itself at 2 AM. MP4 writes its index at the end of the file. If the recording stops uncleanly, the index never gets written, and the file is unrecoverable. Every byte of footage: gone.

MKV writes its index continuously. A crashed MKV is almost always recoverable. Record in MKV, ship in MP4. You remux at the end — it takes ten seconds and costs zero quality.

Terminal window
# Crash recovery — remux without re-encoding
ffmpeg -i broken-recording.mkv -c copy recovered.mp4

That -c copy flag is doing the work. No re-encode, no quality loss, just container surgery. It runs at roughly 100x realtime on any machine that can run OBS. The companion remux-mkv-to-mp4.sh in the examples repo wraps this with a progress indicator and a sanity check on the input.

Encoder: Use Your GPU

Software encoding (x264) is fine if you have headroom. Most tutorial workloads — a terminal, a browser tab, a compose file — are not demanding. But if you’re recording a game, a 3D renderer, or anything with rapid motion, CPU encoding will introduce lag. Use hardware.

In Settings → Output → Recording → Encoder, pick the one that matches your hardware. Don’t run NVENC at ultrafast — the quality is rough. Medium or slow is fine for source recordings that you’ll re-encode for delivery anyway.

Bitrate: The 12-15 Mbps Sweet Spot

For 1080p60 source recordings, 12,000–15,000 kbps is the range where you get clean enough footage for editing without files that eat your NVMe. For 1080p30 or pure talking-head content, 8,000–10,000 kbps is plenty.

Do not use CRF mode for OBS recording. CRF is great for renders — we’ll use it there — but during live recording it can cause bitrate spikes that drop frames. Stick with CBR or VBR with a ceiling.

If you’re using the rate control setting, set it to VBR and cap the max bitrate at 15 Mbps. This gives the encoder room to breathe on high-motion scenes without going completely off the rails on a static terminal.

Framerate: Match Your Content

Set the framerate in Settings → Video → Common FPS Values. Do not use fractional framerates unless you have a specific reason. 60 or 30, pick one, stick with it across your project.


Audio: The Setting That Changes Everything

This is the one. Everything else I’ve said is useful. This one is mandatory.

Go to Settings → Output → Recording, scroll to Audio Track, and enable at least two separate tracks:

Each audio source in OBS (a mic input, the desktop, a browser tab) can be assigned to a track. Separate tracks are preserved in MKV. When Kdenlive opens the file, it sees multiple audio streams and puts them on separate timeline tracks.

Why does this matter? Because:

  1. You can cut dead air from the mic track without silencing the background music on the desktop track.
  2. You can duck the desktop audio under the mic with a keyframe automation curve, so your system sounds drop when you’re talking.
  3. If the mic clipped on one section, you can address it independently without touching the desktop mix.
  4. You can mute the desktop track entirely for the render if it turns out to be noise.

If you record everything to a single mixed track, you lose all of this. You get a flat stereo bake where the keyboard clicks are glued to your voice and the system ding from your Slack notification is permanent.

In OBS, under the Audio Mixer, right-click each source and use “Advanced Audio Properties” to assign each source to its track(s). Mic to Track 1, desktop to Track 2. You can also send the mic to both Track 1 and Track 2 if you want a safety mix, but two separate streams is the baseline.


Importing Into Kdenlive

Open Kdenlive. Before you drag anything in, go to Project → Project Settings and set:

Mismatch here causes Kdenlive to silently scale or drop frames to fit the project settings. If your footage plays back with judder or blur that wasn’t there in OBS, this is why.

Drag the MKV into the Project Bin. Kdenlive will likely prompt you: “This clip has a different frame rate than the project. Do you want to transcode it?”

Say no if the rates actually match — the dialog sometimes fires even on matching files due to container metadata quirks. Say yes only if the file genuinely has a different fps than your project settings and you can’t change the project settings to match. Transcoding degrades quality and takes time. Avoid it unless the edit is impossible without it.

Drag from the Project Bin to the timeline. You’ll see the video track and — if you recorded separate audio tracks — two audio tracks below it. Kdenlive reads multi-stream MKV natively and maps each audio stream to its own timeline track.


The Edit Workflow (High Level)

I’m not going to walk you through every Kdenlive tool here — I covered cuts, the razor blade, title clips, and audio keyframes in the Kdenlive basics article. What I will say is that for screencasts, 90% of the edit is:

  1. Razor through dead air. Hit R to grab the razor, click at the pause point, delete the gap. Do this pass first, before anything else, and your project will shrink to something manageable.
  2. Add a title clip. Drag a “Title” from the clip menu, type your intro, set the duration to about 5 seconds. Kdenlive’s titler is clunky but functional.
  3. Duck the desktop audio. Click the desktop audio track, enable keyframe automation on the volume, drop it to about 20% during sections where your mic is active. This is the difference between “professional screencast” and “guy who forgot his Discord notifications were on.”
  4. Don’t color grade. Your screen is already 100% calibrated because it’s literally your screen. Color correction is for cameras. Leave it.

Total edit time for a 10-minute tutorial with clean source footage: 30-45 minutes. If it’s taking longer, your source footage has problems — fix them at the recording stage.


Render Settings: The MP4 That Doesn’t Make YouTube Cry

Go to Project → Render (or press Ctrl+Shift+R). In the render dialog:

  1. Select MP4 from the format list on the left.
  2. Under that, find “Web > High Quality 1080p” — this preset is close to what you want.
  3. Open the preset details and verify:
    • Video codec: H.264 (libx264)
    • Rate control: CRF 20-22
    • Audio: AAC, 192k, stereo

CRF (Constant Rate Factor) produces variable bitrate output where the encoder allocates more bits to complex frames and fewer to static ones. For a screencast — where 80% of the frame is a static terminal and 20% is fast mouse movement — CRF 20-22 produces smaller files than a fixed-bitrate encode at equivalent quality. YouTube re-encodes everything it receives anyway, so you’re feeding it the highest quality source you can rather than pre-squeezing it.

The Kdenlive render preset XML is in the examples repo. Drop it in ~/.config/kdenlive/kdenliverenderingprofiles/ and restart Kdenlive — it’ll appear in the custom presets list in the render dialog.

Hit Render to File, name it something with the date and topic, and let it cook.


Optional Polish: ffmpeg for the Last Mile

Once Kdenlive has produced your MP4, you have clean footage and you’re basically done. Two optional passes worth knowing:

Strip metadata — camera files and some screen recorders embed GPS coordinates, encoder fingerprints, and other junk. Screencasts usually don’t have sensitive metadata, but it’s worth checking:

Terminal window
# Check what's in there
ffprobe -v quiet -print_format json -show_format your-video.mp4 | grep -i metadata -A 20
# Strip all metadata, no re-encode
ffmpeg -i your-video.mp4 -map_metadata -1 -c copy clean-video.mp4

Trim the tail — if you forgot to cut the last five seconds where you fumbled to stop the recording, you can trim without re-encoding:

Terminal window
# Trim: start at 0s, keep 10 minutes exactly
ffmpeg -i your-video.mp4 -ss 0 -to 00:10:00 -c copy trimmed.mp4

Note: -c copy trim is keyframe-accurate, not frame-accurate. For the last few seconds of a screencast, this is fine. If you need frame-accurate trimming, do it in Kdenlive before rendering.


The Full Pipeline, One-Line Summary

Record MKV with separate audio tracks in OBS → remux to MP4 on crash if needed → import into Kdenlive matching project settings → razor the dead air → render H.264 CRF 21 MP4 → optional ffmpeg polish → upload.

That’s it. No subscriptions, no paywalled export codec, no thirty-minute render times because you somehow ended up in an effects chain that touches every frame. OBS and Kdenlive aren’t glamorous. They are, however, on your machine right now, and they will be next year, and the year after that, and Adobe won’t be able to take them away from you because you’re six months behind on your bill.

The files in the companion repo give you a working OBS profile reference, the Kdenlive render preset XML ready to drop in, and the remux script for crash recovery. Start there, adjust the bitrate for your hardware, and you’ll have your first clean 1080p screencast out the door before you’d even finish setting up a Camtasia project.


Share this post on:

Send a Webmention

Written about this post on your own site? Send a webmention and it'll show up above once verified.


Previous Post
Snapper for Btrfs Snapshots on Root Filesystems
Next Post
Plex Pass Hits $749. Time for Jellyfin.

Discussion

Powered by Garrul . Sign in with GitHub or Google, or post anonymously.

Related Posts