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

Quaussi

Ensign
Registriert
Aug. 2013
Beiträge
243
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)
        {
            //...
        }
    }
}
 
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 :(
 
gbene schrieb:
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?
ET-Fighter schrieb:
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.
ET-Fighter schrieb:
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?
 
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
 
ET-Fighter schrieb:
@asdfman:
flac -d<...>.....mmmmmmmmmm klingt total logisch :confused_alt:
könntest du das genauer erklären

flac -d <oldfile.ogg >newfile.wav

= unter Unix(en) das typische Umleiten von stdin und stdout
 
Zuletzt bearbeitet:
rIQ schrieb:
flac -d <oldfile.ogg >newfile.wav

Nein, so weit ich weiß, erzeugt flac -d <...> direkt eine unkomprimierte Datei, ohne dass man da herumumleiten muss.
Das mit dem ogg sehe ich mal als Flüchtigkeitsfehler an, aber bemerke doch, dass der Parameter natürlich ein Flac sein sollte :E
 

Ähnliche Themen

Zurück
Oben