Skip to content

Commit d46346f

Browse files
authored
Improved Profiles (400+ Export Profiles, New Profile UI, and more) (#5116)
* Fixing invalid legacy profiles (invalid sample ratios, and invalid name) * Adding initial profile definitions, which will be used to generate over 400 unique profile resolution + frame rates. These include the ATSC standards, Sony D1, CIF, Blu-ray, DVD, DVB, HDV, VCD/SVCD, Facebook/Instagram, NTSC, PAL, and VGA. * Fixing legacy profile for square quarter wide, to use more accurate 16x9 size * Updating JSON profile definitions with sample aspect ratios, for anamorphic sizes, and initial checkin of manage.py script to help parse, test, and update these formats for the future. * Updating ATSC and VGA profiles to fix some invalid aspect ratios * Moving old legacy export profiles into their own legacy directory * Adding initial generated export profiles (364) * Improve export preset manage.py script, to find legacy profiles, and generate valid export presets from our JSON definitions * Migrate default-profile on launch of OpenShot - search legacy profiles and find equivalent new preset * Updating Profile and Preference dialogs, to display the Profile.LongNameWithDesc() function - standardizing profile names * Migrate new profile manage.py script to use libopenshot Profile class for storing and processing * Updating profile naming scheme to explude "anomorphic", and to use the Key() from libopenshot::Profile class. Re-generating all profiles. * Fixing issue with Profile interlace detection and updating profile files * Fixing issue with Profile interlace detection in manage.py script. Also, adding initial Presets update logic into manage.py script. * Simplifying profile definitions with the purpose of more uniform generated titles * Big update to profile manage.py script, to allow for identification of Anamorphic formats (and adding Note automatically), and better generation of profiles with a more uniform description. * Updating actual profile files with modified descriptions / more uniform * Moving merged profiles into legacy folder * Adding a couple new FPS for vertical FHD profiles * Fixed manage.py script to correctly compare legacy profiles to new generated profiles * Fix CIF definitions to no longer combine NTSC and PAL formats on a single definition, and regenerate affected profiles * Adding 18 new generated profiles * Rename Square to SQ in profiles. Update profile naming logic in manage.py script, to move NTSC/PAL/SD/HD to the front of the description, and Anamorphic to the end of the description. * Update profiles with updated description formatting * Update profile manage.py script to correctly replace preset.xml profile names, and correctly order FHD, UHD, and other labels to the front of the description * Fix bug in manage.py script for profiles, to correctly output the DAR ratio, and fixed vertical resolutiosn to use the original width (i.e. 720p Vertical instead of 1280p Vertical), and regenerating all profiles * Updating profile descriptions to use 2.5K and 3K labels for certain resolutions, and regenerating affected profiles * Updating presets to use new profile description names * Initial commit of new Profile treeview and UI, which is filterable/searchable. Now requires user to click "Ok" button to prevent accidental changes to Profile. * - Remove caching settings from New/Open projects - and move it to the TimelineSync object (where the JSON is applied or loaded in libopenshot) - Add playback caching setting when Profile dialog changes profile in accept() method * - integrating new Profile UI with Export UI - separate Profile UI from default project id, and allow it to be more generic - Allow profile to initially select any profile by description or Key() - Correctly apply the profile of a loaded project, and fallback to a default if not found * Add double click handler to selecting a new Profile * Use same profile format for Preferences and Export dialogs. * - Allow export presets to include empty audio and video codecs, as well as 0 sample rate and 0 channels (indicating missing video or audio tracks) - Allow up to 384000 sample rate (and 0) - Update GIF preset to remove audio info - Update MP3 preset to remove video info - Improve manage.py profile script, to auto-generate our *.rst profile documenation (list of presets and profiles) - Update profiles documentation (presets list and profiles list) * Fixing some Codacy nitpicks: - Removing unused variables - Removing unreachable code - Wrapping some long code lines - Removing unneeded elif * Fixing some Codacy nitpicks: - Replaced minidomxml with defusedxml (safer) - Removed unneeded else's - Removed unneeded overloaded method - Removed unused key in dict loop - Fixed some long lines that needed to wrap * Fixing some Codacy nitpicks: - Avoid using built-in variable - Removing unneeded elif - Reduce complexity of Exception string * Adding the adjusted width after applying SAR/PAR to our documentation and profiles.rst file - to help demonstrate how SAR is applied to the final display resolution * Updating profiles.rst documentation and screenshots which have changed - related to our new Profiles UI. Also tweaking the column widths of the generated profile list syntax. * Experiment with file renaming for Windows gitlab runner issues - removing these profile files * Re-generating all profiles, with updated Key() / filenames - to exclude the ":" character, since Windows has issues with this character in file paths. * Updating DVD presets to use ac3 audio, since aac seems invalid on newer FFmpeg versions * - Wrapping profile changing into undo/redo transaction - Fixing bug when rescaling FPS to a new FPS, to prevent undo/redo history from being erased
1 parent 369b68d commit d46346f

File tree

560 files changed

+7022
-695
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

560 files changed

+7022
-695
lines changed

doc/images/export-profiles.jpg

31.9 KB
Loading

doc/images/export-simple.jpg

-10.6 KB
Loading

doc/images/profiles-dialog.jpg

177 KB
Loading

doc/images/profiles.jpg

34.2 KB
Loading

doc/profiles.rst

+708-348
Large diffs are not rendered by default.

src/classes/project_data.py

+68-18
Original file line numberDiff line numberDiff line change
@@ -285,39 +285,82 @@ def new(self):
285285

286286
# Get default profile
287287
s = get_app().get_settings()
288-
default_profile = s.get("default-profile")
288+
default_profile_desc = s.get("default-profile")
289+
290+
# Get profile (if any)
291+
profile = self.get_profile(profile_desc=default_profile_desc)
292+
if not profile:
293+
# Fallback, in case of missing/invalid default profile
294+
profile = self.get_profile(profile_desc="HD 720p 30 fps")
295+
296+
# Update default profile (if it changed)
297+
if profile and default_profile_desc != profile.info.description:
298+
log.info(f"Updating default-profile from legacy `{default_profile_desc}` to `{profile.info.description}`.")
299+
s.set("default-profile", profile.info.description)
300+
301+
# Apply default audio playback settings to this data structure
302+
self.apply_default_audio_settings()
303+
304+
# Set default project ID
305+
self._data["id"] = self.generate_id()
306+
307+
def get_profile(self, profile_desc=None, profile_key=None):
308+
"""Attempt to find a specific profile"""
309+
profile = None
310+
311+
# Loop through legacy profiles
312+
LEGACY_PROFILE_PATH = os.path.join(info.PROFILES_PATH, "legacy")
313+
legacy_profile = None
314+
for legacy_filename in os.listdir(LEGACY_PROFILE_PATH):
315+
legacy_profile_path = os.path.join(LEGACY_PROFILE_PATH, legacy_filename)
316+
try:
317+
# Load Profile and append description
318+
temp_profile = openshot.Profile(legacy_profile_path)
319+
if profile_desc == temp_profile.info.description:
320+
legacy_profile = temp_profile
321+
break
322+
except RuntimeError:
323+
# Ignore legacy parsing errors
324+
pass
289325

290326
# Loop through profiles
291327
profile_dirs = [info.USER_PROFILES_PATH, info.PROFILES_PATH]
292328
available_dirs = [f for f in profile_dirs if os.path.exists(f)]
293329
for profile_folder in available_dirs:
294-
for file in os.listdir(profile_folder):
330+
for file in reversed(sorted(os.listdir(profile_folder))):
295331
profile_path = os.path.join(profile_folder, file)
332+
if os.path.isdir(profile_path):
333+
continue
296334
try:
297335
# Load Profile and append description
298-
profile = openshot.Profile(profile_path)
299-
300-
if default_profile == profile.info.description:
301-
log.info("Setting default profile to %s" % profile.info.description)
302-
303-
# Update default profile
304-
self._data["profile"] = profile.info.description
305-
self._data["width"] = profile.info.width
306-
self._data["height"] = profile.info.height
307-
self._data["fps"] = {"num": profile.info.fps.num, "den": profile.info.fps.den}
308-
self._data["display_ratio"] = {"num": profile.info.display_ratio.num, "den": profile.info.display_ratio.den}
309-
self._data["pixel_ratio"] = {"num": profile.info.pixel_ratio.num, "den": profile.info.pixel_ratio.den}
336+
temp_profile = openshot.Profile(profile_path)
337+
338+
if profile_desc == temp_profile.info.description:
339+
profile = self.apply_profile(temp_profile)
340+
break
341+
if legacy_profile and legacy_profile.Key() == temp_profile.Key():
342+
# Switch from legacy profile to new profile
343+
profile = self.apply_profile(temp_profile)
310344
break
311345

312346
except RuntimeError as e:
313347
# This exception occurs when there's a problem parsing the Profile file - display a message and continue
314348
log.error("Failed to parse file '%s' as a profile: %s" % (profile_path, e))
315349

316-
# Apply default audio playback settings to this data structure
317-
self.apply_default_audio_settings()
350+
return profile
318351

319-
# Set default project ID
320-
self._data["id"] = self.generate_id()
352+
def apply_profile(self, profile):
353+
"""Apply a specific profile to the current project data"""
354+
log.info("Setting profile to %s" % profile.info.description)
355+
356+
# Update default profile
357+
self._data["profile"] = profile.info.description
358+
self._data["width"] = profile.info.width
359+
self._data["height"] = profile.info.height
360+
self._data["fps"] = {"num": profile.info.fps.num, "den": profile.info.fps.den}
361+
self._data["display_ratio"] = {"num": profile.info.display_ratio.num, "den": profile.info.display_ratio.den}
362+
self._data["pixel_ratio"] = {"num": profile.info.pixel_ratio.num, "den": profile.info.pixel_ratio.den}
363+
return profile
321364

322365
def load(self, file_path, clear_thumbnails=True):
323366
""" Load project from file """
@@ -386,6 +429,13 @@ def load(self, file_path, clear_thumbnails=True):
386429
# Upgrade any data structures
387430
self.upgrade_project_data_structures()
388431

432+
# Get profile (if any)
433+
project_profile_desc = self._data.get("profile", "HD 720p 30 fps")
434+
profile = self.get_profile(profile_desc=project_profile_desc)
435+
if not profile:
436+
# Fallback, in case of missing/invalid default profile
437+
profile = self.get_profile(profile_desc="HD 720p 30 fps")
438+
389439
# Apply default audio playback settings to this data structure
390440
self.apply_default_audio_settings()
391441

src/classes/timeline.py

+9
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,14 @@ def changed(self, action):
7878
"layers", "scale", "profile"]:
7979
return
8080

81+
# Disable video caching temporarily
82+
openshot.Settings.Instance().ENABLE_PLAYBACK_CACHING = False
83+
8184
try:
8285
if action.type == "load":
86+
# Clear any selections in UI (since we are clearing the timeline)
87+
self.window.clearSelections()
88+
8389
# Clear any existing clips & effects (free memory)
8490
self.timeline.Close()
8591
self.timeline.Clear()
@@ -105,6 +111,9 @@ def changed(self, action):
105111
log.info("Error applying JSON to timeline object in libopenshot: %s. %s" %
106112
(e, action.json(is_array=True)))
107113

114+
# Enable video caching
115+
openshot.Settings.Instance().ENABLE_PLAYBACK_CACHING = True
116+
108117
def MaxSizeChangedCB(self, new_size):
109118
"""Callback for max sized change (i.e. max size of video widget)"""
110119
while not self.window.initialized:

src/classes/updates.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -354,13 +354,14 @@ def dispatch_action(self, action):
354354
self.update_watchers()
355355

356356
# Perform load action (loading all project data), clearing history for taking a new path
357-
def load(self, values):
357+
def load(self, values, reset_history=True):
358358
""" Load all project data via an UpdateAction into the UpdateManager
359359
(this action will then be distributed to all listeners) """
360360

361361
self.last_action = UpdateAction('load', '', values)
362-
self.redoHistory.clear()
363-
self.actionHistory.clear()
362+
if reset_history:
363+
self.redoHistory.clear()
364+
self.actionHistory.clear()
364365
self.pending_action = None
365366
self.dispatch_action(self.last_action)
366367

src/presets/avchd.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
med=""
1818
high="256 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>HD 1080i 25 fps</projectprofile>
21-
<projectprofile>HD 1080i 30 fps</projectprofile>
22-
<projectprofile>HD 1080p 25 fps</projectprofile>
20+
<projectprofile>FHD PAL 1080i 25 fps</projectprofile>
21+
<projectprofile>FHD 1080i 30 fps</projectprofile>
22+
<projectprofile>FHD PAL 1080p 25 fps</projectprofile>
2323
</export-option>

src/presets/dvd_ntsc.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<title translatable="True">DVD-NTSC</title>
66
<videoformat>dvd</videoformat>
77
<videocodec>mpeg2video</videocodec>
8-
<audiocodec>aac</audiocodec>
8+
<audiocodec>ac3</audiocodec>
99
<audiochannels>2</audiochannels>
1010
<audiochannellayout>3</audiochannellayout>
1111
<videobitrate
@@ -17,6 +17,6 @@
1717
med="192 kb/s"
1818
high="256 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>DV/DVD NTSC</projectprofile>
21-
<projectprofile>DV/DVD Widescreen NTSC</projectprofile>
20+
<projectprofile>NTSC SD Anamorphic 480i 29.97 fps</projectprofile>
21+
<projectprofile>NTSC SD Widescreen Anamorphic 480i 29.97 fps</projectprofile>
2222
</export-option>

src/presets/dvd_pal.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<title translatable="True">DVD-PAL</title>
66
<videoformat>dvd</videoformat>
77
<videocodec>mpeg2video</videocodec>
8-
<audiocodec>aac</audiocodec>
8+
<audiocodec>ac3</audiocodec>
99
<audiochannels>2</audiochannels>
1010
<audiochannellayout>3</audiochannellayout>
1111
<videobitrate
@@ -17,6 +17,6 @@
1717
med="192 kb/s"
1818
high="256 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>DV/DVD PAL</projectprofile>
21-
<projectprofile>DV/DVD Widescreen PAL</projectprofile>
20+
<projectprofile>PAL SD Anamorphic 576i 25 fps</projectprofile>
21+
<projectprofile>PAL SD Widescreen Anamorphic 576i 25 fps</projectprofile>
2222
</export-option>

src/presets/flickr_HD.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
<samplerate>48000</samplerate>
2020
<projectprofile>HD 720p 25 fps</projectprofile>
2121
<projectprofile>HD 720p 29.97 fps</projectprofile>
22-
<projectprofile>HD 1080p 25 fps</projectprofile>
23-
<projectprofile>HD 1080p 29.97 fps</projectprofile>
22+
<projectprofile>FHD PAL 1080p 25 fps</projectprofile>
23+
<projectprofile>FHD 1080p 29.97 fps</projectprofile>
2424
</export-option>

src/presets/format_gif.xml

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
<export-to>Video Only</export-to>
77
<videoformat>gif</videoformat>
88
<videocodec>gif</videocodec>
9-
<audiocodec>aac</audiocodec>
10-
<audiochannels>2</audiochannels>
11-
<audiochannellayout>3</audiochannellayout>
9+
<audiocodec></audiocodec>
10+
<audiochannels>0</audiochannels>
11+
<audiochannellayout>4</audiochannellayout>
1212
<videobitrate
1313
low="384 kb/s"
1414
med="5 Mb/s"
1515
high="15.00 Mb/s"></videobitrate>
1616
<audiobitrate
17-
low="96 kb/s"
18-
med="128 kb/s"
19-
high="192 kb/s"></audiobitrate>
20-
<samplerate>48000</samplerate>
17+
low="0 kb/s"
18+
med="0 kb/s"
19+
high="0 kb/s"></audiobitrate>
20+
<samplerate>0</samplerate>
2121
</export-option>

src/presets/format_mp3.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
<title translatable="True">MP3 (audio only)</title>
66
<export-to>Audio Only</export-to>
77
<videoformat>mp3</videoformat>
8-
<videocodec>mpeg2video</videocodec>
8+
<videocodec></videocodec>
99
<audiocodec>libmp3lame</audiocodec>
1010
<audiochannels>2</audiochannels>
1111
<audiochannellayout>3</audiochannellayout>
1212
<videobitrate
13-
low="384 kb/s"
14-
med="5 Mb/s"
15-
high="15.00 Mb/s"></videobitrate>
13+
low="0 kb/s"
14+
med="0 Mb/s"
15+
high="0 Mb/s"></videobitrate>
1616
<audiobitrate
1717
low="96 kb/s"
1818
med="128 kb/s"

src/presets/instagram.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
<samplerate>48000</samplerate>
2020
<projectprofile>HD 720p 25 fps</projectprofile>
2121
<projectprofile>HD 720p 30 fps</projectprofile>
22-
<projectprofile>HD 1080p 25 fps</projectprofile>
23-
<projectprofile>HD 1080p 30 fps</projectprofile>
22+
<projectprofile>FHD PAL 1080p 25 fps</projectprofile>
23+
<projectprofile>FHD 1080p 30 fps</projectprofile>
2424
<projectprofile>HD Vertical 720p 25 fps</projectprofile>
2525
<projectprofile>HD Vertical 720p 30 fps</projectprofile>
26-
<projectprofile>HD Vertical 1080p 25 fps</projectprofile>
27-
<projectprofile>HD Vertical 1080p 30 fps</projectprofile>
26+
<projectprofile>FHD Vertical 1080p 25 fps</projectprofile>
27+
<projectprofile>FHD Vertical 1080p 30 fps</projectprofile>
2828
</export-option>

src/presets/metacafe.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717
med="256 kb/s"
1818
high="320 kb/s"></audiobitrate>
1919
<samplerate>44100</samplerate>
20-
<projectprofile>VGA NTSC</projectprofile>
20+
<projectprofile>NTSC SD SQ VGA 480p 29.97 fps</projectprofile>
2121
</export-option>

src/presets/nokia_nHD.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717
med="256 kb/s"
1818
high="320 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>Mobile 360p</projectprofile>
20+
<projectprofile>NTSC SD 1/4 QVGA 240p 29.97 fps</projectprofile>
2121
</export-option>

src/presets/picasa.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717
med="256 kb/s"
1818
high="320 kb/s"></audiobitrate>
1919
<samplerate>44100</samplerate>
20-
<projectprofile>VGA NTSC</projectprofile>
20+
<projectprofile>NTSC SD SQ VGA 480p 29.97 fps</projectprofile>
2121
</export-option>

src/presets/twitter.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
<samplerate>48000</samplerate>
2020
<projectprofile>HD 720p 25 fps</projectprofile>
2121
<projectprofile>HD 720p 30 fps</projectprofile>
22-
<projectprofile>HD 1080p 25 fps</projectprofile>
23-
<projectprofile>HD 1080p 30 fps</projectprofile>
22+
<projectprofile>FHD PAL 1080p 25 fps</projectprofile>
23+
<projectprofile>FHD 1080p 30 fps</projectprofile>
2424
<projectprofile>HD Vertical 720p 25 fps</projectprofile>
2525
<projectprofile>HD Vertical 720p 30 fps</projectprofile>
26-
<projectprofile>HD Vertical 1080p 25 fps</projectprofile>
27-
<projectprofile>HD Vertical 1080p 30 fps</projectprofile>
26+
<projectprofile>FHD Vertical 1080p 25 fps</projectprofile>
27+
<projectprofile>FHD Vertical 1080p 30 fps</projectprofile>
2828
</export-option>

src/presets/vimeo.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
med="256 kb/s"
1818
high="320 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>VGA NTSC</projectprofile>
21-
<projectprofile>VGA Widescreen NTSC</projectprofile>
20+
<projectprofile>NTSC SD SQ VGA 480p 29.97 fps</projectprofile>
21+
<projectprofile>NTSC SD Wide FWVGA 480p 29.97 fps</projectprofile>
2222
</export-option>

src/presets/vimeo_HD.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
<projectprofile>HD 720p 25 fps</projectprofile>
2323
<projectprofile>HD 720p 29.97 fps</projectprofile>
2424
<projectprofile>HD 720p 30 fps</projectprofile>
25-
<projectprofile>HD 1080p 23.98 fps</projectprofile>
26-
<projectprofile>HD 1080p 24 fps</projectprofile>
27-
<projectprofile>HD 1080p 25 fps</projectprofile>
28-
<projectprofile>HD 1080p 29.97 fps</projectprofile>
29-
<projectprofile>HD 1080p 30 fps</projectprofile>
25+
<projectprofile>FHD 1080p 23.98 fps</projectprofile>
26+
<projectprofile>FHD 1080p 24 fps</projectprofile>
27+
<projectprofile>FHD PAL 1080p 25 fps</projectprofile>
28+
<projectprofile>FHD 1080p 29.97 fps</projectprofile>
29+
<projectprofile>FHD 1080p 30 fps</projectprofile>
3030
</export-option>

src/presets/wikipedia.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717
med="128 kb/s"
1818
high="192 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>QVGA 29.97 fps</projectprofile>
20+
<projectprofile>NTSC SD 1/4 QVGA 240p 29.97 fps</projectprofile>
2121
</export-option>

src/presets/xbox360.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
med="256 kb/s"
1818
high="320 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>DV/DVD Widescreen NTSC</projectprofile>
20+
<projectprofile>NTSC SD Widescreen Anamorphic 480i 29.97 fps</projectprofile>
2121
<projectprofile>HD 720p 29.97 fps</projectprofile>
22-
<projectprofile>HD 1080p 29.97 fps</projectprofile>
22+
<projectprofile>FHD 1080p 29.97 fps</projectprofile>
2323
</export-option>

src/presets/youtube.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717
med="256 kb/s"
1818
high="320 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>VGA NTSC</projectprofile>
21-
<projectprofile>VGA Widescreen NTSC</projectprofile>
20+
<projectprofile>NTSC SD SQ VGA 480p 29.97 fps</projectprofile>
21+
<projectprofile>NTSC SD Wide FWVGA 480p 29.97 fps</projectprofile>
2222
<projectprofile>HD 720p 23.98 fps</projectprofile>
2323
<projectprofile>HD 720p 24 fps</projectprofile>
2424
<projectprofile>HD 720p 25 fps</projectprofile>
2525
<projectprofile>HD 720p 29.97 fps</projectprofile>
2626
<projectprofile>HD 720p 30 fps</projectprofile>
27-
<projectprofile>HD 720p 50 fps</projectprofile>
27+
<projectprofile>PAL HD 720p 50 fps</projectprofile>
2828
<projectprofile>HD 720p 59.94 fps</projectprofile>
2929
<projectprofile>HD 720p 60 fps</projectprofile>
3030
<projectprofile>HD Vertical 720p 23.98 fps</projectprofile>

src/presets/youtube_2K.xml

+8-8
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
med="256 kb/s"
1818
high="320 kb/s"></audiobitrate>
1919
<samplerate>48000</samplerate>
20-
<projectprofile>2.5K QHD 1440p 23.98 fps</projectprofile>
21-
<projectprofile>2.5K QHD 1440p 24 fps</projectprofile>
22-
<projectprofile>2.5K QHD 1440p 25 fps</projectprofile>
23-
<projectprofile>2.5K QHD 1440p 29.97 fps</projectprofile>
24-
<projectprofile>2.5K QHD 1440p 30 fps</projectprofile>
25-
<projectprofile>2.5K QHD 1440p 50 fps</projectprofile>
26-
<projectprofile>2.5K QHD 1440p 59.94 fps</projectprofile>
27-
<projectprofile>2.5K QHD 1440p 60 fps</projectprofile>
20+
<projectprofile>2.5K WQHD 1440p 23.98 fps</projectprofile>
21+
<projectprofile>2.5K WQHD 1440p 24 fps</projectprofile>
22+
<projectprofile>2.5K WQHD 1440p 25 fps</projectprofile>
23+
<projectprofile>2.5K WQHD 1440p 29.97 fps</projectprofile>
24+
<projectprofile>2.5K WQHD 1440p 30 fps</projectprofile>
25+
<projectprofile>2.5K WQHD 1440p 50 fps</projectprofile>
26+
<projectprofile>2.5K WQHD 1440p 59.94 fps</projectprofile>
27+
<projectprofile>2.5K WQHD 1440p 60 fps</projectprofile>
2828
</export-option>

0 commit comments

Comments
 (0)