2009-12-27 13 views
0

Lorsque je tente de lire le fichier sonore « Windows Critical Stop.wav » je reçois l'exception suivante: exec {"Sound API only supports playing PCM wave files."} System.Exception {System.InvalidOperationException}SoundPlayer et Windows 7 fichier wav

Je comprends ce que PCM est, je ne sais pas comment ce soit: 1) lire le fichier son, 2) déterminer a priori qu'il ne s'agit pas de PCM et ne pas jouer, et bloquer le fichier d'être choisi.

Voici le code que je utilise:

SoundPlayer player = new SoundPlayer(); 
player.SoundLocation = FileNameTextBox.Text; 

try 
{ 
    player.Play(); 
} 
catch (Exception exec) 
{ 
    MessageBox.Show("Sound could not be played: " + exec.ToString()); 
} 

Répondre

2

fichiers Wave peuvent être codés différemment (même avec le codec GSM), afin d'examiner exactement ce codec est utilisé pour passer un particulier. Vérifiez simplement les bits AudioFormat.

https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

+0

Merci qui a aidé. Le fichier en question avait un 0x55 dans ce champ. Pour tout curieux je mets dans le code suivant: if (dialog.ShowDialog() == DialogResult.OK) { BinaryReader br = nouveau BinaryReader (File.Open (dialog.FileName, FileMode.Open)); br.BaseStream.Position = 20;Int16 aF = br.ReadInt16(); br.Fermer(); if ((aF! = 1) && (aF! = 2)) { MessageBox.Show ("Mauvais format audio =" + audioFormat.ToString()); retour; Un autre site Web avec des informations de format: http://www.sonicspot.com/guide/wavefiles.html Avait un peu plus de détails sur les formats. Merci encore pour votre aide. –

+0

Je suis content que cela vous a aidé. – oldUser

+0

Ce programme peut convertir vos fichiers en PCM. Il suffit de décocher la merde adware et c'est gratuit: http://www.nch.com.au/switch/ – Sire

-1

Vous devez utiliser ce lecteur le code que vous avez est un système damager Microsoft admin,

+0

??? Pouvez-vous mettre cela en anglais standard? –