CSCore - Highperformance Audiobibliothek

    • Release
    • Open Source

    Es gibt 588 Antworten in diesem Thema. Der letzte Beitrag () ist von n1nja.

      Das war auch schon eine Idee, die ich hatte.
      Hatte es schon mit dem Timeout probiert
      Der responseStream hat ja schon ein Timeout gesetzt.
      Habe auch schon versucht beim request einen Timeout einzusetzen - ohne Erfolg.
      Er gibt leider auch keinen anderen Fehler zurück.

      Das komische ist, dass wenn der Server z.B. auf Port 8000 liegt
      127.0.0.1:8005 o.ä. eine Exception verursacht (dort liegt ein weiterer Server) aber
      127.0.0.1 alleine oder
      127.0.0.1:80 nicht.

      :/
      Hallo ich bin neu im Forum.
      Ich versuche mit CsCore ein Programm zum splitten von aufgenommen Audio Dateien zu erstellen. Benutze dabei WasapiOut. Funktioniert für Wav und Mp3 Dateien. Wenn ich aber AAC Dateien abspielen will stürzt das Programm mit dem Fehler
      IAudioClient::Initialize caused an error: 0x88890008, "Unknown HRESULT".

      ab. Benutze ich WavOut tritt dieser Fehler nicht auf.
      Der Unterschied zu anderen Files liegt im WaveFormat wenn ich vorher zu Stereo wandle gibt es auch bei WasapiOut kein Fehler:
      WaveFormat der Audio Datei:

      C#-Quellcode

      1. {ChannelsAvailable: 6|SampleRate: 48000|Bps: 1152000|BlockAlign: 24|BitsPerSample: 32|Encoding: Extensible|SubFormat: 00000003-0000-0010-8000-00aa00389b71|ChannelMask: SpeakerFrontLeft, SpeakerFrontRight, SpeakerFrontCenter, SpeakerLowFrequency, SpeakerBackLeft, SpeakerBackRight}

      Was kann ich tun um auch multichannel files mit WasapiOut zu verarbeiten?
      Mein Beispiel:

      C#-Quellcode

      1. using CSCore;
      2. using CSCore.Codecs;
      3. using CSCore.CoreAudioAPI;
      4. using CSCore.SoundOut;
      5. using CSCore.Streams;
      6. using System;
      7. using System.Diagnostics;
      8. using System.Drawing;
      9. using System.Linq;
      10. using System.Windows.Forms;
      11. namespace AudioSplit
      12. {
      13. public partial class Form1 : Form
      14. {
      15. private IWaveSource waveSource;
      16. LoopStream loopStream;
      17. private NotificationSource _notificationSource;
      18. private ISampleSource _sampleSource;
      19. private WasapiOut _soundOut = new WasapiOut();
      20. public Form1()
      21. {
      22. InitializeComponent();
      23. _soundOut.UseChannelMixingMatrices = true;
      24. }
      25. private void button1_Click(object sender, EventArgs e)
      26. {
      27. PlayFile(@"D:\Eigene Dateien\Music\Audio.aac");
      28. }
      29. public void PlayFile(String file)
      30. {
      31. var selectedDevice = MMDeviceEnumerator.EnumerateDevices(DataFlow.Render, DeviceState.Active).First();
      32. var client = AudioClient.FromMMDevice(selectedDevice);
      33. _soundOut.Stop();
      34. if (_notificationSource != null)
      35. _notificationSource.Dispose();
      36. var source = CodecFactory.Instance.GetCodec(file);
      37. var ok = client.IsFormatSupported(AudioClientShareMode.Shared, source.WaveFormat, out WaveFormat wavfmt);
      38. _sampleSource = source.ToSampleSource();
      39. //_sampleSource = _sampleSource.ToStereo();
      40. //source.Position = 0;
      41. _notificationSource = new NotificationSource(_sampleSource) { Interval = 100 };
      42. _notificationSource.BlockRead += (o, args) =>
      43. {
      44. // UpdatePosition();
      45. };
      46. waveSource = _notificationSource.ToWaveSource();
      47. // Error with this waveformat
      48. //_waveFormat = {ChannelsAvailable: 6|SampleRate: 48000|Bps: 1152000|BlockAlign: 24|BitsPerSample: 32|Encoding: Extensible|SubFormat: 00000003-0000-0010-8000-00aa00389b71|ChannelMask: SpeakerFrontLeft, SpeakerFrontRight, SpeakerFrontCenter, SpeakerLowFrequency, SpeakerBack...
      49. loopStream = new LoopStream(waveSource);
      50. _soundOut.Initialize(waveSource);
      51. _soundOut.Play();
      52. }
      53. private void Form1_FormClosing(object sender, FormClosingEventArgs e)
      54. {
      55. loopStream.Dispose();
      56. _soundOut.Stop();
      57. }
      58. private void button2_Click(object sender, EventArgs e)
      59. {
      60. _soundOut.Stop();
      61. }
      62. private void Form1_FormClosed(object sender, FormClosedEventArgs e)
      63. {
      64. Environment.Exit(Environment.ExitCode);
      65. }
      66. }
      67. }
      In den Screenshots steuert er die Lautstärke des Musikplayers, nicht direkt der Anwendung
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      Ja, du hast recht, mein Fehler. Könntest du dir, wenn es keine zu großen Umstände mach, meinen Thread noch einmal anschauen, ich hatte dir dort eine Antwort hinterlassen ;)

      Vollzitat entfernt. ~Thunderbolt
      ?(

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

      Du kannst die Lautstärke von Anwendungen steuern.
      Anwendungen sind "Sessions". Wie du die Lautstärke dieser steuern kannst, kannst du hier abschauen: github.com/filoe/cscore/blob/m…AudioSessionTests.cs#L142


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

      Hab nun auch mal deine Lib getestet.
      Erstmal wirklich super Leistung und einer der besten AudioLibs :)

      Bis jetzt konnte ich alles super nachbauen und hat perfekt funktioniert.
      Jedoch wollen die Funktionen mit der SoundTouch.dll nicht funktionieren.
      Entweder man merkt keinen Unterschied am Song und/oder es hört einfach auf zu spielen.

      Gibt es da aktuell irgendwelche Infos?