Understanding Hardware Encoder and Parallel processing

I can’t find much on the use hardware encoder option and was wondering what the pros and cons are for that? I found some for parallel processing but they are a bit vague. Apparently it’s been buggy in the past but most bugs have been fixed? I’m trying to dial in on the best settings to maximize my render time, it just took over 2 hours to render 20 minutes of video. Also there is a checkbox next to the advanced tab I just noticed. What is that for exactly? And is it normal that after doing any kind of exporting with shotcut it basically just dies. It’s lagging so bad right now that I can’t even do anything and I’m just waiting for windows to finally kill it.

Read the FAQ for information on Shotcut’s use of the hardware encoder and parallel processing. Shotcut - Frequently Asked Questions

Up until recent generations of hardware encoders they in general produced poorer quality videos with much increased filesizes. In consumer PCs and laptops they were designed more for fast streaming of video than producing high-quality videos.

For me Shotcut rarely fails or hangs when exporting. If it does, it is usually because memory is tight, especially if I have other application running in parallel.

Hardware encod* is mentioned 6 times.

3 times under How does Shotcut use the GPU

hardware encoding (where available and enabled

Thus, you cannot expect Shotcut to use close to 0% CPU and much % of GPU when exporting using the hardware encoder because the reading of files and decoding alone becomes a bottleneck to feed the hardware encoder. Also, if you have any decent amount of image processing, you should expect a significant amount of CPU usage especially if parallel processing is enabled (it is by default).

Twice under Why does Shotcut not use hardware accelerated video decoding?

Next, assuming you do not need to deinterlace and agree to limit oneself to the GPU effects, there is a major technical hurdle to transfer the decoded video in GPU RAM to OpenGL textures due to multiple APIs for multiple operating systems. Likewise, the complexity to convert OpenGL textures to hardware encoder frames for the various hardware encoding APIs. Any tool that claims to do all of these but does not ensure the video stays in GPU RAM is going to have limited performance gain if any.

Once under How does Shotcut use multiple CPU cores and threads?

encoding video when not using the hardware encoder on most video codecs

Parallel processing is mentioned twice but just where it’s at in the menu and suggesting to turn it off, no description is given.

So the FAQ really didn’t help me understand when it is a good idea to use it. That last one I did miss when looking before though and it sounds like if you use Hardware encoder in export it won’t use multiple threads? I have a 12 core processors and an rtx3080, I assume I’d be better off using parallel processing over hardware encoder? I’m able to set both options so had thought you could use both together.

As for memory I have 32gb and it was getting hit hard but didn’t max out. The highest I remember seeing(I was only looking sporadically) shotcut itself was using like 10gb and Melt was using about the same.

Using the hardware encoder can be “hit and miss”. There are lots of queries on this site about why exports are producing videos with a soundtrack but no visuals, In almost all cases the user had ticked the “Use Hardware Encoding” box. When recommended to untick this box the export was fine.

I tried it last week (h264_qsv) on my Surface Pro, which has an integrated GPU. It shaved about 10% off my export time (compared to lbx264) and produced a video that was about 25% larger. When I exported as hevc_qsv, it performed quite a bit better than libx265. However it depends heavily on what filters you are using.

If you have a graphics card in your computer, rather than a GPU integrated on your CPU chip, you may get better performance. But you will have to do some experiments yourself, comparing export time, file size and video quality. There is no simple answer to your question.

Sorry I made some edits I think while you were typing your response. Am I reading correctly that if I use hardware encoding that it won’t use multiple cores? If so I’m guessing that parallel processing is better for me. I guess all I can do is experiment like you said I know a 20ish minute video last night, with a modified h.264 encoding without hardware encoder or parallel processing took over 2 hours. Memory was getting hit hard but not maxing out, virtually nothing on the GPU, and CPU barely ever broke 30% usage.

Normally I don’t use hardware encoding, but I do tick the parallel processing box. By doing this Shotcut tries to process several frames concurrently, each in a different thread. If you have parallel processing enabled I don’t know what will happen if you also select Hardware Encoding, I’ve never tried it.

Yah I wish we had better documentation on this but I’ll just experiment I guess. Do you happen to know what that checkbox is for next to advanced?

Also you said you had no problem with shotcut hanging will exporting? My shotcut is virtually impossible to interact with while it is encoding, and it’s just shotcut not my PC as a whole. Even after I was done last night I had to shut it down which took a little bit and start it back up to make it usable. What I was doing was fairly involved, I had two video tracks with audio muted, and 3 audio tracks, one primary that ran the length the other two just had music segments and voice overs.

If you hover over it you should get a popup that says: Always start in Advanced mode.

Most of my video editing these last few months has been fairly simple (1 or 2 video tracks with 1 or 2 filters applied, and an audio track with no filter). So I haven’t really been stressing Shotcut on the export side of things.

ahhh I tried that but it was after I had finished my export so that’s probably why it didn’t show up.

I really hope I can get dialed in on what I have going on hwere with performance issues. I get that there are bottlenecks but my PC shouldn’t be struggling this much.

All my systems have SSDs rather than rotating disks - this helps. Also, most of my videos are 1920x1080 and the system I use most has 16GB of memory.

I’m using 4k but have a pcie gen 4 nvme drive, fairly high end system.

If you do try some export experiments I’m sure people would be interested to hear about the results.

I wanted to last night but with shotcut basically locking up I have to restart it and lose the job window with the export time so unfortunately people would just have to take my word for it.

Hey, sorry for such a long delay but I’ve been super busy. Here is a video I made of my experiment.

this is the 2560x1440(16x9) version

This is the 3440x1440(21x9 ultrawide) version

They’re both processing HD at the time of me posting this.

Long story short, Shotcut still acts up on me, but this seems to show that parallel processing is the better way to go and hardware encoding virtually useless.

I’m hoping to get some others in the community involved with this. I was thinking we could create a project of a certain length that has the most common filters and then run the experiment with different PC builds. I have a 5900x CPU, I’d love to see how different the results might be with a 5950x.

1 Like

I decided to run an experiment testing PP and HW,

this is the 2560x1440(16x9) version

This is the 3440x1440(21x9 ultrawide) version

They’re both processing HD at the time of me posting this.

Long story short, Shotcut still acts up on me, but this seems to show that parallel processing is the better way to go and hardware encoding virtually useless.

I’m hoping to get some others in the community involved with this. I was thinking we could create a project of a certain length that has the most common filters and then run the experiment with different PC builds. I have a 5900x CPU, I’d love to see how different the results might be with a 5950x.

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