CSCore - Highperformance Audiobibliothek

    • Release
    • Open Source

    Es gibt 589 Antworten in diesem Thema. Der letzte Beitrag () ist von simpelSoft.

      Ich fürchte ich haben Code von diesem nicht mehr. Werde aber über den Sommer so oder so mal eine kleine Doku schreiben und dann auch endlich mal entsprechende Beispielprojekte erstellen.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      Neue Zwischenversion:
      • Vollständiger Support für DMO API
      • Neuer DMO MP3 Decoder
        • Wird in der nächsten Version ACM komplett ersetzen
        • ACM bleibt derzeit noch aufgrund von Kompatibilität bestehen
      • Neue Effekte
        • Chorus
        • Compressor
        • Distortion
        • Echo
        • Flanger
        • Gargle
        • Reverb
      Aktueller Changeset auf Codeplex: dd85da68da63.
      NuGet-Alpha Build verfügbar mit: Install-Package CSCore -Pre


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      @thefiloe Ohne mir das jetzt genauer anzusehen (konnte auf Anhieb nichts derartiges finden): Kann man damit Webradio-Streams abspielen?

      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!
      Hat sich seit dem Video was verändert? Selber Code sagt mir, dass die Eigenschaft schreibgeschützt ist. @thefiloe
      "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!
      Eigentlich müsste es gehen. Aber es gibt wohl Probleme bei der Wiedergabe, weil gefühlt jeder Stream ein anderes Format hat. Versuch mal folgenden Ansatz:

      VB.NET-Quellcode

      1. Using enumerator As New MMDeviceEnumerator()
      2. Dim stream = New MP3WebStream("http://mp3stream7.apasf.apa.at:8000", True)
      3. _soundOut.Device = MMDeviceEnumerator.DefaultAudioEndpoint(DataFlow.Render, Role.Multimedia)
      4. _soundOut.Initialize(stream.ToSampleSource)
      5. _soundOut.Play()
      6. End Using


      Aber wie gesagt, das ganze ist eher suboptimal. Ob noch daran gearbeitet wird, weiß ich nicht.
      Liebe Grüße
      sothere
      Der Fokus lag bisher nie wirklich darauf. Du kannst jedoch folgendes Versuchen:

      C#-Quellcode

      1. IWaveSource stream = CodecFactory.Instance.GetCodec(new Uri("stream adresse"));


      Das einfach mit dem Code von oben kombinieren.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      @thefiloe Danke, funktioniert wunderbar.
      Gibt es auch eine Möglichkeit, die ID3-Tags aus dem Stream zu lesen?

      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!
      Wüsste nicht, dass die Spezifikation ID3 Tags für Streams vorsieht. Hier werden meistens eigene Protokolle verwendet. Jedoch keine ID3-Tags.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      Ich hab als Player für Streams mal Winamp verwendet, irgendwie hat der es hinbekommen.
      Ne Idee? @thefiloe

      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!
      Ich sage nicht, dass da keine Tags drinnen sind. Jedoch wird dazu 99% ein anderes Protokoll verwendet. Nicht alle Tags sind gleich ID3-Tags. Müsste man halt parsen. Ganz normal: HttpWebRequest öffnen -> ResponseStream holen und den parsen. Könnte mir gut vorstellen, dass es sich um Shoutcast handelt. Siehe z.B. hier: smackfu.com/stuff/programming/shoutcast.html


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      Super Idee, ich hatte schon lange gehofft, dass es irgendwann sowas geben wird :) . Es ist alles verständlich erklärt, allerdings könntet ihr etwas an eurer Rechtschreibung arbeiten, hin und wieder haben sich da kleinere Fehler eingeschlichen.
      Vielen Dank für deine Mühen :).
      Kleine Anmerkung noch: Hier gibt es noch ein etwas älteres und bei weitem nicht so detailiertes Tutorial: CSCore - Einstiegstutorial 01


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      Hallo
      Freut mich, wenn es euch gefällt.
      Rechtschreibungsfehler nehme ich gerne entgegen, weder Sven noch ich haben da ehrlich gesagt drauf geschaut.
      Und wie gesagt, gerade zum Thema WPF Visualisierung fehlen noch Einträge, wenn also jemand weitere Ideen hat, kann er das gerne hier posten
      Liebe Grüße
      sothere
      Nach langem ein offizielles Update. Aufgrund von umfangreichen Updates habe ich nun CSCore in der Version 1.0 veröffentlicht (beta vorerst). Wie immer verfügbar auf nuget UND auch als download auf codeplex.
      Großteils wurden intern Sachen umgestellt (nach außen hin ändert sich nicht allzu viel).
      Trotzdem gab es ein paar Änderungen welche auch nach außen hin sichtbar sind:
      • XAudio2 ist nun verfügbar.
        • XAudio2.7 und XAudio2.8
        • Möglichkeit um dynamisch Audiodaten zu streamen (Beispielsweise um längere Musikstücke in Spielen abzuspielen)
        • Ist für Spiele optimiert - Getestet mit über 400 gleichzeitigen Playbacks bei einer Latenz von 120 ms!!
        • Möglichkeit für 3D Sound wird beim nächsten Release kommen.
      • Es gibt nun endlich eine anständige Lösung für Fast Fourier Transformationen -> siehe CSCore.DSP.FftProvider Klasse.
      • Dokumentation wurde erweitert (mehr als 1000 xml Kommentare). Leider fehlen noch immer sehr große Teile.
      • Fluent API: Ich habe versuchsweise ein paar sehr simple aber (meiner Meinung nach) durchaus äußerst effektive Fluent Extensions hinzugefügt. So kann nun ein Audio-Graph als Einzeiler zusammengebastelt werden.
      Wie gesagt. Zum download verfügbar unter
      cscore.codeplex.com/releases/view/125049 oder als nuget paket:

      Quellcode

      1. Install-Package CSCore -Pre





      Bei Fehlern/Bugs:
      Am besten auf cscore.codeplex.com als Issue posten. Ich werde diese so schnell wie möglich beheben.




      Zu XAudio2 Streaming noch ein kleines Beispiel:

      C#-Quellcode

      1. using System;
      2. using System.Windows.Forms;
      3. using CSCore.Codecs;
      4. using CSCore.XAudio2;
      5. namespace XAudio2Playback
      6. {
      7. class Program
      8. {
      9. [STAThread]
      10. static void Main(string[] args)
      11. {
      12. OpenFileDialog openFileDialog = new OpenFileDialog();
      13. openFileDialog.Filter = CodecFactory.SupportedFilesFilterEn;
      14. if (openFileDialog.ShowDialog() == DialogResult.OK)
      15. {
      16. using (var source = CodecFactory.Instance.GetCodec(openFileDialog.FileName))
      17. using (var xaudio2 = XAudio2.CreateXAudio2())
      18. using (var masteringVoice = xaudio2.CreateMasteringVoice()) //ALWAYS create at least one masteringVoice.
      19. using (var streamingSourceVoice = StreamingSourceVoice.Create(xaudio2, source))
      20. {
      21. StreamingSourceVoiceListener.Default.Add(streamingSourceVoice); //add the streamingSourceVoice to the default sourcevoicelistener which processes the data requests.
      22. Console.WriteLine("Press any key to exit.");
      23. Console.ReadKey();
      24. StreamingSourceVoiceListener.Default.Remove(streamingSourceVoice);
      25. streamingSourceVoice.Stop(SourceVoiceStopFlags.None, XAudio2.CommitNow);
      26. }
      27. }
      28. }
      29. }
      30. }


      Ansonsten funktioniert die ganze XAudio2 API bis jetzt noch nahezu gleich wie die originale XAudio2 API deren Dokumentation und Beispiele somit auch auf CSCore übertragbar sind.


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

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

      Wie siehts aus mit Multichannel Implementierungen? Oder hab ich was verpasst?
      "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!