多媒体通信实验报告
- 格式:doc
- 大小:189.50 KB
- 文档页数:8
多媒体技术班级:网络1202姓名:李耿卓学号:50多媒体中的多媒体通信技术1、交互性。
交互性是多媒体通信系统区别于其他通信系统的重要标志,它是指在通信系统中人与系统之间的相互控制能力。
交互性为用户提供了对通信全过程完备的交互控制能力。
2、集成性。
多媒体通信系统需要具备能同时处理如信息数据的采集、存储、传输和显示的能力。
由于各种媒体之间存在着空间关系、时间关系、链接关系等比较复杂的关系,因此,要求多媒体通信必须具有集成性。
3、同步性。
同步性是多媒体系统之间相互区别的根本标志。
它是由多媒体的定义决定的,是指多媒体通信终端上显示的声音、图像和文字等必须以同步的方式进行工作。
多媒体通信中的关键技术1、多媒体数据压缩技术。
多媒体数据压缩技术中最为关键的是音频和图像压缩编码技术。
(1)音频数据压缩技术。
作为携带信息的极其重要的媒体,声音是多媒体技术研究中的一个重要的内容。
为了使信号便于多媒体通信系统的传输和处理,并且使其具有较强的抗干扰能力,就需要对数字信号依次进行量化和压缩编码。
(2)图像数据压缩技术。
图像作为多媒体通信中的一类重要的煤体,能够更直观的体现信息的内涵,也更易于被接受。
但在通信的过程中,由于图像存储时需占用较大的空间,因此对其所生成的数据信号进行压缩是非常必要的。
2、多媒体通信网络技术。
多媒体通信网络技术包括接入网技术和宽带网络技术。
在多媒体通信系统中,能够满足多媒体应用需要的通信网络必须具有可提供服务质量的保证、具有高带宽、能实现媒体同步等特点。
因为网上传输的是由多种媒体综合而成的一种复杂的数据流,不但要求网络具有对各种信息高效综合的能力,还要求网络对信息具有高速传输的能力。
3、多媒体信息存储技术。
多媒体信息对存储设备提出了非常高的要求,在要求存储设备的容量足够大的同时,还对其带宽、存储速度等提出了更高的要求。
当前,为了获得大容量的存储,并进一步提高数据的读取速度,一种新技术——SAN,便产生了。
多媒体通信实验报告班级:姓名:学号:一、实验目的:请尝试不同的复原算法(包括可能的图像预处理和增强等),对原始恶化图像Invoice_distortion.jpg进行处理,给出你认为最优的增强后的图像。
二、增强算法经过对多种滤波算法的尝试,发现相比而言,采用维纳滤波效果较好,维纳滤波作为含噪波形估计的最佳滤波,比一般的线性滤波器效果都好,不仅保留了图像的边缘部分和高频部分,而且尤其是对于处理高斯白噪声具有最佳效果。
在本实验中,先对原始图像进行低通滤波,然后再用维纳滤波。
这样比直接采用维纳滤波效果要好。
三、MATLAB源程序temp_image=imread('Invoice_distortion.jpg');%读取原始图像figure(1);imshow('Invoice_distortion.jpg');temp_image=im2double(temp_image);move1=fftshift(fft2(temp_image));%频谱搬移figure(2);imshow(log(abs(move1)),[]);colorbar;title('中心化频率谱');LPF = fspecial('gaussian',9,5);image_lpf = imfilter(temp_image,LPF,'circular','conv');%高斯低通滤波figure(3);imshow(image_lpf);title('低通滤波图像');Blurred=image_lpf;%自编函数进行维纳滤波%k=0.0025;[m,n]=size(Blurred);spectrum=zeros(m,n);H=zeros(m,n);for u=1:mfor v=1:nH(u,v)=exp(-k*((u-m/2)^2+(v-n/2)^2)^(5/6));spectrum(u,v)=H(u,v)^2;endendf=double(Blurred);F1=fftshift(fft2(f));HW=H./(spectrum+0.001);restore1=HW.*F1;restored=real(ifft2(ifftshift(restore1)));figure(4);imshow(restored,[]);title('自编函数进行维纳滤波');四、实验结果原始图像原始图像的中心化频率谱低通滤波后的图像自编函数进行维纳滤波的图像五、结果分析因为不清楚图像模糊的参数,在处理过程中尝试了各种不同的维纳算法,修改了不同的系数,经过多次尝试,尽量使处理图像结果更加理想。
基于JM的H.264压缩视频质量评估一、实验要求1、学会参考软件的使用并采用参考软件对特定的YUV 视频序列进行压缩;2、对压缩后的比特流模拟丢包;3、对模拟丢包后的压缩比特流进行解码;4、计算解压后的YUV 视频序列相对于原始未压缩的YUV 视频序列失真度。
二、实验原理1、数据压缩与视频编码原理多媒体信息包括文本、数据、声音、动画、图形以及视频等多种媒体信息,经过数字化处理后其数据量非常大,如果不进行数据压缩处理,计算机系统就无法对它进行存储和交换。
多媒体信息中的图像、音频和视频这些媒体具有很大的压缩潜力。
因为这些数据中存在着空间冗余、时间冗余、结构冗余、视觉冗余、图像区域的相同性冗余、纹理的统计冗余等,它们为数据压缩技术的应用提供了可能的条件。
视频编码的目的是为了实现对视频数据的压缩,去除视频数据之间的冗余,降低视频数据之间的相关性,采用较少的比特数来表征原始比特流。
视频数据之间的冗余分为以下几种:1)空间冗余空间冗余是指在同一帧画面中,相邻的像素间存在的极强的相关性,例如一幅书法作品的图像,图像背景中全是白色。
2) 时间冗余以连续视频为例,它的每一帧画面是由若干个像素组成的,因为动态图像通常反映的是个连续的过程,它的相邻的帧之间存在着很大的相关性,从一幅画面到下一幅画面,背景与前景就可以没有太多的变化。
也就是说,连续多帧画面在很大程度上是相似的。
3) 编码冗余即信息熵冗余,对于编码符号,其平均码长高于所表示信息的信息熵,这个差值就形成了编码冗余。
4) 结构冗余指图像存在非常强的纹理结构。
如草席图结构上存在冗余。
5) 知识冗余图像的理解与某些知识有关,例:人脸图像有同样的结构:嘴的上方有鼻子,鼻子上方有眼睛,鼻子在中线上等。
6) 视觉冗余视觉冗余是非均匀、非线性的。
例:对亮度变化敏感,而对色度的变化相对不敏感;在高亮度区,人眼对亮度变化敏感度下降对物体边缘敏感,内部区域相对不敏感;对整体结构敏感,而对内部细节不敏感。
实验名称:多媒体通信技术实验实验时间:2023年3月15日实验地点:计算机实验室实验目的:1. 理解多媒体通信的基本概念和原理。
2. 掌握多媒体通信系统的组成和关键技术。
3. 学习使用多媒体通信实验平台进行实际操作。
4. 分析实验结果,加深对多媒体通信技术的理解。
实验内容:1. 多媒体通信系统组成与工作原理2. 多媒体数据传输技术3. 实验平台搭建与操作4. 实验结果分析与讨论实验步骤:一、多媒体通信系统组成与工作原理1. 学习多媒体通信系统的基本组成,包括:发送端、传输网络、接收端。
2. 了解多媒体通信系统的工作原理,包括:信源编码、信道编码、传输、信源解码、信道解码。
3. 分析多媒体通信系统中的关键技术,如:视频编码、音频编码、图像压缩、差错控制、流量控制等。
二、多媒体数据传输技术1. 学习多媒体数据传输的基本方法,如:TCP/IP协议、UDP协议、RTCP协议等。
2. 了解多媒体数据传输中的关键技术,如:服务质量(QoS)保证、拥塞控制、丢包恢复等。
3. 分析多媒体数据传输技术在实际应用中的优缺点。
三、实验平台搭建与操作1. 搭建多媒体通信实验平台,包括:计算机、摄像头、麦克风、扬声器、网络设备等。
2. 使用实验平台进行实际操作,包括:视频通话、音频通话、文件传输等。
3. 观察实验现象,记录实验数据。
四、实验结果分析与讨论1. 分析实验数据,包括:传输速率、延迟、丢包率等。
2. 对比不同传输协议的优缺点,如:TCP与UDP。
3. 讨论多媒体通信技术在实际应用中的挑战和解决方案。
实验结果:一、多媒体通信系统组成与工作原理1. 实验过程中,搭建了多媒体通信实验平台,包括:发送端、传输网络、接收端。
2. 通过实验,了解了多媒体通信系统的工作原理,掌握了关键技术。
二、多媒体数据传输技术1. 使用实验平台进行视频通话、音频通话、文件传输等操作,观察实验现象。
2. 分析实验数据,得出以下结论:- 传输速率:视频通话传输速率约为500kbps,音频通话传输速率约为100kbps。
太原理工大学现代科技学院多媒体通信技术课程实验报告专业班级学号姓名指导教师太原理工大学现代科技学院实验报告实验名称 JPEG 图像压缩算法 同组人专业班级 学号 姓名 成绩一.实验目的1.掌握基于DCT 变换的图像压缩的基本原理及其实现步骤。
2.通过使用MATLAB ,对同一幅原始图像进行压缩,进一步掌握DCT 和图像压缩。
二.实验要求以任意选择一幅图片为数据设计出JPEG 图像的压缩和缓解压缩算法并写出程序予以实现。
三.实验原理 和相同图像质量的其它的常用文件格式(如GIF 、TIFF 、PNG )相比,JPEG 是目前静态图像中压缩比最高的。
我们给出具体的数据来对比一下。
例如一张大小为1152*768.24位色的原图,用Microsoft 图画工具将其分别转成24位色BMP 、24位色JPEG 、24位色PNG 的压缩格式、24位色TIF 。
得到的文件大小(以KB 为单位)分别为:2593, 214, 1751, 2398 。
可见JPEG 比其它几种的压缩比要高的多,而图像质量都差不多。
JPEG 的图片使用的是YUV (或YCbCr)颜色模型 。
Y代表亮度 ,U和V表示色差,U和V是构成色彩的两个分量。
YUV表示法的重要性是它的亮度信号(Y)和色度信号(U和V)是相互独立的。
也就是Y信号分量构成的黑白灰度图与用U和V信号构成的另外两幅单色图是相互独立的。
所以可以对这些单色图分别进行编码。
四.实验程序 JPEG 程序: 编码压缩 jpeg_demo.m : % Prototype JPEG compression algorithm demostration % % copyright (c) 1997-2002 by Yu Hen Hu %% This algorithm only demonstrate the basic % JPEG functionalities.% It is not necessarily a faithful % implementation of JPEG . % Its output will not be binary bit streams % either, but rather……………………………………装………………………………………订…………………………………………线………………………………………太原理工大学现代科技学院实验报告% an integer stream of 0 and 1s% Only gray scale picture is considered%% Last modification: 11/6/2002clear all;clc;close all;disp('JPEG编码演示,请选择输入图像,按任意键继续... ');pause;[FileName_A] = uigetfile ({'*.tif;*.bmp;*.ras;*.jpg;'},'请输入一个图像'); A=imread(FileName_A);A1=imfinfo(FileName_A);if A1.Format=='bmp'| A1.Format=='jpg'A=rgb2gray(A);% else% if A1.Format=='jpg'% A=rgb2gray(A);% endEndfigure,subplot(2,2,1),imshow(A);title('原始图像');% [x,map]=imread('test.ras')% f=double(x);%(1+128:128+128,1+128:128+128);% imshow(mat2gray(f))f=double(A);disp('进行DCT变换,按任意键继续... ');pause;% drawnow[mf,nf]=size(f); mb=mf/8; nb=nf/8;% size of f, # of blocks of f% Step 1. 2D separable DCT on each 8x8% blocksFf=round(blkproc(f,[8 8],'dct2'));% transpose back to proper orientationsubplot(2,2,2),imshow(uint8(Ff));title('量化前频域图像');disp('输入亮度量化表,按任意键继续... ');pause;% Perceptual scaler quantizationQ1=1;% this is the quantization matrix shown in figure 8.37 in the textbookQ =Q1*[16 11 10 16 24 40 51 6112 12 14 19 26 58 60 5514 13 16 24 40 57 69 56太原理工大学现代科技学院实验报告14 17 22 29 51 87 80 6218 22 37 56 68 109 103 7724 35 55 64 81 104 113 9249 64 78 87 103 121 120 10172 92 95 98 112 100 103 99]disp('量化,按任意键继续... ');pause;% Now perform roundingFq=round(blkproc(Ff,[8 8],'divq',Q));subplot(2,2,3),imshow(uint8(Ff));title('量化后频域图像');% pause%echo offdisp('输入Zig-Zag扫描顺序,按任意键继续... ');pause;% Zig-Zag scanning of AC coefficientsz=[1 2 6 7 15 16 28 293 5 8 14 17 27 30 434 9 13 18 26 31 42 4410 12 19 25 32 41 45 5411 20 24 33 40 46 53 5521 23 34 39 47 52 56 6122 35 38 48 51 57 60 6236 37 49 50 58 59 63 64]disp('提取DC系数、差分并进行Huffman编码,按任意键继续... '); pause;% DPCM of DC component, scaned row-wiseif mb*nb > 1,fdc=reshape(Fq(1:8:mf,1:8:nf)',mb*nb,1);fdpcm=dpcm(fdc,1);Enddccof=[];for i=1:mb*nb,dccof=[dccof jdcenc(fdpcm(i))];End%echo ondisp('提取AC系数并进行Huffman编码,按任意键继续... '); pause;%pause%echo offacseq=[];太原理工大学现代科技学院实验报告for i=1:mbfor j=1:nbtmp(z)=Fq(8*(i-1)+1:8*i,8*(j-1)+1:8*j);% tmp is 1 by 64% tmp(z)=Fq(1:8,1:8)eobi=max(find(tmp~=0)); %end of block index% eob is labelled with 999Acseq=[acseq tmp(2:eobi) 999];endEndaccof=jacenc(acseq);disp(['DC系数的Huffman编码长度为:' int2str(length(dccof)) ...' bits']);disp(['AC系数的Huffman编码长度为:' int2str(length(accof)) ...' bits']);disp(' ');disp(' ');disp(['压缩后比特率:' num2str((length(dccof)+length(accof))/(mb*nb*64)) ' Bits / pixel ']) disp(['压缩比:' num2str(8/((length(dccof)+length(accof))/(mb*nb*64))) ' : 1'])编码压缩。
多媒体通信实验——点到点的语音视频通信一.实验要求(1)发送端能够正确捕获视频、接收端正确显示视频;(2)视频需要选用一种编码方式(3)可选要求:使用RTP/RTCP监测视频流状态、同时传输音频;二.实验原理1 Video for Windows 函数简介Video for Windows函数是Windows环境下实现实时视频捕获的重要工具,主要包括vfw. h头文件和vfw32. 1让函数库。
ill于Video for Windows函数可以方便地实现视频、音频数据流到AVI文件的存储,在Visual C卄中也将Video for Windows函数称为AV leap窗口类函数。
通过使用AVI cap窗口类函数,可以在应用中方便地集成视频采集功能。
AVIcap为应用提供了一个访问视频采集硕件简便的、基于消息的界面,并且能够控制视频流数据存储到磁盘的过程。
1. 1 AVIcap窗口类的基本功能AVIcap窗口类是完成山视频捕获硬件获取数据,并按照需要的格式进行存储、转换的重要手段,它提供的主要功能包括:1)动态地同视频和音频输入器连接或断开;2)设置视频捕获速率;3)提供设置视频源,视频格式以及是否釆用视频压缩的对话框;4)设置视频采集的显示模式为Overlay或者Preview模式;5)实时获取每一帧数字视频数据;6)将一视频流和音频流捕获并保存到一个AVI文件中;7)按用户要求捕获某一帧数字的视频数据,并将单帧图象以DIB格式的文件保存;8)创建、保存、或载入RGB格式下的调色板;9)将捕获图象和相关的调色板拷贝到剪切板;10)指定捕获数据的文件名,并能够将捕获的内容拷贝到另一个文件。
合理使用以上主要功能是实现实时视频应用的关键。
1. 2 AVI cap窗口类函数分类1)回调函数在Windows系统中,回调函数是一类特殊的函数,功能类似于中断函数。
其调用过程111系统完成,而函数的具体内容则III用户自己设定。
实验一声音视频的播放一实验目的使学生掌握WA VE文件的播放播放方法及Windows Media Player控件的使用方法。
二实验环境具有多媒体处理功能的计算安装有Windows操作系统,安装有Visual c++6.0程序设计软件。
三实验要求学习相关理论指导,掌握相关程序设计知识;按照实验步骤要求完成程序设计任务,书写实验报告,试验报告中要求包含程序实现的主要程序代码和程序运行结果或结果说明。
四实验内容和实验步骤1、设计一个简单的音频播放程序,程序启动时,播放windows系动启动时候的音乐(1)创建对话框工程文件:MCIStart,如图1.1,1.2所示:图1.1 新建工程图1.2 新建工程(2)打开Stdafx.h文件,在 #ifndef _AFX_NO_AFXCMN_SUPPORT语句的上一行顶头加入语句:#include <mmsystem.h>(3)将winmm.lib与应用程序链接起来,打开“Project/Settings…”菜单,选中Link选项卡,如图1.3设置:图1.3 链接设置(4)在MCIStartDlg.cpp的OnInitDialog()函数中的return TRUE之前加上代码:sndPlaySound("SystemStart",SND_ASYNC);(5)运行程序,显示如图1.4界面,播放系统启动音乐SystemStart :图1.4 运行界面2、编写一个音频播放器程序,可以选择音频文件,并控制其播放、暂停播放、暂停后的继续播放以及停止播放的功能。
(1)首先创建一个对话框工程MCIPlayer,并放置若干个控件,设置它们的资源号和标题内容。
如图1.5所示:图1.5 控件界面(2)头文件mmsystem.h加入到文件Stdafx.h中;(3)将多媒体函数库winmm.lib通过project菜单中的settings命令来与程序链接起来(同上例)。
多媒体通信实验报告姓名:学院:班级:学号:专业:指导老师:完成时间:实验一 FEC 前向纠错码仿真一、 实验目的1. 学会运用matlab 编程环境进行实验仿真;2. 深入了解FEC 前向纠错码的基本原理;3. 学会分析基本原理,编写程序仿真验证结果。
二、 实验要求1. 掌握FEC 前向纠错码的基本原理,并根据该原理编写程序进行matlab 仿真;2. 运行matlab 程序,对仿真得到的结果进行分析。
三、 实验原理前向纠错(Forward Error Correction ,FEC)编码,也叫“前向纠错码”,是增加数据通讯可信度的方法。
将传输的数据分割成帧,并由数据帧异或得到校验帧,校验帧随同数据帧一起在信道上传输,当接收端接收数据帧和校验帧后,收到的帧进行检验。
如果收到的校验帧没错,就可以对有限的错误数据帧进行纠错;反之,则不能对数据帧进行纠错。
FEC 编码常用的传输码率有4/5、5/6、6/7、7/8等。
四、 实验内容这里采用4/5的码率进行FEC 编码的仿真,即由四个数据帧加上由四个数据帧异或得到的一个校验帧构成长度为5帧的发送帧,当校验帧没错并且数据帧只有1帧发现错误时,则可以利用校验帧与其他3帧数据异或得到正确的数据帧来纠正错误的数据帧。
其他情况,都不能进行纠错。
在matlab 仿真实验中,采用图片信息作为数据在模拟丢包率的状态下进行FEC 编码,并计算在传输过程中,不同丢包率下的FEC 编码的丢包率以及时延。
具体实验过程如下:采集给定图像的信息,将彩色图像转化为灰度图像,并将图像数据保存在一个二维数组中。
灰度图像如图1所示。
图1原始灰度图像对图像进行FEC 编码,并在模拟信道丢包率的状态下传输,得到输出的图像数据,将FEC 编码纠错前的图像打印出来,这里选取的模拟信道丢包率为10%,打印出的图像如图2所示。
图2FEC 编码过程中,当满足FEC 纠错条件,即校验帧正确,数据帧只有一帧出错,就可以对图像数据进行纠正。
多媒体通信实验——点到点的语音视频通信一.实验要求(1)发送端能够正确捕获视频、接收端正确显示视频;(2)视频需要选用一种编码方式(3)可选要求:使用RTP/RTCP监测视频流状态、同时传输音频;二.实验原理1 Video for Windows 函数简介Video for Windows 函数是 Windows 环境下实现实时视频捕获的重要工具,主要包括 vfw.h 头文件和 vfw32.lib 函数库。
由于 Video for Windows 函数可以方便地实现视频、音频数据流到 AVI 文件的存储,在 Visual C++ 中也将Video for Windows 函数称为 AVIcap 窗口类函数。
通过使用 AVIcap 窗口类函数,可以在应用中方便地集成视频采集功能。
AVIcap 为应用提供了一个访问视频采集硬件简便的、基于消息的界面,并且能够控制视频流数据存储到磁盘的过程。
1.1 AVIcap 窗口类的基本功能AVIcap 窗口类是完成由视频捕获硬件获取数据,并按照需要的格式进行存储、转换的重要手段,它提供的主要功能包括:1) 动态地同视频和音频输入器连接或断开;2) 设置视频捕获速率;3) 提供设置视频源,视频格式以及是否采用视频压缩的对话框;4) 设置视频采集的显示模式为 Overlay 或者 Preview 模式;5) 实时获取每一帧数字视频数据;6) 将一视频流和音频流捕获并保存到一个 AVI 文件中;7) 按用户要求捕获某一帧数字的视频数据,并将单帧图象以 DIB 格式的文件保存;8) 创建、保存、或载入 RGB 格式下的调色板;9) 将捕获图象和相关的调色板拷贝到剪切板;10) 指定捕获数据的文件名,并能够将捕获的内容拷贝到另一个文件。
合理使用以上主要功能是实现实时视频应用的关键。
1.2 AVIcap 窗口类函数分类1) 回调函数在 Windows 系统中,回调函数是一类特殊的函数,功能类似于中断函数。
其调用过程由系统完成,而函数的具体内容则由用户自己设定。
在系统中当某一回调函数被设定后,在某一特定的条件满足时,系统自动调用的该回调函数。
在AVIcap 窗口类中的回调函数如 capVideo-StreamCallback ,capStatusCallback 等函数。
该类函数在使用之前需要先由用户设定函数的内容,然后将其注册到系统中,判断调用条件是否满足以及对该函数的调用则都由系统自动完成,不需要显式的调用命令。
(2) 宏在 AVIcap 窗口类中,宏的使用完全类似于普通的函数,其功能等同于发送相应的窗口消息。
例如capSetCallbackOnVideoStream 与显式发送WM_CAP_SET_CALLBACK_VIDEOSTREAM 消息所完成的功能完全相同。
(3) 普通函数AVIcap 窗口类中的普通函数只有两个:capCreateCaptureWindow ;capGetDriverDescription 。
1.3 AVIcap 窗口类中常用的结构在 AVIcap 窗口类中有 4 种常用的结构:1) CAPSTATUS :定义捕获窗口的当前状态;2) CAPDRIVERCAPS :定义捕获设备的能力,如有无视频叠加 (Overlay) 能力,有无控制视频源、视频格式的对话框等;3) CAPTUREPARMS :包含控制视频流捕获过程的参数,如捕获帧频、指定键盘或鼠标键以终止捕获,捕获的时间限制等;4) VIDEOHDR :定义了视频数据块的头信息,在编写回调函数时常用到其数据成员 lpData( 指向数据缓存的指针 ) 和 dwBufferLength( 数据缓存的大小 ) 。
其中前 3 种结构都有相应的函数来设置和获得结构包含的信息。
2 视频捕获基本结构流程视频捕获的结构框图如图 1 所示。
图1 视频捕获软件实现的结构框图要进行视频捕获首先必须创建一个捕获窗,所有的捕获操作及其它设置都是以它为基础的。
它是通过 capCreate-CaptureWindow 函数创建的。
在系统回调函数中常用的为状态设置、出错处理、流捕获或帧捕获等回调函数,它们的注册是通过相应的宏完成的。
如 capSetCallbackOnError 将系统出错处理的回调函数注册到系统中,当系统出错时自动调用进行处理。
具体处理的内容由用户自己编写。
捕获窗参数设定及系统参数设定需要根据用户的具体要求决定。
这里主要对视频显示的两种模式即:视频叠加模式 (Overlay 模式 ) 和预览模式 (Preview 模式 ) 加以详细说明。
1) Overlay 模式:该模式为部分采集设备所具有的能力,可以通过CAPDRIVERCAPS 结构中的 fHasOverlay 域来判断设备是否具备该模式。
在Overlay 模式下所捕获的视频数据的显示不需要经过占用系统资源,显示速度快,同时不影响系统的其它任务。
该显示模式所支持的视频采集格式为 YUV 格式。
通过 capOverlay 宏完成。
2) Preview 模式:在该模式下显示要占用 CPU 资源,视频帧由系统调用GDI 函数在捕获窗中显示。
Previes 模式的显示速度慢,该显示模式所支持的视频采集格式为 RGB 格式。
通过 capPreview 宏实现。
Preview 模式和 Overlay 模式都只是用以显示。
与采集的过程并无多大关系。
它主要应用于采集帧的本地回显。
参数设置完成之后,视频数据的采集是整个应用的关键,根据应用的不同可以将视频帧采集到的文件或采集的缓存直接加以处理。
在可视电话的应用中需要实时的处理采集下来的帧数据,因此我们采用了将视频数据采集到缓存的方式。
它的优势是速度快,实时性强。
完成视频帧到文件的存储可以利用相应的宏实现,如 capCaptureSequence 宏将捕获帧存储到指定的文件。
而实现视频帧到缓存的捕获则需要应用回调函数和相应的数据块结构 VIDEOHDR 。
这里callback 函数可以使用 capSetCallbackOnFrame 或capSetCallback-OnStream 来注册。
其不同点在于后者所能够达到的采集速率比前者要高,但需要用 capCaptureSequenceNoFile 加以激活。
其相应的回调函数的接口及内容可以完全一致。
3 基于UDP的Winsock编程UDP协议(User Datagram Protocol),即用户数据报协议,是定义用来在互连网络环境中提供包交换的计算机通信的协议。
它是Internet上广泛采用的通信协议之一。
UDP协议直接位于IP协议的顶层,属于传输层协议,它提供向另一用户程序发送信息的最简便的协议机制。
与TCP协议不同,UDP协议是一个无连接协议,发送端和接收端不建立连接;UDP协议不提供数据传送的保证机制,可以说它是一种不可靠的传输协议;UDP协议也不能确保数据的发送和接收顺序,实际上,这种乱序性很少出现,通常只是在网络非常拥挤的情况下才可能发生。
以下将给出利用WinSock API实现基于UDP协议的网络编程的具体步骤(1)初始化通信端口(2)初始化Windows Sockets DLL(3)创建流式套接字(4)服务端绑定端口(5)注册网络事件(6)处理网络事件(7)读取数据(8)发送数据(9)关闭套接字UDP实现框架为:三.实验内容本实验程序模块可以分为以下几块:(1)在收发双方正确连接摄像头和麦克风(2)初始化通信网络(3)捕获抓取视频和音频(4)对抓取的视频进行编码(5)对编码后的视频码流进行传输(6)对接收到的视频码流进行解码(7)对解码后的视频进行显示·····················选做内容·····························(8)音频的发送和接收四.实验具体实现(1)在收发双方正确连接摄像头和麦克风微软为Windows下的摄像头操作提供了Video for Windows库,通过调用相关的函数即可进行摄像头的操作。
调用capCreateCapture- Window()函数可以打开摄像头,其返回值(HWND类型)可用于设置摄像头的相关参数;capDriverConnect()连接设备;capPreview()设定为预显示模式。
相关程序请见Capture.h和Captrue.cpp中InitCapture()。
对于麦克风设备的连接,调用的是mmsystem和WindowsX库函数,通过调用waveInGetNumDevs()和waveOutGetNumDevs()判断语音输入输出设备是否正确连接,将音频波形设置为PCM调制。
相关程序请见IPPhone.h和IPPHone.cpp 中。
(2)初始化通信网络通信的建立调用WinSock2库函数,分别建立视频收发双方和音频收发双方的连接,先在配置文件config中,设置视频和音频的应用层端口号,设置目的IP地址等,然后再建立socket连接.主要程序模块见MMCDlg.h和MMCDlg.cpp 中InitSocket()部分。
(3)捕获抓取视频和音频通过CapGrabFrame()来抓取当前帧,并用capFileSaveDIB()保存为BMP格式的位图文件在窗口显示,视频buffer设置为容纳3帧的大小。
而音频文件另外保存在音频buffer中,音频buffer的大小设置为2880bit。
(4)对抓取的视频进行编解码从视频buffer中读取视频文件,由于编码器采用的MPEG4,接口输入需要是YUV格式的文件,于是对取出的视频文件做RGB2YUV变换,然后传入MPEG4编码器,对于编码器的使用,直接添加其生成的库和调用头文件到当前工程中就可以使用。
其中,encore()函数的第二个参数enc_opt需要分别设定为ENC_OPT_INIT、ENC_OPT_WRITE、ENC_OPT_RELEASE以完成编码器的初始化、编码、释放的工作。
相关程序请见EncodeVideo.h和EncodeVideo.cpp(5) 对编码后的码流进行传输对编码后获取的码流进行UDP传输,传输时以一帧一个码流进行传输,在传输时不考虑网络的MTU问题,直接对产生的每个码流进行整包发送具体实现时,调用WinSock2库中sendto()函数进行数据发送,并在参数中设置数据传输流的大小,相关程序见MMCD.cpp中的VideoSendingThread().(6)对接收到的视频码流进行解码接收端采用UDP的recvfrom ()函数接收数据包。