private static async Task <string> DownloadMpdStreams(string url, string destinationDir) { var dir = new DirectoryInfo(destinationDir); if (dir.Exists) { dir.Delete(recursive: true); } var downloader = new MpdDownloader(new Uri(url), dir.FullName); return(await downloader.Download()); }
static async Task MainAsync(string[] args) { string dir = "envivio"; string mpdUrl = "http://10.5.5.7/q/p/userapi/streams/32/mpd"; //"http://10.5.7.207/userapi/streams/30/mpd"; //"http://10.5.7.207/userapi/streams/11/mpd?start_time=1458816642&stop_time=1458819642"; //"http://dash.edgesuite.net/envivio/EnvivioDash3/manifest.mpd"; //"http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd"; var stopwatch = Stopwatch.StartNew(); var downloader = new MpdDownloader(new Uri(mpdUrl), dir); var trackRepresentation = downloader.GetTracksFor(TrackContentType.Video).First().TrackRepresentations.OrderByDescending(r => r.Bandwidth).First(); var prepareTime = stopwatch.Elapsed; var chunks = //Directory.GetFiles(@"C:\Users\Alexander\Work\Github\qoollo\SharpDashTools\DashTools.Samples\bin\Debug\envivio", "*.mp4") //.Select(f => Path.GetFileName(f) == "make_chunk_path_longer_32.mp4" // ? new Mp4InitFile(Path.Combine("envivio", Path.GetFileName(f))) // : new Mp4File(Path.Combine("envivio", Path.GetFileName(f)))) // .ToArray(); await downloader.Download(trackRepresentation, TimeSpan.FromMinutes(60), TimeSpan.FromMinutes(60 + 60 * 6 / 6)); var downloadTime = stopwatch.Elapsed - prepareTime; var ffmpeg = new FFMpegConverter(); ffmpeg.LogReceived += (s, e) => Console.WriteLine(e.Data); var combined = downloader.CombineChunksFast(chunks, s => ffmpeg.Invoke(s)); //downloader.CombineChunks(chunks, s => ffmpeg.Invoke(s)); var combineTime = stopwatch.Elapsed - prepareTime - downloadTime; if (!ffmpeg.Stop()) { ffmpeg.Abort(); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("================================================================"); Console.WriteLine("Prepared in {0} s", prepareTime.TotalSeconds); Console.WriteLine("Downloaded {0} chunks in {1} s", chunks.Count(), downloadTime.TotalSeconds); Console.WriteLine("Combined in {0} s", combineTime.TotalSeconds); Console.WriteLine("Total: {0} s", (prepareTime + downloadTime + combineTime).TotalSeconds); Console.ReadLine(); return; string mpdFilePath = //@"C:\Users\Alexander\AppData\Local\Temp\note_5_video_5_source_2-index_00000\manifest.mpd"; await DownloadMpdStreams(mpdUrl, dir); await ConcatStreams(mpdFilePath, Path.Combine(Path.GetDirectoryName(mpdFilePath), "output.mp4")); }
static async Task MainAsync(string[] args) { string dir = "envivio"; string mpdUrl = "http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd"; //"http://10.5.7.207/userapi/streams/11/mpd?start_time=1458816642&stop_time=1458819642"; //"http://dash.edgesuite.net/envivio/EnvivioDash3/manifest.mpd"; var downloader = new MpdDownloader(new Uri(mpdUrl), dir); var trackRepresentation = downloader.GetTracksFor(TrackContentType.Video).First().TrackRepresentations.OrderByDescending(r => r.Bandwidth).First(); var path = await downloader.Download(trackRepresentation, TimeSpan.Zero, TimeSpan.FromSeconds(60)); return; string mpdFilePath = //@"C:\Users\Alexander\AppData\Local\Temp\note_5_video_5_source_2-index_00000\manifest.mpd"; await DownloadMpdStreams(mpdUrl, dir); await ConcatStreams(mpdFilePath, Path.Combine(Path.GetDirectoryName(mpdFilePath), "output.mp4")); }