<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/166249.htm

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


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

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

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

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

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

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

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

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

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

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

          下面說說關(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 //視頻長度

          #define AudioData_Size 960 //每塊音頻數(shù)據(jù)包的大小

          #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:

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

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

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

          // 參數(shù): p為窗口類指針

          // 返回值: 無

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

          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(“打開端口失敗”));

          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;//出錯(cuò),釋放空間

          }


          上一頁 1 2 3 下一頁

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

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();