<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 基于wince的網(wǎng)絡(luò )音視頻通信

基于wince的網(wǎng)絡(luò )音視頻通信

作者: 時(shí)間:2011-01-14 來(lái)源:網(wǎng)絡(luò ) 收藏

wince網(wǎng)絡(luò )音通訊

本文引用地址:http://dyxdggzs.com/article/166249.htm

wince網(wǎng)絡(luò )音視頻通訊


下位機為 mini2440 ,其操作系統是WINCE 5.0,需要在下位機上插入USB攝像頭(中星微301,驅動(dòng)為15分鐘限制版),以及插入麥克風(fēng)耳機;

上位機為普通的PC,需要插入麥克風(fēng)耳機;

上位機和下位機的開(kāi)發(fā)環(huán)境為Visual Studio 2005。

接下來(lái),說(shuō)說(shuō)這個(gè)東東的功能,和工作原理:

網(wǎng)絡(luò )傳輸,首先把mini2440與USB攝像頭連接在一起,通過(guò)USB攝像頭捕捉圖像(320 x 240,15fps),然后通過(guò)UDP協(xié)議發(fā)送至PC端,在PC屏幕上以15fps的速度顯示。

網(wǎng)絡(luò )傳輸,首先在mini2440和PC上都插入麥克風(fēng)耳機,兩者都同時(shí)錄音,并以G.726編碼,然后把壓縮包通過(guò)UDP協(xié)議發(fā)送至對方,而在錄音的同時(shí),也對來(lái)自對方的壓縮包用G.726解碼,然后再在耳機播放。

最后,說(shuō)說(shuō)這個(gè)版本相對于以前的改進(jìn):

把以前的RTP改為UDP,實(shí)踐證明,在這個(gè)系統中,用UDP的效率會(huì )比RTP好,畢竟不需要用到RTP的流量監測等高級功能,僅僅能通信就行了;

以前版本基于100M網(wǎng)卡,現在支持10M網(wǎng)卡了,在100M網(wǎng)卡的機器上,可以直接把JPEG圖片發(fā)過(guò)去,但是,在10M的網(wǎng)卡是,每次數據包最大為1440比特,因此要兼容10M網(wǎng)卡,就需要把圖像分割成多個(gè)1440大小的數據包,分別發(fā)送了。

網(wǎng)絡(luò )音通信

下面說(shuō)說(shuō)關(guān)鍵的源代碼:

以下是WINCE部分的代碼

#pragma once

#include “winsock2.h”

//RTP支持

#include “。.UDPUDP.h”

//支持

#include “WaveIn.h”

#include “WaveOut.h”

//G726支持

#include “g726.h”

//攝像頭支持

#include “。videozc030xlib.h”

#define Video_Width 320 //視頻寬度

#define Video_Height 240 //視頻長(cháng)度

#define AudioData_Size 960 //每塊音頻數據包的大小

#define Compr_AudioData_Size 120 //壓縮后音頻塊的大小

//音頻輸入輸出變量

CWaveIn *g_pIn;

CWaveOut *g_pOut;

char pin[AudioData_Size],pout[Compr_AudioData_Size];

char waveout[AudioData_Size];

//攝像頭輸入變量

DWORD dwSize;

DWORD dwJpg;

DWORD dwRtnSize[2];/* 0 - for bmp, 1 - for jpeg */

LPBYTE lpFrameBuffer;

LPBYTE lpJpgBuffer ;

//控制變量

bool isCameraEnabled;

//UDP

CUDP_CE m_CEUdp;

class AVClass

{

public:

//=====================================================================

// 語(yǔ)法格式: void InitAV(CWnd * p)

// 實(shí)現功能: 初始化音頻和視頻,用于錄音、播放音頻,以及播放視頻

// 參數: p為窗口類(lèi)指針

// 返回值: 無(wú)

//=====================================================================

void InitAV(CWnd * p,int local_port,CString remote_ip,int remote_port)

{

//-----------------------初始化UDP-----------------------//

m_CEUdp.m_OnUdpRecv = OnUdpCERecv;

DWORD nResult = m_CEUdp.Open(p,local_port,remote_ip,remote_port);

if (nResult 《=0)

{

AfxMessageBox(_T(“打開(kāi)端口失敗”));

return;

}

//------------------------控制變量-----------------------//

isCameraEnabled=false;

//-------------------------視頻--------------------------//

int i = capInitCamera();

dwSize = 320 * 240 * 3;

dwJpg = 40960;

lpFrameBuffer = (LPBYTE) malloc (dwSize);

lpJpgBuffer = (LPBYTE) malloc (dwJpg);

if(i《=0)

{

//::MessageBox(NULL, L“Init camera error ”, L“Notice”, 0);

goto video_error;//出錯,釋放空間

}


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 音頻 視頻

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>