Laden...

Opus to MP3 C# Bibliothek

Erstellt von Thron vor einem Jahr Letzter Beitrag vor einem Jahr 603 Views
T
Thron Themenstarter:in
63 Beiträge seit 2017
vor einem Jahr
Opus to MP3 C# Bibliothek

Hallo zusammen,

ich brauche einen Tipp! Ich muss ein Audio-File welche im Opus-Format gespeichert ist in ein MP3-File konvertieren und suche eine passende Bibliothek. Aktuell mache ich das mit ffmpeg über einen Prozess, was aber aufgrund einer Portierung des Codes in einen Docker-Container so nicht mehr funktionieren wird.
Kann mir jemand bitte helfen?

Vielen dank und Grüße

D
152 Beiträge seit 2013
vor einem Jahr

Du kannst doch ffmpeg mit in Deinem Container-Image auf nehmen.

T
2.219 Beiträge seit 2008
vor einem Jahr

Oder du schaust einfach ob es für die Lib von ffmpeg einen passenden .NET Wrapper gibt und bindest diesen ein.
Dann kannst du direkt gegen die native Lib arbeiten und dein Programm direkt als Container verpacken.

Google hat mir kurz diese rausgeworfen:
https://github.com/cmxl/FFmpeg.NET

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

T
Thron Themenstarter:in
63 Beiträge seit 2017
vor einem Jahr

Okay....das wusste ich nicht! Vielen Dank

Gibt es aber doch eine Libary, welche ich nutzen kann ohne auf eine Exe zuzugreifen?

T
Thron Themenstarter:in
63 Beiträge seit 2017
vor einem Jahr

T-Virus: Diese Libary habe ich probiert! Aber bekomme schon bei den Samples eine Fehlermeldung, das ich eine abstrakte Klasse nicht so aufrufen darf.

var inputFile = new MediaFile (@"C:\Path\To_Video.flv");

Stehe da ein wenig auf dem Schlauch...

T
2.219 Beiträge seit 2008
vor einem Jahr

Soweit ich dies sehen kann, scheint es auch welche zu geben.
Diese sind dann aber nicht zwangsweise kostenlos.
Du kannst gerne mal google mit "C# ffmpeg" durchsuchen.
Gibt dann genug Links zum lesen 🙂

Nachtrag:
Dann schau dir das Beispiel an, dort ist dann klar was dort verwendet werden muss.

Link:
FFmpeg.NET/Program.cs at master · cmxl/FFmpeg.NET

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

4.931 Beiträge seit 2008
vor einem Jahr

Dann verwendest du einen älteren Beispielcode.
Laut Kommentar in FFmpeg.NET/src/FFmpeg.NET wurde diese Klasse vor 9 Monaten abstrakt gemacht:

make MediaFile an abstract class

Du mußt also eine der abgeleiteten Klassen verwenden, s.a. FFmpeg.NET.Sample, d.h. InputFile oder OutputFile.

T
2.219 Beiträge seit 2008
vor einem Jahr

@Th69
Kommt dadurch, dass auf der Projekte Seite bei Github noch die alte Klasse verwendet wird, siehe Link oben.
Erst im Sample, was ich im letzten Kommentar verlink habe, werden dann die richtigen Klassen verwendet.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

4.931 Beiträge seit 2008
vor einem Jahr

Ich hatte gar nicht nach unten gescrollt, sondern direkt das Sample angeschaut.
Habe aber sogleich ein Issue erzeugt: Code update needed #71

T
Thron Themenstarter:in
63 Beiträge seit 2017
vor einem Jahr

Vielen Dank für die Beiträge, habe mir das mal angeschaut!
Jetzt sehe ich aber in den Samples, dass ich auch dort die ffmpeg.exe benötigte!

Gibt es keine reine DLL mit der die von opus nach mp3 wandeln kann, oder stelle Ich mich einfach ein biss dämlich an?

Viele grüße

4.931 Beiträge seit 2008
vor einem Jahr

Diesbezügliche Freeware Umsetzung ohne Nutzung von FFmpeg gibt es nicht (erst recht nicht in dem Umfang).
Aber .NET Wrapper of FFmpeg Libraries stellt eine Umsetzung dar, welche nur die "ffmpeg.dll" benötigt und keinen externen Prozess aufruft - beachte aber die Lizenz.

J
641 Beiträge seit 2007
vor einem Jahr
ffmpeg dll

auch wenn statt der exe eine dll verwendet wird, brauchst du eine linux dll die zu deiner platform passt. Also so einfach wirds erstmal nicht klappen. Glaube da ist es einfacher ffmpeg passend im container zu installieren und dieses durch den wrapper aufrufen zu lassen.
Denn Pfad zu der Binary kann man ja übergeben.

siehe auch: https://github.com/cmxl/FFmpeg.NET/issues/34

cSharp Projekte : https://github.com/jogibear9988