it-swarm.com.de

C # Laden Sie den Ton eines Youtube-Videos herunter

Ich kann ein Video von YouTube herunterladen, aber ich möchte nur den Ton. Wie kann ich das machen?

Code, den ich zum Herunterladen des Videos habe (mithilfe von VideoLibrary):

        YouTube youtube = YouTube.Default;
        Video vid = youtube.GetVideo(txt_youtubeurl.Text);
        System.IO.File.WriteAllBytes(source + vid.FullName, vid.GetBytes());
7
Josh C

Installieren Sie die NuGet packages: MediaToolkit und VideoLibrary, damit Sie die Konvertierung nach Dateierweiterung durchführen können.

var source = @"<your destination folder>";
var youtube = YouTube.Default;
var vid = youtube.GetVideo("<video url>");
File.WriteAllBytes(source + vid.FullName, vid.GetBytes());

var inputFile = new MediaFile { Filename = source + vid.FullName };
var outputFile = new MediaFile { Filename = $"{source + vid.FullName}.mp3" };

using (var engine = new Engine())
{
    engine.GetMetadata(inputFile);

    engine.Convert(inputFile, outputFile);
}
17

Der obige Code funktioniert fantastisch. Sie müssen das Video nicht herunterladen, bevor ich dieses Verfahren erstellt habe. Wenn Neulinge wie ich es sehen, ist die Verwendung einfacher. Siehe oben, ob Nuget-Pakete benötigt werden.

beispiel URL: https://www.youtube.com/watch?v=lzm5llVmR2E Beispielpfad benötigt nur einen Pfad zum Speichern der Datei unter. . Fügen Sie einfach den Namen der MP3-Datei hinzu Datei zum Speichern

Hoffe, das hilft jemandem, dem ich diesen Code getestet habe.

private void SaveMP3(string SaveToFolder, string VideoURL, string MP3Name)
    {
        var source = @SaveToFolder;
        var youtube = YouTube.Default;
        var vid = youtube.GetVideo(VideoURL);
        File.WriteAllBytes(source + vid.FullName, vid.GetBytes());

        var inputFile = new MediaFile { Filename = source + vid.FullName };
        var outputFile = new MediaFile { Filename = $"{MP3Name}.mp3" };

        using (var engine = new Engine())
        {
            engine.GetMetadata(inputFile);

            engine.Convert(inputFile, outputFile);
        }
    }
0
user2180706

Ok fand einen besseren Weg, wie der obige Code das Audio-Posting für andere nicht normalisiert hat. Zuerst Nuget-Paket hinzufügen: https://www.nuget.org/packages/NReco.VideoConverter/ So konvertieren Sie MP4 in MP3

 // Client
        var client = new YoutubeClient();
        var videoId = NormalizeVideoId(txtFileURL.Text);
        var video = await client.GetVideoAsync(videoId);
        var streamInfoSet = await client.GetVideoMediaStreamInfosAsync(videoId);
        // Get the best muxed stream
        var streamInfo = streamInfoSet.Muxed.WithHighestVideoQuality();
        // Compose file name, based on metadata
        var fileExtension = streamInfo.Container.GetFileExtension();
        var fileName = $"{video.Title}.{fileExtension}";
        // Replace illegal characters in file name
        fileName = RemoveIllegalFileNameChars(fileName);
        tmrVideo.Enabled = true;
        // Download video
        txtMessages.Text = "Downloading Video please wait ... ";

        //using (var progress = new ProgressBar())
        await client.DownloadMediaStreamAsync(streamInfo, fileName);

        // Add Nuget package: https://www.nuget.org/packages/NReco.VideoConverter/ To Convert MP4 to MP3
        if (ckbAudioOnly.Checked)
        {
            var Convert = new NReco.VideoConverter.FFMpegConverter();
            String SaveMP3File = MP3FolderPath + fileName.Replace(".mp4", ".mp3");
            Convert.ConvertMedia(fileName, SaveMP3File, "mp3");
            //Delete the MP4 file after conversion
            File.Delete(fileName);
            LoadMP3Files();
            txtMessages.Text = "File Converted to MP3";
            tmrVideo.Enabled = false;
            txtMessages.BackColor = Color.White;
            if (ckbAutoPlay.Checked) { PlayFile(SaveMP3File); }
            return;
        }
0
user2180706