資源簡介
本程序實現采集麥克風音頻數據,壓制為aac
代碼片段和文件信息
/*
*最簡單的錄音程序
*繆國凱?MK
*821486004@qq.com
*本程序實現采集麥克風音頻數據,壓制為aac
*2015-6-19
*/
#include?“stdafx.h“
#include?
#include?
#include?
#pragma?comment(lib“Strmiids“)
#pragma?comment(lib“comsuppw.lib“)
#include?
#pragma?comment(lib“winmm“)
#define SAFE_RELEASE(x) {if(x?!=?NULL)?x->Release();x=NULL;}
#ifdef?__cplusplus
extern?“C“
{
#endif
#include?“libavcodec/avcodec.h“
#include?“libavformat/avformat.h“
#include?“libswscale/swscale.h“
#include?“libavdevice/avdevice.h“
#include?“libavutil/audio_fifo.h“
#pragma?comment(lib?“avcodec.lib“)
#pragma?comment(lib?“avformat.lib“)
#pragma?comment(lib?“avutil.lib“)
#pragma?comment(lib?“avdevice.lib“)
#pragma?comment(lib?“avfilter.lib“)
//#pragma?comment(lib?“postproc.lib“)
//#pragma?comment(lib?“swresample.lib“)
//#pragma?comment(lib?“swscale.lib“)
#ifdef?__cplusplus
};
#endif
_bstr_t strDeviceName;
static?char?*dup_wchar_to_utf8(wchar_t?*w);
int?_tmain(int?argc?_TCHAR*?argv[])
{
AVFormatContext * pFmtCtx?=?NULL?*ofmt_ctx_a?=?NULL;
AVInputFormat * pAudioInputFmt?=?NULL;
AVOutputFormat * pAudioOutputFmt?=?NULL;
AVStream * pAudioStream?=?NULL;
AVCodecContext * pOutputCodecCtx?=?NULL;
AVCodecContext * pInputCodecCtx?=?NULL;
AVCodec * pCodec?=?NULL;
AVframe * pAudioframe?=?NULL;
uint8_t * pframeBuffer?=?NULL;
int iAudioIndex?=?-1;
//注冊FFMPEG庫
av_register_all();
avdevice_register_all();
//查找輸入方式
pAudioInputFmt?=av_find_input_format(“dshow“);
assert(pAudioInputFmt?!=?NULL);
//以Direct?Show的方式打開設備,并將?輸入方式?關聯到格式上下文
char?*?psDevName?=?dup_wchar_to_utf8(L“audio=麥克風?(Realtek?High?Definition?Au“);
assert(avformat_open_input(&pFmtCtxpsDevNamepAudioInputFmtNULL)?==?0);
// avformat_find_stream_info(pFmtCtxNULL);
if(avformat_find_stream_info(pFmtCtxNULL)<0)??
return?-1;?
for(int?i=0;?inb_streams;?i++)?
{
if(pFmtCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO)
{
iAudioIndex=i;
AVCodec?*tmpCodec?=?avcodec_find_decoder(pFmtCtx->streams[i]->codec->codec_id);
if(0?>?avcodec_open2(pFmtCtx->streams[i]->codec?tmpCodec?NULL))
{
printf(“can?not?find?or?open?decoder!\n“);
}
break;
}
}
av_dump_format(pFmtCtx?0?NULL?0);
avformat_alloc_output_context2(&ofmt_ctx_a?NULL?NULL?“abc.aac“);
pAudioStream?=?avformat_new_stream(ofmt_ctx_a?NULL);
pAudioStream->codec->codec?=?avcodec_find_encoder(ofmt_ctx_a->oformat->audio_codec);
pOutputCodecCtx?=?pAudioStream->codec;
pOutputCodecCtx->sample_rate?=?pFmtCtx->streams[0]->codec->sample_rate;
pOutputCodecCtx->channel_layout?=?ofmt_ctx_a->streams[0]->codec->channel_layout;
pOutputCodecCtx->channels?=?av_get_channel_layout_nb_channels(pAudioStream->codec->channel_layout);
if(pOutputCodecCtx->channel_layout?==?0)
{
pOutputCodecCtx->channel_layout?=?AV_CH_LAYOUT_STEREO;
pOutputCodecCtx->channels?=?av_get_channel_layout_nb_c
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-06-19?15:33??AudioCapture\
?????目錄???????????0??2015-06-19?15:23??AudioCapture\AudioCapture\
?????文件?????????903??2015-06-16?14:09??AudioCapture\AudioCapture.sln
?????文件???????16896??2015-06-19?15:33??AudioCapture\AudioCapture.suo
?????文件??????112133??2015-06-19?15:23??AudioCapture\AudioCapture\abc.aac
?????文件????????8760??2015-06-19?15:32??AudioCapture\AudioCapture\AudioCapture.cpp
?????文件????????4481??2015-06-16?14:12??AudioCapture\AudioCapture\AudioCapture.vcxproj
?????文件????????1336??2015-06-16?14:09??AudioCapture\AudioCapture\AudioCapture.vcxproj.filters
?????文件?????????143??2015-06-16?14:09??AudioCapture\AudioCapture\AudioCapture.vcxproj.user
?????文件?????????165??2015-06-16?14:09??AudioCapture\AudioCapture\AudioCapture1.cpp
?????文件????18936320??2014-05-06?10:08??AudioCapture\AudioCapture\avcodec-55.dll
?????文件?????1340928??2014-05-06?10:08??AudioCapture\AudioCapture\avdevice-55.dll
?????文件?????2034688??2014-05-06?10:08??AudioCapture\AudioCapture\avfilter-4.dll
?????文件?????5342720??2014-05-06?10:08??AudioCapture\AudioCapture\avformat-55.dll
?????文件??????418304??2014-05-06?10:08??AudioCapture\AudioCapture\avutil-52.dll
?????目錄???????????0??2015-06-19?15:27??AudioCapture\AudioCapture\Debug\
?????文件?????????406??2015-06-16?14:13??AudioCapture\AudioCapture\Debug\AudioCapture.exe.em
?????文件?????????472??2015-06-16?14:13??AudioCapture\AudioCapture\Debug\AudioCapture.exe.em
?????文件?????????381??2015-06-19?15:27??AudioCapture\AudioCapture\Debug\AudioCapture.exe.intermediate.manifest
?????文件??????????92??2015-06-19?15:27??AudioCapture\AudioCapture\Debug\AudioCapture.lastbuildstate
?????文件????????2952??2015-06-19?15:27??AudioCapture\AudioCapture\Debug\AudioCapture.log
?????文件???????87250??2015-06-19?15:27??AudioCapture\AudioCapture\Debug\AudioCapture.obj
?????文件???????88039??2015-06-16?14:28??AudioCapture\AudioCapture\Debug\audiocapture.obj.enc
?????文件?????1114112??2015-06-16?14:12??AudioCapture\AudioCapture\Debug\AudioCapture.pch
?????文件?????????713??2015-06-16?14:11??AudioCapture\AudioCapture\Debug\AudioCapture.vcxprojResolveAssemblyReference.cache
?????文件???????????0??2015-06-16?14:11??AudioCapture\AudioCapture\Debug\AudioCapture.write.1.tlog
?????文件?????????214??2015-06-16?14:12??AudioCapture\AudioCapture\Debug\AudioCapture_manifest.rc
?????文件????????1662??2015-06-19?15:27??AudioCapture\AudioCapture\Debug\cl.command.1.tlog
?????文件???????26936??2015-06-19?15:27??AudioCapture\AudioCapture\Debug\CL.read.1.tlog
?????文件???????19762??2015-06-19?15:27??AudioCapture\AudioCapture\Debug\CL.read.2.tlog
?????文件????????2282??2015-06-19?14:57??AudioCapture\AudioCapture\Debug\CL.read.3.tlog
............此處省略171個文件信息
- 上一篇:立方酒店管理系統 (大型代碼)
- 下一篇:Dynamo建立參數化盾構隧道
評論
共有 條評論