2016-10-13 4 views
0

Dans mon application j'ai certains fichiers audio sont ceux dans .wav Format, ici je vérifie chaque fichier audio BitRate, et si des fichiers ci-dessous 128Kbps, j'ai changé ces fichiers à débit binaire 128kbps, en utilisant le code ci-dessousAcmNotPossible appelant acmStreamOpen Erreur

int bitrate; 
string FullPath = @Server.MapPath("~/AudioFiles/"); 
string[] filePaths = Directory.GetFiles(FullPath, "*.wav", SearchOption.AllDirectories); 
for (int i = 0; i < filePaths.Length; i++) 
{ 
    string[] FileExt = filePaths[i].Split('\\'); 
    string[] Ext = FileExt[FileExt.Length - 1].Split('.'); 
    string ExtFile = Ext[Ext.Length - 1]; 
    if (ExtFile == "wav" || ExtFile == "WAV") 
    { 
     using (var reader = new WaveFileReader(filePaths[i])) 
     { 
      bitrate = reader.WaveFormat.AverageBytesPerSecond * 8; 
      reader.Dispose(); 
     } 
     if (bitrate < 128000) 
     { 
      using (var reader = new WaveFileReader(filePaths[i])) 
      { 
       var newFormat = new WaveFormat(8000, 16, 1); 
       using (var conversionStream = new WaveFormatConversionStream(newFormat, reader)) 
       { 
        WaveFileWriter.CreateWaveFile(Server.MapPath("~/AudioFiles/" + FileExt[FileExt.Length - 1]), conversionStream); 
       } 
      } 
    } 
} 

le code ci-dessus fonctionne pour la plupart des fichiers, mais je reçois ci-dessous erreur pour certains fichiers audio. enter image description here comment puis-je résoudre le problème?

+0

S'il vous plaît choisir le bon tag de langue. – 2501

Répondre

0

En règle générale, vous ne pouvez modifier qu'une chose à la fois avec ACM. Par conséquent, si vous disposez d'un fichier stéréo de 16 kHz, vous ne pouvez pas accéder à un fichier mono de 8 kHz en une fois.

Alors vous devez voir ce que WaveFormat a a, et éventuellement faire plusieurs étapes de conversion.

Il se peut aussi que votre fichier WAV d'entrée utilise un codec que ACM ne peut pas décoder. Mais encore une fois vous auriez besoin d'examiner votre entrée WaveFormat pour le savoir.