-
大小: 52.34MB文件類型: .rar金幣: 2下載: 2 次發布日期: 2022-12-12
- 語言: 其他
- 標簽: directshow??dhsow??ffmpeg??
資源簡介
使用DirectShow采集攝像頭并實時進行H264和AAC編碼,然后將其封裝成MP4,希望對大家有用
代碼片段和文件信息
#include?“stdafx.h“
#include?“GetDeviceInfo.h“
#include?“AudioSampleGrabber.h“
UINT?AudioDealFunc(LPVOID?lpVoid);
UINT?AudioDealFunc(LPVOID?lpVoid)
{
CAudioSampleGrabber?*pManage?=?(CAudioSampleGrabber*)lpVoid;
if?(pManage)
{
pManage->AudioDeal();
}
return?0;
}
CAudioSampleGrabber::CAudioSampleGrabber(void)
:m_mxMsgLog(FALSE?NULL?NULL)
{
m_hFaacEncHandle?=?NULL;
m_faacConfigurePtr?=?NULL;
m_bBeginEncode?=?FALSE;?
m_bEndEncode?=?FALSE;
m_bFirst?=?TRUE;
m_fpOut?=?NULL;
m_nInputSamples?=?0;????//輸入采樣大小
m_nMaxOutputBytes?=?0; //輸出大小
//m_audioTotal?=?0;
m_sSavePath?=?_T(““);
m_arrAudioDataInfo.RemoveAll();
m_hMainExitEvent??=?CreateEvent(NULLTRUEFALSENULL);
m_bSampleBegin?=?TRUE;
}
CAudioSampleGrabber::~CAudioSampleGrabber(void)
{
}
ULONG?STDMETHODCALLTYPE?CAudioSampleGrabber::AddRef()?
{?
return?2;?
}
ULONG?STDMETHODCALLTYPE?CAudioSampleGrabber::Release()?
{?
return?1;?
}
HRESULT?STDMETHODCALLTYPE?CAudioSampleGrabber::QueryInterface(REFIID?riid?void?**?ppv)
{
if(?riid?==?IID_ISampleGrabberCB?||?riid?==?IID_IUnknown?)
{?
*ppv?=?(void?*)?static_cast?(?this?);
return?NOERROR;
}?
????????
return?E_NOINTERFACE;
}
HRESULT?STDMETHODCALLTYPE?CAudioSampleGrabber::SampleCB(double?SampleTime?IMediaSample?*pSample)
{
return?0;
}
????????
HRESULT?STDMETHODCALLTYPE?CAudioSampleGrabber::BufferCB(double?SampleTime?BYTE?*pBuffer?long?BufferLen)
{
CString?str;
//str.Format(_T(“\n?Audio--BufferLen:%ld“)?BufferLen);
//OutputDebugString(str);
if(m_bBeginEncode)
{
BYTE?*?pcmData?=?new?BYTE[BufferLen];
memcpy(pcmData?pBuffer?BufferLen);
GrabDataInfo?sData;
sData.pData?=?pcmData;
sData.nDataSize?=?BufferLen;
sData.dSampleTime?=?SampleTime;
m_arrAudioDataInfo.Add(sData);
str.Format(_T(“\n?Audio--BufferLen:%ld?SampleTime:%f?\n“)?BufferLen?SampleTime);
OutputDebugString(str);
if?(m_bFirst)
{
m_bFirst?=?FALSE;
AfxBeginThread(AudioDealFunc?this);
}
}
return?0;
}
void?CAudioSampleGrabber::AudioDeal()
{
USES_CONVERSION;
string?strFullPath?=?W2A(m_sSavePath);
m_fpOut?=?fopen(strFullPath.c_str()?“wb“);
m_hFaacEncHandle?=?faacEncOpen(m_nSamplesPerSec?m_nChannels?&m_nInputSamples?&m_nMaxOutputBytes);
if(m_hFaacEncHandle?==?NULL)
{
OutputDebugString(_T(“faacEncOpen?failed“));
return;
}
//獲取配置
m_faacConfigurePtr?=?faacEncGetCurrentConfiguration(m_hFaacEncHandle);
m_faacConfigurePtr->inputFormat?=?FAAC_INPUT_16BIT;
//?0?=?Raw1?=?ADTS
m_faacConfigurePtr->outputFormat?=?1;
m_faacConfigurePtr->aacobjectType?=?MAIN;
m_faacConfigurePtr->allowMidside?=?0;
m_faacConfigurePtr->useLfe?=?0;
m_faacConfigurePtr->useTns?=?1;
//設置配置
int?nRet?=?faacEncSetConfiguration(m_hFaacEncHandle?m_faacConfigurePtr);
m_bSampleBegin?=?TRUE;
while?(1)
{
DWORD?dwRet?=?WaitForSingleobject(m_hMainExitEvent?10);??
if(dwRet?==?WAIT_OB
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5615??2017-02-25?17:07??CameraAVEncodeEx\AudioSampleGrabber.cpp
?????文件???????2356??2017-02-25?17:16??CameraAVEncodeEx\AudioSampleGrabber.h
?????文件???18936320??2014-05-06?10:08??CameraAVEncodeEx\bin\avcodec-55.dll
?????文件???11179022??2016-05-05?12:55??CameraAVEncodeEx\bin\avcodec-56.dll
?????文件?????119310??2015-10-28?10:39??CameraAVEncodeEx\bin\avdevice-55.dll
?????文件?????147982??2016-05-05?12:54??CameraAVEncodeEx\bin\avdevice-56.dll
?????文件?????709646??2015-10-28?10:39??CameraAVEncodeEx\bin\avfilter-3.dll
?????文件????2034688??2014-05-06?10:08??CameraAVEncodeEx\bin\avfilter-4.dll
?????文件????1430542??2016-05-05?12:55??CameraAVEncodeEx\bin\avfilter-5.dll
?????文件????5342720??2014-05-06?10:08??CameraAVEncodeEx\bin\avformat-55.dll
?????文件????2149390??2016-05-05?12:55??CameraAVEncodeEx\bin\avformat-56.dll
?????文件?????418304??2014-05-06?10:08??CameraAVEncodeEx\bin\avutil-52.dll
?????文件?????517646??2016-05-05?12:56??CameraAVEncodeEx\bin\avutil-54.dll
?????文件????2354688??2016-03-04?15:14??CameraAVEncodeEx\bin\CC_API.dll
?????文件?????163840??2015-12-21?11:46??CameraAVEncodeEx\bin\DEVICEIO.dll
?????文件?????594432??2017-02-25?17:22??CameraAVEncodeEx\bin\GetDeviceInfoD.exe
?????文件??????60318??2015-11-30?18:38??CameraAVEncodeEx\bin\libasprintf-0.dll
?????文件?????284282??2016-03-02?20:46??CameraAVEncodeEx\bin\libass-5.dll
?????文件?????144151??2015-09-02?14:24??CameraAVEncodeEx\bin\libassuan-0.dll
?????文件??????38003??2016-02-09?19:03??CameraAVEncodeEx\bin\libatomic-1.dll
?????文件?????298648??2015-10-05?17:14??CameraAVEncodeEx\bin\libbluray-1.dll
?????文件??????76571??2016-02-29?15:50??CameraAVEncodeEx\bin\libbz2-1.dll
?????文件??????61527??2015-07-08?13:44??CameraAVEncodeEx\bin\libcaca++-0.dll
?????文件?????857150??2015-07-08?13:44??CameraAVEncodeEx\bin\libcaca-0.dll
?????文件????1080874??2015-10-30?14:38??CameraAVEncodeEx\bin\libcairo-2.dll
?????文件??????34476??2015-10-30?14:38??CameraAVEncodeEx\bin\libcairo-gob
?????文件?????171881??2015-10-30?14:38??CameraAVEncodeEx\bin\libcairo-sc
?????文件??????46202??2015-06-29?19:27??CameraAVEncodeEx\bin\libcharset-1.dll
?????文件?????221899??2015-07-06?19:09??CameraAVEncodeEx\bin\libcppunit-1-13-0.dll
?????文件????1744718??2016-03-02?19:20??CameraAVEncodeEx\bin\libeay32.dll
............此處省略592個文件信息
評論
共有 條評論