资源简介
本程序实现采集麦克风音频数据,压制为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建立参数化盾构隧道
评论
共有 条评论