vb 音频写入avi时返回错误-2147205014 ,重谢(有红包噢)
一直返回的都是avierr_ok,一到写入时就出现-2147205014 错误.图片压缩时没问题,如果有avi视频及音频处理经验的可以联系我Q452781589.实时聊天音频数据保存为avi(类似电话录音),重谢(有红包噢)
Public Function InitWare(savefile As String) As Boolean '保存到字节流
'SaveTofile保存到文件 fps每秒祯数 PicFile 图片样张大小
If IsSaveAVI Then
MsgBox "文件保存中,不能再次执行此操作!", vbInformation, "方舟提示"
Exit Function
End If
Dim res As Long
Dim strhdr_vides As AVI_STREAM_INFO
Dim BI As BITMAPINFOHEADER
Dim opts As AVI_COMPRESS_OPTIONS
Dim opts2 As AVI_COMPRESS_OPTIONS
Dim pOpts As Long, pOpts2 As Long
Dim Psfile As String
res = AVIFileOpen(fileHDC, savefile, OF_WRITE Or OF_CREATE, 0&) '创建或打开AVI文件
If (res <> AVIERR_OK) Then GoTo error
Dim strhdr_auds_info As AVI_STREAM_INFO
With strhdr_auds_info '音频流结构
.fccType = mmioStringToFOURCC("auds", 0&)
'.fccHandler = mmioFOURCC("g", "7", "2", "6")
.dwFlags = 0 '
.dwCaps = 0 '
.wPriority = 0 '
.wLanguage = 0 '
.dwScale = 1600 ' //
.dwRate = 8000 ' //Hz
.dwStart = 0 '
.dwInitialFrames = 0 '
.dwSuggestedBufferSize = 1600 '
.dwQuality = -1 '
.dwSampleSize = 1 '
'.rcFrame.bottom = 0 '
'.rcFrame.left = 0 '
'.rcFrame.right = 0 '
'.rcFrame.top = 0 '
.dwEditCount = 0 '
.dwFormatChangeCount = 0 '
.dwLength = 0 '
End With
res = AVIFileCreateStream(fileHDC, AuStream, strhdr_auds_info) '创建音频流
If (res <> AVIERR_OK) Then GoTo error
'设备音频流
Dim strhdr_auds As WAVEFORMATEX
With strhdr_auds '音频格式
.wFormatTag = WAVE_FORMAT_PCM
.nChannels = 1
.nSamplesPerSec = 8000
.wBitsPerSample = 8
.nBlockAlign = (.wBitsPerSample / 8) * .nChannels
.nAvgBytesPerSec = .nSamplesPerSec * .nBlockAlign
'AVIStreamSetFormat(m_paviAudioStream, m_aviAudioFrames, &wave_format, sizeof(wave_format))
End With
Dim strauds() As Byte
ReDim strauds(0 To Len(strhdr_auds) - 1)
CopyMemory strauds(0), strhdr_auds, Len(strhdr_auds)
Dim btBuf As Long
btBuf = VarPtr(strauds(0))
Dim BufLen As Long
BufLen = UBound(strauds) + 1
res = AVIStreamSetFormat(AuStream, 0, ByVal btBuf, BufLen) '设备音频格式
If (res <> AVIERR_OK) Then GoTo error
' res = AVIStreamSetFormat(AuStream, 0, ByVal strhdr_auds, Len(strhdr_auds)) '设备音频格式
'If (res <> AVIERR_OK) Then GoTo error
pOpts2 = VarPtr(opts2)
'res = AVISaveOptions(Form1.hWnd, ICMF_CHOOSE_KEYFRAME Or ICMF_CHOOSE_DATARATE, 1, AuStream, pOpts2) '音频压缩方式
res = AVISaveOptions(Form1.hwnd, _
ICMF_CHOOSE_KEYFRAME Or ICMF_CHOOSE_DATARATE, _
1, _
AuStream, _
pOpts2) 'returns TRUE if User presses OK, FALSE if Cancel, or error code
'If res <> 1 Then 'In C TRUE = 1
' Call AVISaveOptionsFree(1, pOpts2)
' GoTo error
'End If
res = AVIMakeCompressedStream(AuCompressed, AuStream, opts2, 0&) '设置音频压缩方式
If res <> AVIERR_OK Then GoTo error
'res = AVIStreamSetFormat(AuCompressed, 0, ByVal VarPtr(strauds(0)), UBound(strauds) + 1) '设备音频格式
'If (res <> AVIERR_OK) Then GoTo error
'Dim res As Long
''Dim btBuf As Long
''Dim BufLen As Long
'btBuf = VarPtr(btWare(0))
'BufLen = UBound(btWare) + 1
Dim byt(1 To 1600) As Byte
BufLen = UBound(byt)
btBuf = VarPtr(byt(1))
ChunkID = 1
res = AVIStreamWrite(AuCompressed, _
ChunkID, _
1, _
btBuf, _
BufLen, _
AVIIF_KEYFRAME, _
ByVal 0&, _
ByVal 0&)
'出错位置,大佬们麻烦看一下写不了 音频写入avi时返回错误-2147205014
Debug.Print res
If res <> AVIERR_OK Then GoTo error
ChunkID = ChunkID + 1
InitWare = True
InitWare = True
Exit Function
error:
StopSave res
相关推荐
vb bmp to avi
vb bmp to avi 用vb写的,哪个有vb.net写的呢 好东西呢
VB.NET音频播放功能实现详解
本文还有配套的精品资源,点击获取 简介:在VB.NET中进行音频播放,主要使用多媒体编程和DirectX技术。通过利用.NET Framework自带的Windows Media Player控件,可以实现基本的音频播放功能。更高级的音频处理,包括音量控制和播放进度,可以通过DirectShow多媒体框架来完成,这涉及到对DirectX COM接口的深入理解和P/Invok...
VB实现的DWL音频频谱分析仪设计
频谱分析仪是一种用于测量信号的频率内容的仪器,能够将复杂的信号分解为不同频率的简单正弦波,并将这些频率的幅度与相位以图形形式展示出来。在音频处理领域,频谱分析仪可以分析音乐、语音以及其他声源的频谱特性,帮助开发人员和音频工程师更好地理解音频信号。DirectSound是微软DirectX的一个组件,提供了一组丰富的API来捕捉和播放声音。通过DirectSound,开发者能够以较低的延迟捕获实时声音数据。它允许访问声卡上的混音器,并控制混音器的不同方面,如音量、音调和3D音效定位。
VB多音频并行播放实战:同时播放2个wav文件
DirectX是由微软公司开发的一系列技术的集合,它主要是为了让开发者能够更容易地访问计算机硬件的高级功能,尤其是在游戏和多媒体领域。DirectX的前身是WinG,它最初是作为一个可以在Windows环境下运行的DOS游戏的图形和声音引擎。后来,微软公司认识到了图形和声音对于游戏的重要性,便将其扩展成了一整套API集,即DirectX。
vb.net写的BMP to AVI的范例
vb.net写的BMP to AVI的范例 其中组件还是有的COM类型的


多媒体
