Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
 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());
 }