PRESETS Incomplete? (Affects YouTube Video Export Function)

I tried to reproduce this, but could not. Could you provide us with the version of Shotcut you are using and exact steps to reproduce?

I want to thank you for reaching out to the forum first before publishing a blog that describes Shotcut in any disappointing light. I am not a Shotcut developer; I’m just a generic but enthusiastic user because Shotcut provides an extreme level of encoding control that few other video editors allow. This is one of Shotcut’s killer features. The people in this forum include television broadcast users, professional production house users, and knowledgeable hobbyists who choose Shotcut in part because of the control it provides over the final output. But as you’ve noticed, once a user steps outside the safe harbors of built-in presets, this level of control does require a good degree of video encoding knowledge (specifically FFmpeg) to be handled productively.

To address your concern, Shotcut leaves certain details out of the encoding preset on purpose. There is a second place some settings are stored called a “video profile” (or “profile” for short) which describes the video settings of the timeline. Details like width, height, frame rate, color space, and progressive vs interlaced are stored in the profile, as these details are needed for the timeline to operate long before any exporting is done. Eventually, when it’s time to export, the preset is able to look up these settings from the profile at run-time, which is why they are not explicitly specified in the preset. Otherwise, a custom preset would have to be created for every hard-coded resolution rather than simply looking up the resolution from the project timeline/profile. If you do create recipes for other users, take into consideration whether you want to explicitly force a user’s video to a specific resolution, or whether you want to encode at whatever resolution their source happens to be. As in, if you force 1080p, you will make the 4K guys unhappy. :slight_smile:

The next topic is the list of encoding options that were not saved with the preset. Shotcut was correct to leave them out given the example you provided – some settings are mutually exclusive (such as variable bitrate vs constant bitrate). If you want to find the settings that influence each field, here’s a way to do it:

Choose any preset, fill it out with the information you’d like to see in a new preset, then click the “+” button directly below the list of presets to add a custom preset. A dialog box will pop up with the settings that will comprise the preset you’re about to save. (You can click Cancel if you are only here for exploratory purposes.) You can quite easily determine which settings go to which encoding features from here. For instance, if you changed the YouTube preset to Interlaced then hit the “+” button, you’d find progressive=0 and top_field_first=1 added to the list. (Obviously, YouTube doesn’t prefer interlaced video being uploaded to it.) You’ll be happy to learn that every encoding setting is captured in that list except hardware encoding configuration and parallel processing, and those aren’t really something for a preset to be enforcing anyway, and definitely aren’t shareable.

I have filled out the missing settings in your list to get you started, noting that some of the settings are best retrieved from the profile rather than being hard-coded:

0 Format f=mp4
1 Resolution (Width) width=1920 ← Profile
2 Resolution (Height) height=1080 ← Profile
3 Aspect ratio aspect=1.77778 ← Profile
4 Frames/sec ← Profile
5 Frame Density (virtual) ← Profile
6 Scan mode progressive=1
7 Field order top_field_first=2
8 Deinterlacer deinterlace_method=yadif
9 Interpolation rescale=bilinear
10 Parallel Processing ← Not captured by preset
11 Codec vcodec=libx264
12 Rate control (video) ← vb/vminrate/vmaxrate/vbufsize (incompatible with VBR/CRF/QP)
13 Quality crf=23
14 GOP g=15
15 Fixed GOP ← sc_threshold=0
16 B frames bf=2
17 Codec threads threads=0
18 Disable video ← video_off=1 plus vn=1
19 Channels channels=2
20 Sample rate ar=44100
21 Codec acodec=aac
22 Rate Control (audio) ← aq=250 or vbr=3 (incompatible with bitrate modes)
23 Bitrate ab=256k
24 Disable audio ← audio_off=1 plus an=1
25 movflags=+faststart
26 preset=fast

As for #25, the +faststart option is correct as-is. We want Shotcut/FFmpeg to apply whatever MOV/MP4 flags they feel are appropriate for the video being created, with the addition of faststart. Using faststart without the “+” would force the other settings to defaults, which could have unexpected consequences (but probably wouldn’t due to how little these flags are used for most MOV/MP4 files). If you read further into that SuperUser page you linked, you’ll find that the answer you’re quoting is incorrect and given further explanation by others.

As for #26, yes, the preset is an adjustable quality level. Tests confirm that medium generally provides better visual quality if a user can afford the encoding time.

Glad to have a contributor! I hope this doesn’t deflate your balloon, but the topic of best export settings has been discussed at length in the forums already. YouTube is such a known entity that only a handful of export options make sense (as in, I’d be surprised if more than five recipes were necessary). Here’s an example thread with recommendations given for users that want the highest quality possible out of YouTube playback yet with reasonable file size and export time:

Let us know if you have any additional questions. Could you provide a link to your blog? Thanks!