Danke für das Feedback.
Mp3 müsste ab xp laufen.
Streams werden halt nur mp3-streams unterstützt zur Zeit. Bugs werde ich mir danach ansehen. WASAPI Loopbackcapture kenne ich und ist auch geplant. Vll. mach ich das heute noch schnell mal schauen. Derzeit bin ich aber an nem ogg-vorbis decoder dran welcher dann doch auch bisschen Zeit frisst :D.
Wie auch immer werde mir die "Bugs" anschließend mal ansehen und schauen was sich machen lässt. Habe leider nicht wirklich die Möglichkeit auf vielen verschiedenen Systemen zu testen, deshalb bin ich auch für Feedback so dankbar.
EDIT: Die MP3-Datei habe ich bereits ausprobiert. Win8 x64 und läuft ohne Probleme. Welcher Fehler tritt denn bei dir genau auf?
EDIT2: Der Stream läuft bei mir auch wunderbar. Ist in dem Fall auch ein MP3-Stream.
In persönlich hätte jetzt auf die schnelle keine Idee wo in meinem Code der Fehler liegen könnte.
Ich hatte schon mal so einen ähnlichen Fall bei Windows XP. Dort hat auch MP3 nicht funktioniert. Das lag damals aber am System, da der Frauenhofer MP3 ACM Codec nicht vorhanden oder beschädigt war. Ich muss leider auf ACM zurückgreifen, da ich bei einem eigenen Decoder Lizenzgebühren bezahlen müsste. Kannst du vll. mal nachschauen ob du den Frauenhofer MP3 ACM Codec installiert hast?
Dazu am einfachsten den Windows Media Player öffnen. Nun Alt drücken und es öffnet sich ein Dropdown. In diesem Dropdown nun den Unterpunkt Hilfe > Info auswählen. Es öffnet sich ein kleines Fenster welches einen Link mit Namen "Informationen für technischen Support" beinhalten sollte. Anklicken und es öffnet sich eine Datei im Browser. Dort in der Liste unter dem Unterpunkt Audiocodecs nachschauen ob du folgenden Eintrag hast:
Ansonsten müssten in der aktuellen Version noch bescheidene Logfiles erstellt werden. In der kommenden Version werden diese zwar verschwunden sein aber schau vll. mal nach ob da was drinnen steht.
Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „thefiloe“ ()
Hallo,
kann jemand mir ein Beispiel geben, wie man einen Stream abspielen kann?
@thefiloe:
Könntest du, wenn es geht, die Projekte auch für VS 2010 zu Verfügung stellen,
weil ich kann die Projekte nicht öffnen.
Ich habe kein Visual Studio 2010 mehr. Deshalb wird dies schwierig. Jedoch könntest du dir so oder so die neue Version laden, da diese meiner Meinung nach sehr große Verbesserungen beinhaltet( <- offtopic ). Oder du öffnest einfach die .csproj was eigentlich weiterhin funktionieren müsste. Wenn nicht kannst du als letzer Ausweg auch die Dateien manuell zu einem Projekt hinzufügen was auch nicht das große Problem sein sollte, da die Projekte so oder so nicht mehr als ein paar Dateien beinhalten.
Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
@thefiloe:
In welchem Namespace befindet sich das Peak auslesen?
Du musst auch mit dem peak initialisieren. Der Grund: Du kannst verschiedene Elemente verketten. Am einen Ende ist z.B. eine Datei von der gelesen wird und am anderen die Ausgabe durch die Lautsprecher. Dazwischen könnte z.B. ein Effekt, ein Peakmeter, etc. stehen. Diese Elemente werden verkettet. In deinem einfachen Beispiel wird ein Mp3WebStream mit einem Peakmeter verkettet. Damit aber auch das Peakmeter zum Einsatz kommt musst du auch das letze Glied der Kette initialisieren. In diesem Fall ist das das Peakmeter. Denn DirectSoundOut liest vom Peakmeter, welches wieder vom Mp3WebStream liest. Wenn DirectSoundOut vom Mp3WebStream liest, kommt nie die Klasse Peakmeter zum Einsatz. Zur Vorstellung: Du hast eine Kette und an beiden Enden wird gezogen. Damit diese auf der ganzen Länge belastet wird musst du auch von beiden Enden aus ziehen. Wenn du nur von einem Ende aus und von der Mitte der Kette ziehst wird die Hälfte der Kette unbelastet bleiben.
Außerdem wenn ich dir schon einen Code poste wo die derzeit empfohlene Vorgehensweise zum Erstellen eines SoundOuts gezeigt wird, solltest du diese auch vll. verwenden.
Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
Importiere den Namespace CSCore. In diesem befindet sich eine Utils-Klasse welche einige Extensions beinhaltet.
Dies erspart dir das ganze herumhantieren mit verschiedenen Streams etc.
Außerdem würde ich wenn du beim WebStream kein async verwendet einen Try-Catch Block verwenden. a) Könnte es sich um keinen MP3-Stream handeln und b) Könnten Web-Exceptions fliegen. Diese muss man abfangen.
Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
Hallo,
jetzt geht das ToWaveSource, aber jetzt
wird eine InvalidOperationException geworfen
(siehe Anhang)
Das hat mit der Lib rein gar nichts zu tun. Schon mal was von BeginInvoke gehört?
Wie Artentus schon gesagt hat, hat dies nichts mit der Lib zu tun. Du musst natürlich erst Invoken. Das ist aber auch im Beispiel "Recorder" so gemacht.
Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
Sehr coole Bibliothek, respekt für die Arbeit und Leistung ersteinmal von meiner Seite dafür.
Ich hab allerdings das Problem, dass immer, wenn ich SoundOut initaliesieren möchte, eine System.AccessViolationException geworfen wird... Die IDE zeigt das ganze als fehler in deiner .dll an, die ich dementsprechend nur schwer debuggen kann
Somit stellt sich mir die Frage, ob ich einfach was verbockt habe, oder es ein Bug in der Lib ist. Das Beispiel Projekt funktioniert auch nur sporadisch in 50% der Fälle. In den anderen 50% tut sich Nix. Weder wird ein SOund abgespielt, noch erscheint eine Visualisierung
if (WasapiOut.IsSupportedOnCurrentPlatform) // > Vista
{
_out = new WasapiOut(false, CSCore.CoreAudioAPI.AudioClientShareMode.Shared, 100);
}
else // < Vista
{
_out = new DirectSoundOut() { Latency = 100 };
}
_out.Initialize(_in);
_out.Play();
Console.ReadKey();
}
}
Edit2:
So und zu guter letzte: Wenn ich zum Testen nicht Wasapi sondern DirectSound benutze, so funktioniert alles wie Erwünscht... Ich denke daher, dass der Fehler höchstwahrscheinlich irgendwo in der Wasapi Umsetzung schlummert...
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Zakath“ ()
Hi
Mein Kompliment das Beispielprojekt funktioniert echt hervorragend . Das einzige was mir aufgefallen ist manchmal "hängen" die Visualisierungen ein wenig nach. Aber ansonsten echt gut. Das hast du nur mit DirectSoundOut hingekriegt? Respekt
faxe1008
So war jetzt im Urlaub und konnte deshalb hier nicht antworten.
@Zakath könntest du mir vll. noch den Stacktrace und die Innerexception falls vorhanden posten? Ich persönlich wüsste jetzt nicht wo ich WASAPI verbockt haben sollte. Bei mir ist auch noch nie ein Fehler aufgetreten. Spontan hätte ich jetzt, dass der Postcompiler die Offsets der Cominterface-Pointer falsch berechnet, da jedoch DirectSound zu funktionieren scheint kann ich es mir ehrlich gesagt nicht erklären(vll. wird irgendwo eine Struktur nicht richtig gemarshalt).
Ansonsten welches System besitzt du(Name und x64 oder x86?) und welche Buildconfig hat dein Projekt? x64, x86 oder Any CPU.
@faxe1008 die Visualierungen sind teilweise nicht wirklich optimal implementiert. Das Problem mit dem nachhängen ist mir bei etwas schwächeren Rechnern bewusst. Die Ursache ist, dass die Visualisierung async. gezeichnet wird um keine Verzögerungen und somit Knistern in der Ausgabe zu erzielen. Da es jedoch ganz simpel durch BeginInvoke async ausgeführt wird und ich noch kein Synchronisierung erstellt habe, kann es zu kleineren Verzögerungen in der Darstellung kommen. Es müsste aber auch schon reichen die FPS also quasi die Aktualisierungsrate zu beschränken.
Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „thefiloe“ ()