public static async Task MuxOutputVideo(string inputPath, string outVideo) { if (!Config.GetBool("keepAudio") && !Config.GetBool("keepAudio")) { return; } Program.mainForm.SetStatus("Muxing audio/subtitles into video..."); bool muxFromInput = Config.GetInt("audioSubTransferMode") == 0; try { if (muxFromInput) { await FfmpegAudioAndMetadata.MergeStreamsFromInput(inputPath, outVideo, I.current.tempFolder); } else { await FfmpegAudioAndMetadata.MergeAudioAndSubs(outVideo, I.current.tempFolder); // Merge from audioFile into outVideo } } catch (Exception e) { Logger.Log("Failed to merge audio/subtitles with output video!"); Logger.Log("MergeAudio() Exception: " + e.Message, true); } }
public static async Task MuxOutputVideo(string inputPath, string outVideo, bool shortest = false, bool showLog = true) { if (!File.Exists(outVideo)) { I.Cancel($"No video was encoded!\n\nFFmpeg Output:\n{AvProcess.lastOutputFfmpeg}"); return; } if (!Config.GetBool(Config.Key.keepAudio) && !Config.GetBool(Config.Key.keepAudio)) { return; } if (showLog) { Program.mainForm.SetStatus("Muxing audio/subtitles into video..."); } if (I.current.inputIsFrames) { Logger.Log("Skipping muxing from input step as there is no input video, only frames.", true); return; } try { await FfmpegAudioAndMetadata.MergeStreamsFromInput(inputPath, outVideo, I.current.tempFolder, shortest); } catch (Exception e) { Logger.Log("Failed to merge audio/subtitles with output video!", !showLog); Logger.Log("MergeAudio() Exception: " + e.Message, true); } }