private static void RecordAndMux(string ismFileName, string outputDirectory, bool isDeterministic) { string mkvPath = outputDirectory + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(ismFileName) + ".mkv"; string muxStatePath = Path.ChangeExtension(mkvPath, "muxstate"); if (File.Exists(mkvPath) && !File.Exists(muxStatePath)) { Console.WriteLine("Already downloaded MKV: " + mkvPath); Console.WriteLine(); return; } Console.WriteLine("Will mux to MKV: " + mkvPath); string manifestUrl = ismFileName + "/manifest"; Uri manifestUri; string manifestPath; if (manifestUrl.StartsWith("http://") || manifestUrl.StartsWith("https://")) { manifestUri = new Uri(manifestUrl); manifestPath = null; } else if (manifestUrl.StartsWith("file://")) { // Uri.LocalPath converts %20 back to a space etc. (unlike Uri.AbsolutePath). // TODO: Does Uri.LocalPath work on Windows (drive letters, / to \ etc.)? manifestUri = null; manifestPath = new Uri(manifestUrl).LocalPath; } else { manifestUri = null; manifestPath = manifestUrl; } DateTime now = DateTime.Now; MuxingInteractiveState muxingInteractiveState = new MuxingInteractiveState(); Downloader.DownloadAndMux(manifestUri, manifestPath, mkvPath, isDeterministic, new TimeSpan(10, 0, 0), // 10 hours, 0 minutes, 0 seconds for live streams. muxingInteractiveState.SetupStop, muxingInteractiveState.DisplayDuration); muxingInteractiveState.Abort(); Console.Error.WriteLine(); Console.WriteLine("Downloading finished in " + DateTime.Now.Subtract(now).ToString()); }
private static void RecordAndMux(string ismFileName, string outputDirectory, bool isDeterministic) { string mkvPath = outputDirectory + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(ismFileName) + ".mkv"; string muxStatePath = Path.ChangeExtension(mkvPath, "muxstate"); if (File.Exists(mkvPath) && !File.Exists(muxStatePath)) { Console.WriteLine("Already downloaded MKV: " + mkvPath); Console.WriteLine(); return; } Console.WriteLine("Will mux to MKV: " + mkvPath); string manifestUrl = ismFileName + "/manifest"; Uri manifestUri; string manifestPath; if (manifestUrl.StartsWith("http://") || manifestUrl.StartsWith("https://")) { manifestUri = new Uri(manifestUrl); manifestPath = null; } else if (manifestUrl.StartsWith("file://")) { // Uri.LocalPath converts %20 back to a space etc. (unlike Uri.AbsolutePath). // TODO: Does Uri.LocalPath work on Windows (drive letters, / to \ etc.)? manifestUri = null; manifestPath = new Uri(manifestUrl).LocalPath; } else { manifestUri = null; manifestPath = manifestUrl; } DateTime now = DateTime.Now; MuxingInteractiveState muxingInteractiveState = new MuxingInteractiveState(); Downloader.DownloadAndMux(manifestUri, manifestPath, mkvPath, isDeterministic, new TimeSpan(10, 0, 0), // 10 hours, 0 minutes, 0 seconds for live streams. muxingInteractiveState.SetupStop, muxingInteractiveState.DisplayDuration); muxingInteractiveState.Abort(); Console.Error.WriteLine(); Console.WriteLine("Downloading finished in " + DateTime.Now.Subtract(now).ToString()); }