CSCore Track Informationen auslesen?

  • C#

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Yothrii.

    CSCore Track Informationen auslesen?

    Hallo zusammen,

    ich weiß nicht wieso, aber @thefiloe scheint meine PN's zu ignorieren deswegen bin ich auf die Hilfe von jemand anderem angewiesen.

    Meine Frage ist ob jemand weiß ,ob und wenn ja wie, es möglich ist mit der Audio Bibliothek CSCore von einem Web Radio Stream der gerade abgespielt wird die Trackinformationen auszulesen.
    Wenn nein, weiß jemand eine andere Möglichkeit irgendwie die Trackinformationen auszulesen?

    Und 3.: Könnte mir jemand ein Snippet geben wie man mit CSCore einen WebRadio Stream mitschneidet (recorded) ?
    Ich habe bereits das hier selber zusammengereimt, was aber aus einem mir unerklärlichen Grund nicht funktioniert:

    C#-Quellcode

    1. var capture = new WasapiCapture();
    2. capture.Device = soundOut.Device;
    3. capture.Initialize();
    4. capture.DataAvailable += capture_DataAvailable;
    5. capture.Stopped += capture_Stopped;
    6. capture.Start();


    Allerdings funktioniert das nicht denn sobald dieser Code ausgeführt wird (und ja, das soundOut Interface ist aktuell musik am abspielen vom web stream) bekomme ich folgenden Fehler:


    Markiert ist dabei die Zeile capture.Initialize();

    Weiß jemand um Rat?

    Ich danke euch im Voraus.

    Yothrii schrieb:

    capture.Device = soundOut.Device;

    Überleg dir mal die Sinnhaftigkeit dieser Zeile.
    Falls du nicht drauf kommst, noch ein kleiner Hinweis: msdn.microsoft.com/en-us/library/ee416798(v=vs.85).aspx


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Er möchte halt das aufnehmen, was aus dem Device kommt.
    Für jemanden mit wenig Ahnung von der Materie macht das Sinn - ich kann den Gedankengang gut nachvollziehen.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    Nikx schrieb:

    Für jemanden mit wenig Ahnung von der Materie macht das Sinn - ich kann den Gedankengang gut nachvollziehen.

    Danke, genau so ist es.
    Habe mir halt gedacht, dass das WasapiCapture Objekt doch irgendwie mit dem Sound in Verbindung gebracht werden muss welcher gerade abgespielt wird wenn ich diesen auch aufnehmen möchte.
    Und dann hab ich mir im Objektkatalog WasapiOut angeschaut und das Device Member gefunden, welches man im WasapiCapture auch setzen kann.
    Daher diese Zeile.
    Mit dem Link von dir finde ich auch nur AUDCLNT_E_WRONG_ENDPOINT_TYPE was ich dann gegoogelt habe aber ich finde trotzdem nicht das, was ich suche um diesen Fehler zu beheben.
    Kannst du mir eventuell verraten ob dieser Device Member überhaupt notwendig ist? Gib mir doch wenigstens ein paar Anhaltspunkte.
    Deine Lib ist nichtmals dokumentiert, dann ist sowas für die meisten Leute schon eine Abschreckung. Warum programmiert man Software die dann nicht dokumentiert wird. Klingt nach einem typischen Hobby Programmierer der kein Bock auf Dokumentation hat. :thumbdown:
    Ok, dann ist das vll. doch zu unklar. WasapiCapture ist für Aufnahme zuständig. WasapiOut für Ausgabe.
    Das sind zwei komplett getrennte Dinge. Ein Aufnahmegerät ist z.B. ein Mikro und ein Ausgabegerät z.B. ein Lautsprecher. Du kannst auf einem Mikro nichts abspielen und umgekehrt auch von einem Lautsprecher nicht aufnehmen. Das einzige was du kannst ist, das über WasapiLoopbackCapture Daten abgreifen bevor diese ans Gerät gehen. Dann musst du aber explizit WasapiLoopbackCapture instanzieren. Wenn es aber REIN um die Aufnahme von einem Stream geht, dann würd ich dir empfehlen es dir ganz einfach zu machen und CSCore von mir aus auch wegzulassen und einfach über einen HttpWebRequest die Daten wegzuschreiben.
    Metadaten sind meistens im Stream enhalten. Dabei gibt es versch. Spezifikationen wie z.B. shoutcast welche Metadatenframes im Stream einbetten. CSCore hat diese Spezifikationen nicht implementiert. Gibt aber genug Implementierungen da draußen. Einfach mal suchen und die gängigsten inkludieren. Dann müsstest die meisten Streams recht gut abgedeckt haben.

    Yothrii schrieb:

    Klingt nach einem typischen Hobby Programmierer der kein Bock auf Dokumentation hat.

    Ich gebe zu, habe mich eventuell etwas kurz gefasst, war unterwegs. Der Satz ist trotzdem nicht fair. In der Lib steckt viel Arbeit drinnen und diese ist garantiert besser Dokumentiert wie viele andere Open Source Bibliotheken. Sämtliche public Member sind vollständig mit xml dok. versehen. Dies alleine ist schon ein enormer Dokumentationsaufwand welcher sich über mehr als ein Jahr gezogen hat. Es sind einige Beispiele inkludiert. Ja, das könnten mehr und detailiertere sein. Aber die Lib ist einfach zu umfangreich um alles mit Tutorials und Schritt für Schritt Anleitungen abzudecken. Hat man eine Lib die nur ein paar wenige Funktionalitäten hat, so ist das recht schnell geschehen. Hier sprechen wir von einem Aufwand von hunderten Stunden (wenns denn reicht). Als vollständig beruftstätiger Mensch mit zusätzlichen Hobbies hat man nicht immer Zeit für alles. Deshalb ist die Lib auch Open Source und somit auch vollkommen kostenlos. Auch kannst du nicht erwarten, dass auf jede Frage per PN innerhalb von wenigen Stunden (es handelt sich auch nur um wenige Stunden) eine Antwort kommt.
    Außerdem freut es mich natürlich, dass du das Problem mit der Doku erfasst hast. Du hast damit vollkommen recht. Ich lade dich gerne dazu ein, einige Tutorials etc. zu verfassen. Würde mich natürlich freuen. Also vergiss nicht, auch ein Objektkatalog in VS füllt sich nicht von Geisterhand. Zum Thema null Bock auf Doku.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „thefiloe“ ()

    Habe noch eine Frage zum Thema:

    Und zwar hab ich folgenden Stream: stream.dubbase.fm:7002/
    Sobald ich versuche diesen abzuspielen wirft mir CSCore eine NotSupported Exception. Schätze mal das Encoding wird nicht unterstützt.
    Gibt es irgendwie eine Möglichkeit ein Encoding Pack welches diesen Stream und noch mehr Streams abzuspielen?
    Am besten wäre es natürlich, wenn möglichst alle Streams davon abgedeckt werden könnten.

    Danke im Voraus