云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 李娜多媒体网络通信技术

李娜多媒体网络通信技术

  • 62 次阅读
  • 3 次下载
  • 2025/5/29 8:50:27

return ret; }

//终止一个捕获任务

BOOL VideoCapture::StopCapture() {

capCaptureStop(m_capwnd); capCaptureAbort(m_capwnd); Sleep(500); return TRUE; }

3.3音视频处理(编解码)

音视频编码处理就是对音视频进行压缩。MPEG-4编码算法的完整源代码如下: class CVideoEncoderX264 :{ public:

CVideoEncoderX264(void); ~CVideoEncoderX264(void);

virtual bool Connect(CVideoEnDecodeNotify* pNotify, const CVideoEnDecodeItem& Item);

virtual void Release(void);

virtual void Encode(BYTE* pInData, int nLen, BYTE* pOutBuf, int& nOutLen, int& nKeyFrame); private:

x264_picture_t m_Pic; x264_t *h;

x264_param_t param; void Flush(void); };

文件:VideoEncoderX264.cpp

bool CVideoEncoderX264::Connect(CVideoEnDecodeNotify* pNotify, const CVideoEnDecodeItem& Item){ CBase::Connect(pNotify, Item); ParseSize(Item.m_stSize); x264_param_default( ¶m ); param.i_threads = 1; param.i_frame_total = 0; param.i_width = m_nWidth; param.i_height = m_nHeight;

param.i_keyint_min = Item.m_nKeyInterval; param.i_keyint_max = Item.m_nKeyInterval * 10; param.i_fps_num = Item.m_nFps;*/ param.i_log_level = X264_LOG_NONE;

if( ( h = x264_encoder_open( ¶m ) ) == NULL ) { return false; } /* Create a new pic */

x264_picture_alloc( &m_Pic, X264_CSP_I420, param.i_width, param.i_height ); return true;}

void CVideoEncoderX264::Release(void){ Flush();

x264_picture_clean( &m_Pic ); x264_encoder_close( h ); CBase::Release();}

void CVideoEncoderX264::Encode(BYTE* pInData, int nLen, BYTE* pOutBuf, int& nOutLen, int& nKeyFrame){

if(nLen != param.i_width * param.i_height * 3) return;

param.i_frame_total ++;

memcpy(m_Pic.img.plane[0], pInData, param.i_width * param.i_height); memcpy(m_Pic.img.plane[1], pInData + param.i_width * param.i_height, param.i_width * param.i_height / 4);

memcpy(m_Pic.img.plane[2], pInData + param.i_width * param.i_height * 5 / 4, param.i_width * param.i_height / 4);

m_Pic.i_pts = (int64_t)param.i_frame_total * param.i_fps_den; static x264_picture_t pic_out; x264_nal_t *nal = NULL; int i_nal, i; if( &m_Pic ){

m_Pic.i_type = X264_TYPE_AUTO; m_Pic.i_qpplus1 = 0;}

//TraceTime(\

if( x264_encoder_encode( h, &nal, &i_nal, &m_Pic, &pic_out ) < 0 ) { return;}

//TraceTime(\int nOutCanUse = nOutLen; nOutLen = 0;

for( i = 0; i < i_nal; i++ ){ int i_size = 0;

if( ( i_size = x264_nal_encode( pOutBuf + nOutLen, &nOutCanUse, 1, &nal[i] ) ) > 0 ){ nOutLen += i_size; nOutCanUse -= i_size;}}

nKeyFrame = pic_out.i_type==X264_TYPE_IDR;// || (pic_out.i_type==X264_TYPE_I && coCfg->x264_max_ref_frames==1)} void CVideoEncoderX264::Flush(void){ x264_picture_t pic_out; x264_nal_t *nal;

int i_nal, i; int i_file = 0;

if( x264_encoder_encode( h, &nal, &i_nal, NULL, &pic_out ) < 0 ){} }

解码代码不做详细分析。

3.4.语音处理

3.4.1语音录制

在音频的录制和播放时,采用的用户界面线程来处理,是CWinThread对象,根据前面线程的介绍,一步一步的来实现。录音用的一个CWinThread对象CAudioRec来实现,部分实现代码:

LRESULT CAudioRec::OnStartRecording(WPARAM wp, LPARAM lp) {

if(recording) return FALSE; //打开录音设备

MMRESULT mmReturn = ::waveInOpen( &m_hRecord, WAVE_MAPPER &m_WaveFormatEx, ::GetCurrentThreadId(), 0, CALLBACK_THREAD); if(mmReturn!=MMSYSERR_NOERROR ) return FALSE; if(mmReturn==MMSYSERR_NOERROR ){ for(int i=0; i < MAXRECBUFFER ; i++){ //为录音设备准备缓存

mmReturn = ::waveInPrepareHeader(m_hRecord, rechead[i], sizeof(WAVEHDR)); //给输入设备增加一个缓存

mmReturn = ::waveInAddBuffer(m_hRecord, rechead[i], sizeof(WAVEHDR));}

mmReturn = ::waveInStart(m_hRecord); //开始录音 if(mmReturn==MMSYSERR_NOERROR ) return TRUE; }

recording=TRUE;}

搜索更多关于: 李娜多媒体网络通信技术 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

return ret; } //终止一个捕获任务 BOOL VideoCapture::StopCapture() { capCaptureStop(m_capwnd); capCaptureAbort(m_capwnd); Sleep(500); return TRUE; } 3.3音视频处理(编解码) 音视频编码处理就是对音视频进行压缩。MPEG-4编码算法的完整源代码如下: class CVideoEncoderX264 :{ public: CVideoEncoderX264(void); ~CVideoEncoderX264(void); virtual bool Connect(CVideoEnDecodeNotify* pNotify, const CVideoEn

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com