Autor Beitrag
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 481
Erhaltene Danke: 51



BeitragVerfasst: So 23.04.17 18:36 
Ich brauche mal wieder Starthilfe.

Ich würde zwecks Vertiefung meiner C#-Erfahrungen gern ein Programm schreiben, das einen Audiostream aus einem bestimmten Gerät in einem bestimmten Format (zum Beispiel Vorbis) ausgibt. Dafür verwende ich die CSCore-Bibliothek, die ja der Standard zu sein scheint und außerdem mit deutlich mehr Ausgabeformaten klarzukommen behauptet als NAudio, das ich mir zuvor angesehen hatte.

Nun ist die Dokumentation für CSCore ja so gut wie gar nicht vorhanden, was mich zu der Frage führt:
Wie kann ich einen Stream aus einem Eingabegerät, dessen DeviceID ich kenne, in eine FLAC- oder Vorbisdatei schreiben?

Jeder Ansatz ist willkommen. :)
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 23.04.17 19:34 
Hey,

also ohne mich jetzt mit CSCore auszukennen würde ich dir empfehlen mal die Samples im Github Repository anzuschauen. Da kann man sich oft die nötigen snippets rausziehen.

Eine alternative zu CSCore wäre auch BASS.NET. Das ist ein Wrapper um die native C++ Bibliothek BASS. Ich würde es nicht unbedingt als Einsteigerfreundlich bezeichnen, aber die Lib ist sehr mächtig.

Auf NuGet Must Haves gibt es auch weitere Vorschläge für Audio-Bibliotheken. Accord ist in jedem Fall ein Blick wert (nicht nur im Bereich Audio, sondern auch Imaging, Computer Vision und Machine Learning).

Zur deiner Frage kann ich dir leider keine Antwort geben, aber ich hoffe du findest was in den Samples.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
hydemarie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 481
Erhaltene Danke: 51



BeitragVerfasst: So 23.04.17 19:53 
BASS würde ich nach einigen Erfahrungen mit Delphi eigentlich lieber vermeiden wollen. Ist nicht besonders schön zu benutzen, finde ich. :?

Die Samples haben, so weit ich das sehen konnte, eigentlich nur WaveOut und nachträgliches Konvertieren, aber kein Direkt-als-{Format}-Schreiben ...
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.04.17 20:42 
- Nachträglich durch die Entwickler-Ecke gelöscht -
hydemarie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 481
Erhaltene Danke: 51



BeitragVerfasst: So 23.04.17 20:57 
CSCore hat ja schon Wrapper, mir ist nur nicht ganz klar, wie ich die benutzen kann. :?
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.04.17 21:01 
- Nachträglich durch die Entwickler-Ecke gelöscht -
hydemarie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 481
Erhaltene Danke: 51



BeitragVerfasst: So 23.04.17 21:12 
Verstehe ich "Wrapper" falsch?

github.com/filoe/csc...master/CSCore/Codecs

Vorbis scheint allerdings eine eigene Klasse zu brauchen:
github.com/filoe/csc...s/NVorbisIntegration

Vielleicht rufe ich hinterher einfach SoX auf ... :?
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.04.17 21:26 
- Nachträglich durch die Entwickler-Ecke gelöscht -
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 23.04.17 21:29 
Vom schnellen überfliegen des Source Code würde ich schon sagen dass CsCore ein Wrapper ist. Aber um einen Wrapper geht es ja hier gar nicht und gebraucht wird auch keiner (außer dem schon vorhandenen).

Was mir jetzt einfallen würde (ohne Kenntnisse über die API zu haben) ist, eine Aufnahme zu starten (hat die ein Standardformat?) und in einem Memory Stream abzulegen und diesen dann durch ein entsprechendes Codec zu jagen.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
hydemarie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 481
Erhaltene Danke: 51



BeitragVerfasst: So 23.04.17 21:30 
CSCore habe ich ja schon eingebunden, ich nutze es aktuell bereits, um die DeviceIDs der angeschlossenen Eingabegeräte auszulesen. Das klappt auch schon ganz gut. Was noch nicht klappt, ist mein Verständnis von der Dateiausgabe ...

Zitat:
und diesen dann durch ein entsprechendes Codec zu jagen.


Eben - und wie?
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.04.17 21:35 
- Nachträglich durch die Entwickler-Ecke gelöscht -
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 23.04.17 21:43 
@Frühlingsrolle Im Eröffnungspost hat der TE schon gesagt, dass die Doku nicht existent ist...
Nachtrag
Und eine automatisch generierte Doku ohne Beispiele oder Tutorials ist nutzlos. Da kann ich auch direkt die Quellcode Docs lesen
Nachtrag ende

Ich habe gerade die Codecs durchgesehen. Da ich nur Decoder gefunden habe, habe ich nochmal auf der Codeplex Seite geguckt und unten die Tabelle gefunden:
CSCore

Wie du siehst wird für FLAC und OGG nur ein Decoder unterstützt.
Einloggen, um Attachments anzusehen!
_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler


Zuletzt bearbeitet von C# am So 23.04.17 21:52, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: hydemarie
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.04.17 21:52 
- Nachträglich durch die Entwickler-Ecke gelöscht -
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 23.04.17 21:56 
Ja es ist kein Beispiel dabei weil es nicht möglich ist. Sie will Streams als Ogg oder FLAC speichern. Die Grafik sagt, dass für beide Codecs nur ein Decoder implementiert ist. Da sie zum Speichern aber ein Encoder braucht ist ihr Vorhaben nicht mit vorhandenen Mitteln möglich.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.04.17 22:01 
- Nachträglich durch die Entwickler-Ecke gelöscht -
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 23.04.17 22:06 
Erster Satz der Readme.md der GitHub Page:
Zitat:
NVorbis is a .Net library for decoding Xiph.org Vorbis files. It is designed to run in partial trust environments and does not require P/Invoke or unsafe code.

Wieder kein Encoder.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.04.17 22:09 
- Nachträglich durch die Entwickler-Ecke gelöscht -
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 23.04.17 22:14 
NAudio unterstützt noch weniger Codecs als CsCore. Da wird weder De- noch Encoder für Vorbis oder FLAC unterstützt (zumindest steht es so in der Readme.md und eine Klasse dazu konnte ich auch nicht finden).

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
hydemarie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 481
Erhaltene Danke: 51



BeitragVerfasst: So 23.04.17 22:21 
Für NAudio gibt's Beispiele auf Stack Overflow, aber die Formatauswahl trifft meine Vorstellungen nicht. :?
Offenbar war meine Vermutung, ich müsste einen zusätzlichen Encoder hinter den eigentlichen Streamingvorgang hängen, nicht ganz falsch. Hm.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 23.04.17 22:23 
- Nachträglich durch die Entwickler-Ecke gelöscht -