[C#] Audio samples lezen uit bestanden

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • diondokter
  • Registratie: Augustus 2011
  • Laatst online: 23:31

diondokter

Dum spiro, spero

Topicstarter
Hallo beste Tweakers!

Ik wil voor mijn UWP app de samples lezen van geluidsbestanden.
Normaal gesproken zou je iets als NAudio gebruiken om dat te doen, maar die heeft nog geen UWP support om van te spreken.

Ik zoek hier dus een alternatief voor.

Voor de rest van de app gebruik ik de AudioGraph api. Deze werkt erg prettig, maar kan mij in deze scenario slechts beperkt helpen.
Je kunt wel bestanden openen en uitlezen, maar dit kan slechts in realtime snelheid. (link en link)

De tweede optie is het alleen kunnen decoden van WAV/RIFF betstanden. Deze bestanden hebben alleen een header en verder ruwe data. (link)
Hierbij zou ik met iets als de MediaTranscoder andere codecs naar WAV kunnen omzetten. Dit zorgt er wel voor dat ik elke keer dat ik een bestand wil lezen, ik ook een bestand moet schrijven. Niet handig dus.

Optie drie is ook niet fantastisch. Hierbij kan ik gebruik maken van de Media Foundation Api.
Ik zou dit kunnen volgen... Maar op een gegeven moment wordt het een chaos...

De laatste optie is om voor elke codec die ik wil ondersteunen zelf een decoder te schrijven / te vinden.

Heeft iemand een idee wat ik het beste kan doen of nog een alternatief?
Ik zou het graag horen!

Bedankt voor het lezen,
Dion Dokter

Beste antwoord (via diondokter op 24-10-2016 14:13)


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Met de Media Foundation API kun je toch ook direct audio.

Helaas is de documentatie van MF heel erg slecht. Je kunt het beste de sample projecten downloaden en vanuit daar puzzelen.

Je kunt daar de Windows SDK voor downloaden, maar gelukkig staan ze ook los op MSDN.
Zie hier een overzicht van alle samples. Door het klikken op de samples kom je op een andere pagina met een download link. MSDN: Media Foundation SDK Samples (Windows)

~ Mijn prog blog!

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Met de Media Foundation API kun je toch ook direct audio.

Helaas is de documentatie van MF heel erg slecht. Je kunt het beste de sample projecten downloaden en vanuit daar puzzelen.

Je kunt daar de Windows SDK voor downloaden, maar gelukkig staan ze ook los op MSDN.
Zie hier een overzicht van alle samples. Door het klikken op de samples kom je op een andere pagina met een download link. MSDN: Media Foundation SDK Samples (Windows)

~ Mijn prog blog!


Acties:
  • +2 Henk 'm!

  • diondokter
  • Registratie: Augustus 2011
  • Laatst online: 23:31

diondokter

Dum spiro, spero

Topicstarter
Bedankt voor het antwoorden!

Die link van je heeft veel geholpen. Om de een of andere reden wilde de win 7 SDK niet installeren. Ik heb die samples dus niet kunnen zien. Maar met behulp van de links op die pagina ben ik er toch uit gekomen.

Van NuGet heb ik de SharpDX.MediaFoundation gehaald. Dit is een wrapper voor de Media Foundation API met een net zo'n slechte documentatie.

Na flink wat puzzelen ben ik er uit gekomen. Hieronder zal ik de code delen voor als iemand met hetzelfde probleem dit tegen komt.

http://pastebin.com/d9MbfQCt

Acties:
  • +1 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Bedankt voor de code, want de MF documentatie is echt ruk! Een van de hoofdredenen waarom zoveel mensen nog DirectShow e.d. gebruiken. Maar dat kan helaas niet als je een app maakt :P

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 27-09 13:03
Je weet dat je aan die BitConverter functies een offset mee kunt geven? :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • diondokter
  • Registratie: Augustus 2011
  • Laatst online: 23:31

diondokter

Dum spiro, spero

Topicstarter
farlane schreef op dinsdag 25 oktober 2016 @ 08:35:
[...]

Je weet dat je aan die BitConverter functies een offset mee kunt geven? :)
Dat klopt ja. Over het hoofd gezien bij het uitproberen van alle mogelijkheden...
Al zou dat bij de 24-bit int niet werken. Die moet echt 3 bytes hebben.

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 27-09 13:03
diondokter schreef op dinsdag 25 oktober 2016 @ 09:45:
[...]

Dat klopt ja. Over het hoofd gezien bij het uitproberen van alle mogelijkheden...
Al zou dat bij de 24-bit int niet werken. Die moet echt 3 bytes hebben.
Klopt, al zou dan dat laatste byte later maskeren misschien mooier zijn.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1