如题!
acm编码怎么使用,是不是还有其他方法,需要源码
acm编码怎么使用,是不是还有其他方法,需要源码
解决方案 »
- delphi中,写了一个类继承TCommponent,那这个类不写构造函数可以吗?
- 关于显示网页代码
- 关于Delphi调用C语言的Dll的问题
- 一个简单的问题。关于sqlserver的触发器里写数据类型转化
- 我的Delphi在运行是说缺少后缀为dll的文件?怎么办?
- 一个很菜的问题!
- 用DELPHI6.0写ACTIVE X在ASP中来用,是选ACTIVEX FORM 还是ACIVEX CONTROL 还是别的?
- tadoconnection连接数据库的问题。
- 汉字的问题
- 帮忙看看http://www.yuanzn.com/image/main.jpg上的工具栏用的是什么控件?
- 如何判断输入TEdit的日期格式是否符合‘yyyy-mm-dd’的格式
- 硬件在进步 软件在退步
例如,一面播放wave文件,一面打开record,
并指定用mp3记录,结果就会生成一个与wave文件同名的wp3文件。这是我以前确实试验成功的。
一般都是C,自己弄dll调用好了
http://www.programsalon.com/
这里有好多算法,自己下,要注册才可以
#include "stdafx.h"
#include "AudioCode.h"extern "C" void va_g729a_init_encoder();
extern "C" void va_g729a_encoder(short *speech, unsigned char *bitstream);
extern "C" void va_g729a_init_decoder();
extern "C" void va_g729a_decoder(unsigned char *bitstream, short *synth_short, int bfi);
#define L_FRAME_COMPRESSED 10
#define L_FRAME 80
#define SIZE_AUDIO_FRAME 960
#define SIZE_AUDIO_PACKED 60
#pragma comment(lib,"G729a")CAudioCode::CAudioCode()
{
va_g729a_init_encoder();
va_g729a_init_decoder();
}CAudioCode::~CAudioCode()
{
}BOOL CAudioCode::EncodeAudioData(char *pin,int len,char* pout,int* lenr)
{
BOOL bRet=FALSE;
if(!pin||len!=SIZE_AUDIO_FRAME||!pout)
goto RET;
va_g729a_encoder((short*)pin,(BYTE*)pout);
va_g729a_encoder((short*)(pin+160),(BYTE*)pout+10);
va_g729a_encoder((short*)(pin+320),(BYTE*)pout+20);
va_g729a_encoder((short*)(pin+480),(BYTE*)pout+30);
va_g729a_encoder((short*)(pin+640),(BYTE*)pout+40);
va_g729a_encoder((short*)(pin+800),(BYTE*)pout+50); if(lenr)
*lenr=SIZE_AUDIO_PACKED; bRet=TRUE;
RET:
return bRet;
}BOOL CAudioCode::DecodeAudioData(char *pin,int len,char* pout,int* lenr)
{
BOOL bRet=FALSE;
if(!pin||len!=SIZE_AUDIO_PACKED||!pout)
goto RET; va_g729a_decoder((BYTE*)pin,(short*)(pout),0);
va_g729a_decoder((BYTE*)pin+10,(short*)(pout+160),0);
va_g729a_decoder((BYTE*)pin+20,(short*)(pout+320),0);
va_g729a_decoder((BYTE*)pin+30,(short*)(pout+480),0);
va_g729a_decoder((BYTE*)pin+40,(short*)(pout+640),0);
va_g729a_decoder((BYTE*)pin+50,(short*)(pout+800),0); if(lenr)
*lenr=SIZE_AUDIO_FRAME;
bRet=TRUE;
RET:
return bRet;
}
因为类似g72X,mp3之类的,都是在系统的编码里面有的,当然,没有的话安装一下就可以了。
所以你可以直接用 windows的ACM方面的接口进行数据录音和格式转换就可以了
而且网上有现成的代码。好像是acmin acmout之类的吧,记不太清楚了
http://www.2ccc.com/article.asp?articleid=3796Audio Components Suite v2.2
Audio Components Suite,一套跨平台的音频处理组件包:
1、支持音频回放、捕捉。
2、CD-ROM回放、CDDA捕捉。
3、Wave流支持。
4、MP3、Ogg、FLAC、Monkey等格式支持。
5、音频混响处理。
6、输入设备动态捕捉。
7、音频格式转换。
8、声音音频指示器。
9、其他一些特效。
-----------------------------------------------------
Base Classes
TACSConverter
TACSFileIn
TACSFileOut
TACSInput
TACSOutput
TACSStreamedInput
TACSStreamedOutputAudio I/O
TALSAAudioIn (Linux only)
TALSAAudioOut (Linux only)
TAOLive (Linux only)
TAudioIn
TAudioOut
TCDIn
TCDPlayer
TFLACIn
TFLACOut
TInputList
TMACIn (Windows only)
TMACOut (Windows only)
TMemoryIn
TMixer (Linux only)
TMP3Out
TMP3ToWav
TMPEGIn (Linux only)
TNULLOut
TStreamIn
TStreamOut
TVorbisIn
TVorbisOut
TWaveIn
TWaveOutAudio Processing
TAudioMixer
TAudioProcessor
TBWFilter
TConvolver
TMSConverter
TRateConverter
TSampleConverter
TSincFilter
TSoundIndicator
TStereoBalance
http://www.2ccc.com/article.asp?articleid=766