public async Task DownloadHightQualityAsync(VideoQuality quality, string saveFile)
        {
            System.Windows.MessageBox.Show("Укажите путь к файлу FFMPEG.EXE");

            OpenFileDialog openFile = new OpenFileDialog();

            openFile.Filter = "EXE file(*.exe)|*.exe";

            openFile.ShowDialog();

            textBoxStatus.Text = "Начинаю загрузку видео! Это может быть долго, ожидайте!";

            var streamInfo = streamManifest.GetVideoOnly().Where(s => s.VideoQuality == quality).WithHighestVideoQuality();

            var streamInfo1 = streamManifest.GetAudioOnly().WithHighestBitrate();

            if (streamInfo != null)
            {
                await youtube.Videos.Streams.DownloadAsync(streamInfo, $"{saveFile}.mp4");
            }

            if (streamInfo != null)
            {
                await youtube.Videos.Streams.DownloadAsync(streamInfo1, $"{saveFile}.mp3");
            }

            string args = $"/c {openFile.FileName} -i \"{saveFile}.mp4\" -i \"{saveFile}.mp3\" -shortest {saveFile}_{quality.ToString()}.mp4";

            ProcessStartInfo startInfo = new ProcessStartInfo();

            startInfo.CreateNoWindow   = false;
            startInfo.FileName         = "cmd.exe";
            startInfo.WorkingDirectory = saveFile + ".mp4";
            startInfo.Arguments        = args;

            using (Process exeProcess = Process.Start(startInfo))
            {
                exeProcess.WaitForExit();
            }

            File.Delete(saveFile + ".mp4");
            File.Delete(saveFile + ".mp3");

            textBoxStatus.Text = $"Видео успешно скачано, путь к файлу - > {saveFile}_{quality.ToString()}.mp4";
        }
示例#2
0
        public static List <MediaStreamList> PopulateListGrouped(StreamManifest mediaStreamInfos)
        {
            var mixedStreams = new MediaStreamList();
            var mixed        = mediaStreamInfos.GetMuxed().ToList();

            mixedStreams.Heading = "Mixed Downloads";
            foreach (var item in mixed)
            {
                mixedStreams.Add(item);
            }

            var videoStreams = new MediaStreamList();
            var videoS       = mediaStreamInfos.GetVideoOnly().ToList();

            videoStreams.Heading = "Video Only Downloads";
            foreach (var item in videoS)
            {
                videoStreams.Add(item);
            }

            var audioStreams = new MediaStreamList();
            var audio        = mediaStreamInfos.GetAudioOnly().ToList();

            audioStreams.Heading = "Audio Only Downloads";
            foreach (var item in audio)
            {
                audioStreams.Add(item);
            }

            var list = new List <MediaStreamList> {
                mixedStreams,
                videoStreams,
                audioStreams
            };

            return(list);
        }
示例#3
0
 private IVideoStreamInfo GetVideoStreamInfo(StreamManifest manifest) =>
 manifest.GetVideoOnly().OrderByDescending(streamInfo => streamInfo.Bitrate).First();