YouTubeExtractorYouTube 視頻音軌提取
YoutubeExtractor 是一個針對 .NET 的,使用 C# 編寫的庫,其可以讓你從 YouTube 下載視頻和/或從這些視頻中提取它們的音軌(音軌提取目前只可用于 flash 視頻)。
目標平臺
-
.NET Framework 3.5 或更高版本
-
Windows Phone 8
-
WinRT
-
Xamarin.Android
-
Xamarin.iOS
注意:Windows Phone 8,WinRT,Xamarin.Anroid 以及 Xamarin.iOS 僅僅支持下載 URLs 的提取。
事例代碼
獲取下載 URLs
// Our test youtube link string link = "insert youtube link"; /* * 獲取可用的視頻格式 * 我們將會在視頻和音頻下載事例中使用這些格式 */ IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(link);
下載視頻
/*
* 選擇具有 360p 分辨率的第一個發(fā)現(xiàn)的 .mp4 視頻
*/
VideoInfo video = videoInfos
.First(info => info.VideoType == VideoType.Mp4 && info.Resolution == 360);
/*
* If the video has a decrypted signature, decipher it
*/
if (video.RequiresDecryption)
{
DownloadUrlResolver.DecryptDownloadUrl(video);
}
/*
* 創(chuàng)建視頻下載器
* 第一個參數(shù)為要下載的視頻
* 第二個參數(shù)為要將視頻文件保存到的路徑
*/
var videoDownloader = new VideoDownloader(video, Path.Combine("D:/Downloads", video.Title + video.VideoExtension));
// Register the ProgressChanged event and print the current progress
videoDownloader.DownloadProgressChanged += (sender, args) => Console.WriteLine(args.ProgressPercentage);
/*
* Execute the video downloader.
* For GUI applications note, that this method runs synchronously.
*/
videoDownloader.Execute();
下載音軌
/*
* 我們想要具有最高音頻質(zhì)量的第一個可進行提取的視頻
*/
VideoInfo video = videoInfos
.Where(info => info.CanExtractAudio)
.OrderByDescending(info => info.AudioBitrate)
.First();
/*
* 如果視頻有一個解密簽名,解碼它
*/
if (video.RequiresDecryption)
{
DownloadUrlResolver.DecryptDownloadUrl(video);
}
/*
* 創(chuàng)建音頻下載器
* 第一個參數(shù)為要從中提取音頻的視頻
* 第二個參數(shù)為要將音頻文件保存到的路徑
*/
var audioDownloader = new AudioDownloader(video, Path.Combine("D:/Downloads", video.Title + video.AudioExtension));
// Register the progress events. We treat the download progress as 85% of the progress and the extraction progress only as 15% of the progress,
// because the download will take much longer than the audio extraction.
audioDownloader.DownloadProgressChanged += (sender, args) => Console.WriteLine(args.ProgressPercentage * 0.85);
audioDownloader.AudioExtractionProgressChanged += (sender, args) => Console.WriteLine(85 + args.ProgressPercentage * 0.15);
/*
* 執(zhí)行音頻下載器
* 對于 GUI 應用程序來說,該方法會異步運行
*/
audioDownloader.Execute();評論
圖片
表情
