91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

使用FFmpeg API采集攝像頭圖像和麥克風音頻,支持圖像預覽,把圖像和音頻編碼后保存成文件,實現視音頻同步機制。為更好理解代碼,請閱讀我博客上相關的一篇文章:https://blog.csdn.net/zhoubotong2012/article/details/79338093

資源截圖

代碼片段和文件信息


/**
**?作者:pengweizhi
**?郵箱:1795387053@qq.com
**/

#include?“stdafx.h“
#include?“AVInputStream.h“

static?std::string?AnsiToUTF8(const?char?*_ansi?int?_ansi_len)
{
std::string?str_utf8(““);
wchar_t*?pUnicode?=?NULL;
BYTE?*?pUtfData?=?NULL;
do
{
int?unicodeNeed?=?MultiByteToWideChar(CP_ACP?0?_ansi?_ansi_len?NULL?0);
pUnicode?=?new?wchar_t[unicodeNeed?+?1];
memset(pUnicode?0?(unicodeNeed?+?1)*sizeof(wchar_t));
int?unicodeDone?=?MultiByteToWideChar(CP_ACP?0?_ansi?_ansi_len?(LPWSTR)pUnicode?unicodeNeed);

if?(unicodeDone?!=?unicodeNeed)
{
break;
}

int?utfNeed?=?WideCharToMultiByte(CP_UTF8?0?(LPWSTR)pUnicode?unicodeDone?(char?*)pUtfData?0?NULL?NULL);
pUtfData?=?new?BYTE[utfNeed?+?1];
memset(pUtfData?0?utfNeed?+?1);
int?utfDone?=?WideCharToMultiByte(CP_UTF8?0?(LPWSTR)pUnicode?unicodeDone?(char?*)pUtfData?utfNeed?NULL?NULL);

if?(utfNeed?!=?utfDone)
{
break;
}
str_utf8.assign((char?*)pUtfData);
}?while?(false);

if?(pUnicode)
{
delete[]?pUnicode;
}
if?(pUtfData)
{
delete[]?pUtfData;
}

return?str_utf8;
}

CAVInputStream::CAVInputStream(void)
{
m_hCapVideoThread?=?NULL;
m_hCapAudioThread?=?NULL;
m_exit_thread?=?false;

m_pVidFmtCtx?=?NULL;
m_pAudFmtCtx?=?NULL;
m_pInputFormat?=?NULL;

dec_pkt?=?NULL;

m_pVideoCBFunc?=?NULL;
m_pAudioCBFunc?=?NULL;

m_videoindex?=?-1;
m_audioindex?=?-1;

m_start_time?=?0;

//avcodec_register_all();
?//???av_register_all();
//avdevice_register_all();??
}

CAVInputStream::~CAVInputStream(void)
{
CloseInputStream();
}


void??CAVInputStream::SetVideoCaptureCB(VideoCaptureCB?pFuncCB)
{
m_pVideoCBFunc?=?pFuncCB;
}

void??CAVInputStream::SetAudioCaptureCB(AudioCaptureCB?pFuncCB)
{
m_pAudioCBFunc?=?pFuncCB;
}

void??CAVInputStream::SetVideoCaptureDevice(string?device_name)
{
m_video_device?=?device_name;
}

void??CAVInputStream::SetAudioCaptureDevice(string?device_name)
{
m_audio_device?=?device_name;
}


bool??CAVInputStream::OpenInputStream()
{
if(m_video_device.empty()?&&?m_audio_device.empty())
{
ATLTRACE(“you?have?not?set?any?capture?device?\n“);
return?false;
}


int?i;

//打開Directshow設備前需要調用FFmpeg的avdevice_register_all函數,否則下面返回失敗
m_pInputFormat?=?av_find_input_format(“dshow“);
ASSERT(m_pInputFormat?!=?NULL);

????//?Set?device?params
????AVDictionary?*device_param?=?0;
//if?not?setting?rtbufsize?error?messages?will?be?shown?in?cmd?but?you?can?still?watch?or?record?the?stream?correctly?in?most?time
//setting?rtbufsize?will?erase?those?error?messages?however?larger?rtbufsize?will?bring?latency
????//av_dict_set(&device_param?“rtbufsize“?“10M“?0);

if(!m_video_device.empty())
{
int?res?=?0;

string?device_name?=?“video=“?+?m_video_device;

string?device_name_utf8?=?AnsiToUTF8(device_name.c_str()?device_name.length());??//轉成UTF-8,解決設備名稱包含中文字符出現亂碼的問題

?//Set?own?vide

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-02-15?17:48??Bin\
?????文件??????565760??2018-02-15?17:48??Bin\AVCaptureStream.exe
?????文件????19646464??2014-12-31?06:21??Bin\avcodec-56.dll
?????文件?????1367552??2014-12-31?06:21??Bin\avdevice-56.dll
?????文件?????2314752??2014-12-31?06:21??Bin\avfilter-5.dll
?????文件?????5839360??2014-12-31?06:21??Bin\avformat-56.dll
?????文件??????452096??2014-12-31?06:21??Bin\avutil-54.dll
?????文件??????????67??2018-02-15?17:49??Bin\Config.ini
?????文件???????92160??2018-02-10?20:57??Bin\EnumDevice.dll
?????文件??????121344??2014-12-31?06:21??Bin\postproc-53.dll
?????文件??????270336??2014-12-31?06:21??Bin\swresample-1.dll
?????文件??????446976??2014-12-31?06:21??Bin\swscale-3.dll
?????目錄???????????0??2018-02-15?17:49??src\
?????文件?????????895??2018-02-11?11:09??src\AVCaptureStream.sln
?????文件???????79872??2018-02-15?17:48??src\AVCaptureStream.suo
?????文件???????11184??2018-02-15?17:33??src\AVCaptureStream.vcproj
?????文件???????12373??2018-02-15?13:38??src\AVInputStream.cpp
?????文件????????1636??2018-02-13?11:19??src\AVInputStream.h
?????文件???????19104??2018-02-15?17:30??src\AVOutputStream.cpp
?????文件????????1942??2018-02-14?18:03??src\AVOutputStream.h
?????文件?????????772??2015-06-19?09:53??src\ChildView.cpp
?????文件?????????408??2015-06-19?09:53??src\ChildView.h
?????文件????????6736??2018-02-12?11:16??src\ImagePainter.cpp
?????文件?????????950??2018-02-12?10:37??src\ImagePainter.h
?????目錄???????????0??2018-02-11?23:20??src\include\
?????文件?????????808??2018-02-10?21:09??src\include\EnumDevice.h
?????文件????????5729??2015-06-19?09:53??src\include\inttypes.h
?????目錄???????????0??2017-12-15?20:24??src\include\libavcodec\
?????文件??????179819??2015-06-19?09:53??src\include\libavcodec\avcodec.h
?????文件????????3111??2015-06-19?09:53??src\include\libavcodec\avfft.h
?????文件????????3764??2015-06-19?09:53??src\include\libavcodec\dv_profile.h
............此處省略122個文件信息

評論

共有 條評論