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