guok's blog

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4 随笔 :: 0 文章 :: 91 评论 :: 0 引用


ActiveX控件,可以进行音频的录/放、并支持文件上传。

下载地址:http://files.cnblogs.com/guok/MicroRecorder.rar

文件说明:
MicroRecorder.dll:ActiveX控件
Setup.exe:由于控件没有签名,另外做了一个安装程序
test.htm:控件测试页面

方法:
1. bool Init()
   说明:设备初始化
   返回:初始化是否成功
 
2. bool RecordStart()
   说明:开始录音,录音时间限制为1分钟
   返回:是否成功

3. RecordStop()
   说明:停止录音
  
4. bool PlayStart()
   说明:播放录制的声音
   返回:是否成功

5. PlayStop()
   说明:停止播放
 
6. Update()
   说明:轮询缓冲区
  
7. Encode(bstrFormat)
   说明:音频编码
   bstrFormat:编码格式,目前支持三种格式
                   Pcm:PCM 8000Hz 16位 单声道
                   ALaw:CCITT A-Law 8000Hz 8位 单声道
                   ULaw:CCITT u-Law 8000Hz 8位 单声道

8. bool SaveHttp(bstrHost, lPort, bstrPath, bstrName)
   说明:将编码后的文件通过http上传(RFC-1867)
   bstrHost:主机地址
   lPort:端口
   bstrPath:网页路径
   bstrName:表单字段名,即input type=file元素的name属性
   返回:是否成功(http应答码为200)
  
9. bool SaveFtp(bstrHost, lPort, bstrFileName)
   说明:将编码后的文件通过ftp上传
   bstrHost:主机地址
   lPort:端口
   bstrFileName:上传文件名(可以包含路径)
   返回:是否成功
  
10. bool SaveFile(bstrFileName)
   说明:将编码后的文件保存在本地
   bstrFileName:文件名
   返回:是否成功
  
属性:
1. State
   说明:录音机状态,0-停止,1-录音,2-放音

 

posted on 2007-03-19 16:05 guok 阅读(2739) 评论(11) 编辑 收藏

评论

#1楼 2007-03-19 17:09 flower.b      
非常不错.特别是上传功能。
 回复 引用 查看   

#2楼 2007-03-19 17:11 yunhuasheng      
Great!!
 回复 引用 查看   

能讲下上传怎么实现的思路吗/
 回复 引用 查看   

#4楼[楼主] 2007-03-20 09:36 guok      
@Phinecos(洞庭散人)
http上传需要先通过抓包研究浏览器的实现方法
 回复 引用 查看   

录音时间能无限长吗?
 回复 引用   

#6楼 2007-03-20 16:09 guok
@hao[匿名]
如果需要定制控件可以和我联系
 回复 引用   

能不能把源代码公开下,我想了解你如何将pcm 无符号的格式转换为alaw的
,我的qq是120905524,谢谢!!
 回复 引用   

#8楼[楼主] 2007-05-30 16:37 guok      
int MicroRecorder::ALawEncode(char *destBuf, const char *srcBuf, int srcSize)
{
    srcSize 
/= 2;
    
short *pcmBuf = (short *)srcBuf;
    
short *pcmEndBuf = pcmBuf + srcSize;
    
for (; pcmBuf < pcmEndBuf; pcmBuf++, destBuf++)
        
*destBuf = ALawEncode(*pcmBuf);
    
return srcSize;
}

char MicroRecorder::ALawEncode(short pcm)
{
    unsigned alaw;
    
if (pcm < 0)
    {
        pcm 
= ~pcm;
        alaw 
= 0x00;
    }
    
else
        alaw 
= 0x80;
    pcm 
>>= 4;
    
if (pcm >= 0x100)
    {
        pcm 
>>= 4;
        alaw 
+= 0x40;
    }
    
if (pcm >= 0x40)
    {
        pcm 
>>= 2;
        alaw 
+= 0x20;
    }
    
if (pcm >= 0x20)
    {
        pcm 
>>= 1;
        alaw 
+= 0x10;
    }
    alaw 
+= pcm;
    
return alaw ^ 0x55;
}
 回复 引用 查看   

能否取消时间限制,是否要收费?
 回复 引用   

#10楼 2009-05-03 00:31 水白
楼主能不能讲一下,怎么保存名字确定的录音文件?
 回复 引用   

#11楼 2009-05-03 00:48 水白
楼主,我在asp中嵌入你的录音控件,bool SaveFile(bstrFileName)函数中的bstrFileName文件名能不能接受asp变量啊?就是我想动态按照我的名字保存录音文件!行不行啊?
 回复 引用