0

一連の 44 kHz 16 ビット 2 チャンネルの非圧縮 Wave ファイル (リソースから読み取ったもの) があり、フェード アウトおよびフェード イン効果を適用して、すべてのWAVファイルのシーケンスからストリームを作成したいと考えています。

リソースの読み取りと 16 ビット ウェーブストリームの取得は正しく行われます。ターゲット形式も正しく表示されますが、acmnotpossible以下の波形変換ステップで例外として取得し続けます。私は何を間違っていますか?

String ResToPlay2 = NameSpaceString + ".Resources." + inWave2 + ".wav";
Stream _audioStream2;
int wavdur2 = 0;
Double fadeDurDbl2 = 0;
int fadeDur2 = 0;
if (!resA.GetManifestResourceStream (ResToPlay2).Equals (Stream.Null))
{
    _audioStream2 = resA.GetManifestResourceStream (ResToPlay2);
    WaveStream wavePCMStream2 = WaveFormatConversionStream.CreatePcmStream (new WaveFileReader (_audioStream2));
    WaveFormat targetFmt2 = new WaveFormat (44100, 32, 2);
    WaveStream waveStream2 = new WaveFormatConversionStream(targetFmt2,wavePCMStream2);
    using (waveStream2)
    {
        wavdur2 = (int) waveStream2.TotalTime.Milliseconds;
        var fader2 = new FadeInOutSampleProvider(new WaveToSampleProvider(waveStream2));
        fadeDurDbl2 = (wavdur2*OverlapPCT) / 100;
        fadeDur2 = (int) Math.Round(fadeDurDbl2, 0);
        fader2.BeginFadeIn (fadeDur2);
        var stwp2 = new NAudio.Wave.SampleProviders.SampleToWaveProvider (fader2);
        WaveFileWriter.CreateWaveFile (Application.StartupPath + "\\" + "fadedIn_?.wav", stwp2);
    }
}
4

1 に答える 1

0

WaveFormatConversionStreamPCM から始めているので、なぜ使用しているのかわかりません。最初にサンプル プロバイダーにアクセスしてから、使用できますFadeInOutSampleProvider

var reader = new WaveFileReader (_audioStream2)
var sampleProvider = SampleProviderConverters.ConvertWaveProviderIntoSampleProvider(reader);
var fader = new FadeInOutSampleProvider (sampleProvider);
于 2013-06-26T14:27:03.837 に答える