热情软件屋

 

如何实现wav文件的减速播放


编号:QA001421
建立日期: 1999年7月29日 最后修改日期:2000年7月10日
所属类别:

xiaobai:
    vb
    win nt/win9x
    如何使用vb实现wav文件的减速播放?(例如, 将一个2秒钟的文件用4秒钟播放)

回答:

    VB干不了这个活。声音的慢放是个很复杂的问题,单纯的慢放会引起声音严重失真,前年(1997)《音像世界》的《音像博士》曾回答过这个问题,你可以查阅了解声音慢放。
    RUOTONG的意见:
    引入directX库:
    建立command1.command2
    HScroll2(取值在100,32767)
    '------------------
    Dim dx As New DirectX7
    Dim ds As DirectSound
    Dim dsb As DirectSoundBuffer
    
    Private Sub Command1_Click()
    dsb.Play 1
    End Sub
    
    Private Sub Command2_Click()
    dsb.Stop
    End Sub
    
    Private Sub Form_Load()
    Set ds = dx.DirectSoundCreate("")
    ds.SetCooperativeLevel Me.hWnd, DSSCL_PRIORITY
    loadwav
    End Sub
    Private Sub loadwav()
    Dim desc As DSBUFFERDESC
    Dim wa As WAVEFORMATEX
     desc.lFlags = DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLPAN Or DSBCAPS_CTRLVOLUME Or DSBCAPS_STATIC
    
    Set dsb1 = ds.CreateSoundBufferFromFile("f:\bye.wav", desc, wa)
    Set dsb = ds.CreateSoundBufferFromFile("f:\welcome.wav", desc, wa)
    End Sub
    Private Sub HScroll2_Change()
    dsb.SetFrequency HScroll2.Value
    End Sub
    Apple的意见:
    通过修改WAV文件格式区的采样率可以实现WAV慢放,首先把DEMO.WAV调入内存,在偏移地址为18H处读出一个整型数(4 BYTES),把它除以2再写回去,同样对1CH处读出一个整型数(4 BYTES),把它除以2再写回去,播放这一段内存即可。

此问题由Kurt回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio