2016-08-23 6 views
0

J'ai utilisé ce code pour rééchantillonner fichier et l'enregistrer, mais le fichier des sons comme l'enregistrement avance rapide:Convertir un fichier vocal mp4 à flux WAV

using (MediaFoundationReader reader = new MediaFoundationReader(url)) 
{ 
    using (ResamplerDmoStream resampledReader = new ResamplerDmoStream(reader, new WaveFormat(16000, 16, 1))) 
     { 
      using (WaveFileWriter waveWriter = new WaveFileWriter(@"c:\test.wav", resampledReader.WaveFormat)) 
       { 
        resampledReader.CopyTo(waveWriter); 
       } 
     } 
} 

Répondre

0

Le WaveFileWriter doit avoir la même WaveFormat que resampledReader. Passez donc resampledReader.WaveFormat au constructeur WaveFileWriter.

+0

si je dois le WAV final soit 16 kHz, 16 bits, Mono , dois-je rééchantillonner une fois de plus pour m'assurer que je reçois le WAV dont j'ai besoin? –

+0

vous avez seulement besoin de ré-échantillonner une fois. Utilisez targetamplerate, pas sourcesamplerate. –

+0

J'ai réécrit le code selon vos instructions (édité en question) mais ça sonne toujours comme FF –

0

Je ne suis pas sûr de ce que signifie rééchantillonnage, mais si vous avez besoin pour obtenir le wav d'une vidéo, cela fonctionne ...

using (var video = new MediaFoundationReader(file)) 
{ 
    file = TempWav; 
    WaveFileWriter.CreateWaveFile(file, video); 
}