Very poor playback performance for 4K video, while VLC is fast

If I start Shotcut 21.03.21 (AppImage) and open this file, playback starts automatically (which is nice), but the CPU utilization is 100% on all 8 cores. VLC plays the same file at ~15% CPU.

My laptop is a ThinkPad X1C with 16GB RAM and Mesa Intel UHD Graphics 620.
I’m using KDE Neon 5.21.4 on X11.

What am I doing wrong?

My goal

I have a bunch of 4K drone video clips in the Playlist, that I’m trying to preview fast so I can decide what and where to add in the Timeline. My goal is to be able to drag the playhead through a clip and review it quickly. In VLC I can do that and get near real-time response. Shotcut 21.03.21 takes 1-2 seconds to seek when I drag the playhead.

What I’ve tried

In the Logging layout, I’ve changed the speed to 2x as described in this thread, but the playback performance remained extremely slow.

VLC is using hardware-accellerated decoding and display (the decoded, uncompressed video stays in GPU memory). Shotcut does not because it is primarily a video editor. You can read more in the FAQ linked at the top of this page. The Shotcut remedy for this is Proxy and Preview Scaling.

On my modest system (Core i7-9700K), the clip you shared only required ~27% CPU to play in the Source player when using Video Mode Automatic. On the Timeline 28%. If your Video Mode does not match the clip’s attributes, Shotcut must scale it and sometimes do color space conversion. The performance will depend on Settings > Interpolation and Settings > Realtime. With 1080p60, realtime on, and bilinear interpolation, my system uses ~39%. With realtime off and lanczos interpolation my system uses ~61%. Another big factor is Settings > Display Method. If add software display method to the previous test, now I am using ~85%.

2 Likes

Thank you for the suggestion to use PROXY files! I can now scrub through videos in realtime, at apparently 540p.

I’ve read the FAQ about hardware-accelerated video decoding. I think they key part is

Thus, in the context of a video editor (not simply a player or transcoder)

Naively, it seems to me that strictly previewing clips (without any filters etc.) amounts to player functionality, and conceptually it could be done with an embedded VLC window :slight_smile: (I’m a web developer, and don’t have any background in video processing, so I might be completely wrong.)

One thing - I don’t see any difference in quality or CPU utilization (~30% all the time) when I change the preview resolution. “Proxy and preview scaling are ON at” 360/540/720p, and “Proxy is ON at 540p”, all have the same CPU and quality profile. Maybe F7/F8/F9 should display a different status, or I’m missing something?

Perhaps. No one has volunteered to implement an optimization like that. The instant the user adds a filter or uses the playlist or timeline it would have to switch back to using the full editing framework. So I do not know how much demand there would be for that optimization

If you are operating on proxies, then there may not be much different in performance between the different preview scaling options.

This topic was automatically closed after 90 days. New replies are no longer allowed.