diff --git a/src/App.tsx b/src/App.tsx index 384e2f4..822245c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -59,6 +59,7 @@ export default function App({ children }: { children: React.ReactNode }) { const PROXY_URL = useSettingsPageStatesStore(state => state.settings.proxy_url); const VIDEO_FORMAT = useSettingsPageStatesStore(state => state.settings.video_format); const AUDIO_FORMAT = useSettingsPageStatesStore(state => state.settings.audio_format); + const ALWAYS_REENCODE_VIDEO = useSettingsPageStatesStore(state => state.settings.always_reencode_video); const EMBED_VIDEO_METADATA = useSettingsPageStatesStore(state => state.settings.embed_video_metadata); const EMBED_AUDIO_METADATA = useSettingsPageStatesStore(state => state.settings.embed_audio_metadata); const EMBED_AUDIO_THUMBNAIL = useSettingsPageStatesStore(state => state.settings.embed_audio_thumbnail); @@ -187,10 +188,18 @@ export default function App({ children }: { children: React.ReactNode }) { if (fileType !== 'unknown' && (VIDEO_FORMAT !== 'auto' || AUDIO_FORMAT !== 'auto')) { if (VIDEO_FORMAT !== 'auto' && fileType === 'video+audio') { - args.push('--merge-output-format', VIDEO_FORMAT); + if (ALWAYS_REENCODE_VIDEO) { + args.push('--recode-video', VIDEO_FORMAT); + } else { + args.push('--merge-output-format', VIDEO_FORMAT); + } } if (VIDEO_FORMAT !== 'auto' && fileType === 'video') { + if (ALWAYS_REENCODE_VIDEO) { + args.push('--recode-video', VIDEO_FORMAT); + } else { args.push('--remux-video', VIDEO_FORMAT); + } } if (AUDIO_FORMAT !== 'auto' && fileType === 'audio') { args.push('--extract-audio', '--audio-format', AUDIO_FORMAT); diff --git a/src/pages/settings.tsx b/src/pages/settings.tsx index c0473a9..a354447 100644 --- a/src/pages/settings.tsx +++ b/src/pages/settings.tsx @@ -64,6 +64,7 @@ export default function SettingsPage() { const proxyUrl = useSettingsPageStatesStore(state => state.settings.proxy_url); const videoFormat = useSettingsPageStatesStore(state => state.settings.video_format); const audioFormat = useSettingsPageStatesStore(state => state.settings.audio_format); + const alwaysReencodeVideo = useSettingsPageStatesStore(state => state.settings.always_reencode_video); const embedVideoMetadata = useSettingsPageStatesStore(state => state.settings.embed_video_metadata); const embedAudioMetadata = useSettingsPageStatesStore(state => state.settings.embed_audio_metadata); const embedAudioThumbnail = useSettingsPageStatesStore(state => state.settings.embed_audio_thumbnail); @@ -452,6 +453,15 @@ export default function SettingsPage() { +
Instead of remuxing (simple container change) always re-encode the video to the target format with best compatible codecs (better compatibility, takes longer processing time)
+