Quali API dovrei usare per la riproduzione di audio su Windows? [chiuso]
-
26-09-2019 - |
Domanda
Ci sono molti modi di riproduzione di suoni su Windows. Quali sono le differenze, vantaggi e svantaggi di ogni metodo?
So che ci sono almeno 5 metodi:
- WINMM.DLL / mmsys.dll PlaySound
- 1995 MCIWnd (come suggerito da @casablanca)
- DirectSound
- 1998 WaveOut
- 1999 ASIO
- 1999 il controllo ActiveX di Windows Media Player?
- WASAPI (che viene utilizzato da XAudio2 - come suggerito da @Han)
- XAudio2
Soluzione
In realtà dipende da ciò che si vuole fare. Per la maggior parte degli scenari più comuni, ho trovato che il MCIWnd funzioni funzionano bene: sono veramente facile da usare e in grado di riprodurre qualsiasi formato per cui è installato un codec
.DirectSound è un po 'più difficile da usare ma ti dà molto più controllo sul risultato; esso consente di aggiungere effetti speciali e simulare il posizionamento 3D.
Le funzioni waveOut
sono le API di livello più basso si può raggiungere e che sono una sorta di spada a doppio taglio: si arriva a controllare esattamente ciò che accade fuori agli altoparlanti, ma accettano solo i dati delle forme d'onda prime, che significa che sono responsabile di tutti decodifica e post-elaborazione dei dati di ingresso. PlaySound
fornisce essenzialmente un bel involucro intorno a questo.
Altri suggerimenti
QSound , quindi si adatta a destra dentro con il resto della tua Qt applicazione, e funzionerà, non solo su Windows ma anche su Mac OS X e Linux, pure. Non è raro trovare un'API di base, la piattaforma-specifico che non è molto amichevole per gli sviluppatori, e poi una miriade di altri sviluppatori API ambientale costruito sulla parte superiore del nucleo. Utilizzando un'API nucleo può essere trascurabile veloce, ma utilizzando gli strati in cima a questi nucleo API è quasi sempre più conveniente e gestibile, e ti protegge dalle modifiche apportate al nucleo di basso livello.
Modifica
Dalla descrizione di XAudio2 :
XAudio2 è un basso livello, multi-piattaforma API audio per Microsoft Windows e Xbox 360. Esso fornisce un'elaborazione del segnale e la miscelazione basi per i giochi che è simile ai suoi predecessori, DirectSound e XAudio. Per gli sviluppatori di giochi di Windows, XAudio2 è la sostituzione a lungo atteso per DirectSound.
Quindi, sembra che sarebbe l'API per l'uso, se si vuole un nucleo, libreria audio specifico per la piattaforma.
Modifica 2
Ero un po 'veloce con la mia prima risposta ... in realtà, dipende da cosa si vuole fare. Se tutto quello che vogliamo fare è riprodurre un file audio, quindi QSound è la strada da percorrere. Se, invece, volete mescolare e generare l'audio al volo, poi con un più funzionalità in grado biblioteca come XAudio2 (che è una parte di DirectX ed è destinato per la creazione del suono come parte dei videogiochi) sarebbe il modo per andare.