lame边录音边转换
文章出处:http://big-joe.blog.sohu.com/88902836.html
void CViewTFreqList::RecFileInit(LPCTSTR sFileName,
LPCTSTR sStationName,
LPCTSTR sFreq,
LPCTSTR sLanguage,
LPCTSTR sTaskName,
LPCTSTR sComment)
{
CString sTemp;
m_lgf = lame_init();
lame_set_in_samplerate(m_lgf,16000);//16000Hz
lame_set_num_channels(m_lgf,2); //双声道,这个OK
lame_set_brate(m_lgf,16); //16kBps
lame_set_quality(m_lgf,5); //中等的
lame_init_params(m_lgf);
fout=fopen(sFileName,"wb+");
id3tag_init(m_lgf);
id3tag_add_v2(m_lgf);
id3tag_space_v1(m_lgf);
id3tag_pad_v2(m_lgf);
id3tag_set_artist(m_lgf,sStationName);
sTemp.Format("%s(%s)",sFreq,sLanguage);
id3tag_set_album(m_lgf,sTemp);
sTemp.Format("任务:%s",sTaskName);
id3tag_set_title(m_lgf,sTemp);
id3tag_set_track(m_lgf,"0");
id3tag_set_year(m_lgf,"");
id3tag_set_comment(m_lgf,sComment);
id3tag_set_genre(m_lgf,"");
//lame_mp3_tags_fid(m_lgf,fout);
}
void CViewTFreqList::RecFileClose()
{
BYTE Buf[7200];
UINT mp3bytes = lame_encode_flush(m_lgf,Buf,7200);
if (mp3bytes>0)
{
fwrite(Buf,1,mp3bytes,fout);
}
lame_close(m_lgf);
fflush(fout);
fclose(fout);
fout=NULL;
}
void CViewTFreqList::OnPCMBufFull(WPARAM wParam,LPARAM lParam)
{
if (fout!=NULL)
{
short int *RecBuf;
short int *RecBufL;
short int *RecBufR;
RecBuf=(short int *)HeapAlloc(GetProcessHeap(),0,lParam);
RecBufL=(short int *)HeapAlloc(GetProcessHeap(),0,lParam/2);
RecBufR=(short int *)HeapAlloc(GetProcessHeap(),0,lParam/2);
memcpy(RecBuf,(void*)wParam,lParam);
LONG x,y;
LONG num_samples=lParam/4; //4个short 长度是 LONG
for (x=0, y=0; x<(num_samples*2); x+=2, y++)
{
RecBufL[y] = RecBuf[x];
RecBufR[y] = RecBuf[x+1];
}
LONG nMp3Length=(unsigned long)(1.25*(double)num_samples) + 7200;
// LONG mp3bytes =lame_encode_buffer(m_lgf,RecBufL,RecBufR,num_samples,(unsigned char *)RecBuf,nMp3Length);
Long mp3bytes = lame_encode_buffer_interleaved( );
if (mp3bytes>0)
{
fwrite(RecBuf,1,mp3bytes,fout);
}
HeapFree(GetProcessHeap(),0,RecBuf);
HeapFree(GetProcessHeap(),0,RecBufL);
HeapFree(GetProcessHeap(),0,RecBufR);
}
}
void CViewTFreqList::RecFileClose()
{
BYTE Buf[7200];
UINT mp3bytes = lame_encode_flush(m_lgf,Buf,7200);
// UINT mp3bytes = lame_get_size_mp3buffer( * );
if (mp3bytes>0)
{
fwrite(Buf,1,mp3bytes,fout);
}
lame_close(m_lgf);
fflush(fout);
fclose(fout);
fout=NULL;
}
mmioInstallIOProc( (FOURCC)mmioStringToFOURCC("WAV"),0 ) , )
waveInOpen();
waveInPrepareHeader();
waveInAddBuf()
waveInStar();
waveInClose()
waveInStop()
mmioOpen()
mmioSetBuffer()
mmioSeek() mmioFOURCC( 'W','A','V','E' )
mmioCreateChunk()
mmioWrite();
mmAscend();
mmioFlush()
mmioClose()
参考:http://chinaxxren.iteye.com/blog/1750296
http://tianjing.cnblogs.com/
http://ikinglai.blog.51cto.com/6220785/1228309/
lame边录音边转换的更多相关文章
- iOS 通过(lame)将录制音频转换成Mp3
版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处,保留原帖地址及作者署名. Url:http://blog.csdn.net/ysy441088327/article/detail ...
- WebRTC录音(2)-录音文件转换成WAV格式
以下是源码,大路货,从网上找的. 但是,这个东西在MacOS上是有问题的,原因在最后,都是泪啊. #include <stdio.h> #include <string.h> ...
- MP3 Lame 转换 参数 设置(转)
我们在对音频格式的转换中,打交道最多的就是MP3了.如果你能彻底玩转MP3,那么对你的音频创作和对其他音频格式的掌握会有很大的帮助.下面我们给大家介绍MP3制作软件:LAME 要制作出高音质的MP3靠 ...
- 如何将MP3录音转文字
相信很多人都有电话录音的习惯,因为这样可以记录下很多重要的信息.那么当我们通过录音将一些重要的信息记录下来后,我们应该怎样将这些录音文件转换成文字进行记录呢?下面我们就一起来看一下吧. 操作步骤: 步 ...
- Android Weekly Notes Issue #238
Android Weekly Issue #238 January 1st, 2017 Android Weekly Issue #238 本期内容包括: Firebase发送Notification ...
- C 语言资源大全中文版
C 语言资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-c 是 koz.ross 发起维护的 C 语言资源列表,内容包括了: ...
- 基于科大讯飞语音云windows平台开发
前记: 前段时间公司没事干,突发奇想想做一个语音识别系统,看起来应该非常easy的,但做起来却是各种问题,这个对电气毕业的我,却是挺为难的.谷姐已经离我们而去,感谢度娘,感谢CSDN各位大神,好歹也做 ...
- 录音文件lame转换MP3相关配置
文件下载整个功能完成了,那么对应的文件上传也跑不了.So~ Look here~ 业务需求是录制音频然后上传到七牛并且Android可以读. 与安卓沟通了一下统一了mp3格式,大小质量都不错.由于AV ...
- iOS: lame框架将PCM录音转成MP3格式
lame框架将PCM录音转成MP3格式 1.lame下载地址:https://github.com/rbrito/lame,它是一个不可执行的文件,需要借助build-lame.sh脚本将其编译成.a ...
随机推荐
- jQuery---中的动画
show():$('p').show(); show(1000) 里面加参数会让元素在显示的时候动起来 hide():$('p').hide(); hide(1000) 里面加参数让元素在隐藏的时候动 ...
- Linq 备忘录
public class CTest { public int i { get; set; } public string j { get; set; } } 一.Range var items=En ...
- git clone错误
git clone错误 Initialized empty Git repository in ***/.git/ error: The requested URL returned error: 4 ...
- 对“Git”认知。
并没有接触过这个名词,相信在今后的学习和生活中会接触.不过在网上大致看了一下,应该是一种类似于后台控制的系统吧,希望以后自己会了解这个陌生的东西(软件?系统?程序?).
- C语言程序设计第5堂作业
一.本次课学习主要内容及知识结构点: 二.实验内容:(60分) 1. 求奇数和.输入一批正整数(以零或负数为结束标志),求其中的奇数和.试编写相应程序. 2. 展开式求和.输入一个实数 x,计算并输出 ...
- 谈谈自己对C语言中函数指针的一些理解 (第一次写博客,有点小兴奋哈)
1.函数指针声明的格式及简单的使用 (1)格式:(返回值)(*函数指针名)(参数列表) 例如:声明一个无参数无返回值的函数指针(void)(*p)(void). (2)将函数指针指向某个无参数无 ...
- Android深度探索--HAL与驱动开发----第九章读书笔记
Google为Android加入HAL主要有如下的目的. 统一硬件的调用接口.由于HAL 有标准的调用接口,所以可以利用HAL屏蔽Linux 驱动复杂.不统一的接口. 解决了GPL版权问题.由于Lin ...
- visualssh 是一个可视化的ssh客户端
这两个周末写了visualssh,一个可视化的ssh客户端.里面集成了putty的功能,通过ssh协议与Linux server通讯. 以后可以针对不同的应用编写相关插件,便于管理Linux服务器上的 ...
- BZOJ 3675 序列分割
斜率优化.注意要判分母为0的情况.dp数组可以滚一维. #include<iostream> #include<cstdio> #include<cstring> ...
- 上传文件swfUploadConfig.js
/*/* * Unobstrusive swf upload widget using jQuery. *example : $(':file.uo_widget_form_input_file_sw ...