C# convert flac/aac to wav (oder mp3)

Quaussi

Cadet 4th Year
Dabei seit
Aug. 2013
Beiträge
74
Hey User,

ich hätte da wieder ein Problem.
Mein Ziel ist es viele Audioformate in Mp3 umzuwandeln.

bereits geschafft: wav -> mp3, ogg -> mp3, wma -> mp3

Wie Ihr in meinem Programmcode erkennen könnt, ist es schwer auf direkten Weg zum Format Mp3 zu gelangen.
Daher gehe ich über Umwege zu diesem Format: ogg -> wav -> mp3, wma -> wav -> mp3

folgende Bibliotheken benutze ich zusätzlich: NAudio, NAudio.WindowsMediaFormat, NVorbis, NVorbis.NAudioSupport und lame_enc
Alle libs bis auf Lame konnte ich in die Verweise mit einbinden. Lame selber musste ich in einen Ordner mit der .exe stecken.

lib.png

Im Internet habe ich bereits nach Bibliotheken für mein Problem (aac, flac) gesucht, aber alle gingen nicht einzubinden :(

Ich sollte noch erwähnen, dass ich kein Experte bin in Programmierung...


Ich bin Dankbar für jeden guten Ratschlag den Ihr habt!!!


Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using NAudio.Wave;
using NAudio.WindowsMediaFormat;


namespace lame_enc
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("MP3/WAV CONVERTER");
            Console.WriteLine("Using LAME");
            Console.Write("     WAV TO MP3");
            //LameWavToMp3(@"..\..\Sample\input\wav\Champs.wav", @"..\..\Sample\output\mp3\AAA.mp3");
            //NAudioOggToWav(@"..\..\Sample\input\ogg\Queens.ogg", @"..\..\Sample\output\wav\Queens.wav");
            //NAudioWMAToWav(@"..\..\Sample\input\wma\hive.wma", @"..\..\Sample\output\wav\hive.wav");
            NAudioFlacToWav(@"..\..\Sample\input\flac\mother.flac", @"..\..\Sample\output\wav\mother.wav");
            Console.WriteLine(" : Successfully");
            Console.ReadLine();
        }
        
        private static void LameWavToMp3(string wavFile, string outmp3File)
        {
            ProcessStartInfo psi = new ProcessStartInfo();
            psi.FileName = @"..\..\Lame\lame.exe";
            psi.Arguments = "-V2 " + wavFile + " " + outmp3File;            //-V XX ist die Qualität, je tiefer XX (z.B. 1), desto besser ist die Qualität
            psi.WindowStyle = ProcessWindowStyle.Hidden;
            Process p = Process.Start(psi);
            p.WaitForExit();
        }

         private static void NAudioWMAToWav(string wmaFile, string wavFile)
        {
            using (WMAFileReader reader = new WMAFileReader(wmaFile))
            {
                using (WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(reader))
                {
                    WaveFileWriter.CreateWaveFile(wavFile, pcmStream);
                }
            }
        }

        private static void NAudioOggToWav(string oggFile, string wavFile)
        {
            using (var vorbis = new NVorbis.NAudioSupport.VorbisWaveReader(oggFile))       
            {
                WaveFileWriter.CreateWaveFile(wavFile, vorbis);                            
            }
        }

        private static void NAudioFlacToWav(string flacFile, string wavFile)
        {
            //...
        }
    }
}
 

gbene

Commander
Dabei seit
Mai 2011
Beiträge
2.614
Wenn es nur darum geht Formate umzuwandeln, dann kann ich dir das Programm SUPER empfehlen.
Wenn du das jetzt nur machst um einfach zu programmieren kann ich dir leider nicht weiterhelfen :(
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.632
Wenn es nur darum geht Formate umzuwandeln, dann kann ich dir das Programm SUPER empfehlen.
Bitte bloß nicht, wann stirbt die Entwicklung von dem Programm endlich?
Wie Ihr in meinem Programmcode erkennen könnt, ist es schwer auf direkten Weg zum Format Mp3 zu gelangen.
Das geht auch nicht, da jedes Format immer von unkomprimierten ausgeht. Jedes Programm geht immer den Weg über Wave.
Im Internet habe ich bereits nach Bibliotheken für mein Problem (aac, flac) gesucht, aber alle gingen nicht einzubinden :(
https://xiph.org/flac/download.html

Oben auf der Seite gibts die Libs. Musst halt nur einen C# Wrapper dafür schreiben oder gleich einen geeigneten finden.

Aber warum nutzt du nicht einfach simple Commandline Tools mit Batch Scripten oder gehts dir nur um den Lerneffekt?
 

Quaussi

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Aug. 2013
Beiträge
74
es geht mir hauptsächlich um den lerneffekt.....das programm soll in zukunft noch erweitert werden
das mit dem wrapper klingt nach einer super schwierigen idee :)....ich werde es mir mal anschauen

@asdfman:
flac -d<...>.....mmmmmmmmmm klingt total logisch :confused_alt:
könntest du das genauer erklären

kann man flac nicht leichter auf ogg konvertieren?? und dann von ogg -> wav -> mp3
 

rIQ

Lt. Commander
Dabei seit
Okt. 2002
Beiträge
1.459
Zuletzt bearbeitet:

asdfman

Commander
Dabei seit
März 2008
Beiträge
2.315
Top