NAudio在运行时更改卷

时间:2013-11-30 15:43:15

标签: naudio

我想在运行时更改我的audiostream的音量。 我用这个代码: 单身公共量= 0.01     Dim Wave1 As New NAudio.Wave.WaveOut

Dim xa() As Byte = IO.File.ReadAllBytes("C:\Song - Come Out and Play.wav")

Sub PlaySound()

    Dim data As New IO.MemoryStream(xa)

    Wave1.Init(New NAudio.Wave.BlockAlignReductionStream(NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(New NAudio.Wave.WaveFileReader(data))))

    Wave1.Volume = Volume

    Wave1.Play()

End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    PlaySound()
End Sub

但是如何在运行时更改音量? 当我点击带有

的按钮时,它不会改变
Volume = 2.0

为什么?

谢谢你。

第二个问题:如何更改此代码,播放MP3而不是WAV? 因为WAV很大..

感谢两者:)

抱歉我的英语不好。

此致,René:)

2 个答案:

答案 0 :(得分:1)

关于音量的第一个问题由Mark回答 - 音量在0.0 <= volume <= 1.0范围内,因此将音量设置为2.0无效。

关于如何使用MP3文件...

如果您输入的数据是MP3而不是WAV,则可以在代码中将WaveFileReader替换为Mp3FileReader。如果数据始终来自文件,则可以使用new AudioFileReader(filename)代替压缩格式。

这是使用MP3代替WAV的代码:

Public Volume as Single = 0.01

Dim Wave1 As New NAudio.Wave.WaveOut

Dim xa() As Byte = IO.File.ReadAllBytes("C:\Song - Come Out and Play.mp3")

Sub PlaySound()

    Dim data As New IO.MemoryStream(xa)

    Wave1.Init( _
        New NAudio.Wave.BlockAlignReductionStream( _
            NAudio.Wave.WaveFormatConversionStream.CreatePcmStream( _
                New NAudio.Wave.Mp3FileReader(data) _
        )))

    Wave1.Volume = Volume

    Wave1.Play()

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    PlaySound()
End Sub

答案 1 :(得分:0)

volume属性的最大值为1.0,表示1.0。如果您尝试将其设置得更高,最新的NAudio将抛出异常。