多媒体通信实验报告
中科大多媒体通信技术实验--基于组播的音频通信
6、实验总结 ....................................................................................................... 14
多媒体通信技术实验报告
基于组播的音频通信
尚国武 SA13006103
实验一、基于组播的音频通信
1、实验目的
1) 熟悉音频通信的基本原理,了解音频编码方式; 2) 了解组播通信方式,熟悉监测音频流状态的方法; 3) 熟悉掌握 VC++ MFC 的使用和综合能力; 4) 提高自己的发现问题、分析问题、解决问题的能力。
2、实验要求
1) 采用组播方式; 2) 音频需要选择一种编码方式; 3) 可选要求:使用 RTP/RTCP 监测音频流状态。
3.2 音频编解码 ............................................................................................................... 3
4、实验设计 ......................................................................................................... 4
2
多媒体通信技术实验报告
基于组播的音频通信
尚国武 SA13006103
3.2 音频编解码
本实验中采用 ADPCM 算法对音频信号进行编解码。 ADPCM (Adaptive Differential Pulse Code Modulation,即自适应差分脉冲编码调制) 是一种算法较简单的波形编码, 其根据语音信号具有短时平稳性的非平稳随机过程及相 邻样点间有着很强相关性的特点, 采用自适应量化和自适应预测技术对语音信号进行编 码。它的一个重要特点就是可以在较低的数据率的情况下,获得较高质量的重构语音。 其记录的量化值不是每个采样点的幅值,而是该点幅值与前一个采样点幅值之差。从而 实现了 64 kb/s A 律或 u 律 PCM(脉冲编码调制)速率和 32 kb/s 速率之间的相互转换,将 语音的传输速率提高了一倍。 ADPCM 系统的输入输出信号为标准的 A 律或μ律 64 kb/s PCM 信号,由于 64 kb/s PCM 是经过对数压缩后的数字信号,它不能直接进行一 般算术运算,所以,在进入 ADPCM 编码前,还必须把 A 律或μ律 PCM 码变换成自然 二进制码, 即线性 PCM 码。 这一变换可以通过两者之间的内在关系来实现。 在接收端, 则需要进行一次反变换,把 ADPCM 码解码得到用线性 PCM 码表示的重建信号,变换 成 A 律或μ律对数 PCM 信号输出。 其思想为: ①利用自适应的思想改变量化阶的大小, 即使用小的量化阶(step-size)去编码小的差值,使用大的量化阶去编码大的差值;②使用 过去的样本值估算下一个输入样本的预测值, 使实际样本值和预测值之间的差值总是最 小。它的编码简化框图如图 1 所示,解码原理图如图 2 所示。
多媒体实验报告
多媒体技术班级:网络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用户自己设定。
多媒体通信实验实验1声音视频的播放
实验一声音视频的播放一实验目的使学生掌握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 纠错条件,即校验帧正确,数据帧只有一帧出错,就可以对图像数据进行纠正。
(2024年)多媒体实验报告多篇
06
多媒体应用案例分析
2024/3/26
23
教育领域应用案例
2024/3/26
多媒体教学课件
通过图像、声音、视频等多种形式展示教学内容,提高学生的学 习兴趣和效果。
在线教育平台
利用多媒体技术实现远程教学,为学生提供丰富的学习资源和互动 体验。
虚拟现实教育应用
通过虚拟现实技术模拟真实场景,为学生提供沉浸式学习体验,如 虚拟实验室、历史场景重现等。
2024/3/26
17
数据备份与恢复策略
01
数据备份重要性
多媒体数据往往具有较高的价值,一旦丢失或损坏可能造成严重损失,
因此数据备份至关重要。
02
备份策略
可采用定期完全备份、增量备份、差异备份等策略,根据实际需求和数
据变化频率进行选择。
2024/3/26
03
数据恢复方法
当数据发生损坏或丢失时,可通过备份文件进行恢复,或使用专业数据
24
娱乐领域应用案例
音乐播放软件
支持多种音频格式,提供高品质的音乐播放体验 ,如均衡器、音效等。
视频播放软件
支持多种视频格式,提供高清、流畅的视频播放 体验,如弹幕、多音轨等。
游戏娱乐应用
利用多媒体技术打造丰富的游戏场景和音效,提 供沉浸式的游戏体验。
2024/3/26
25
企业宣传领域应用案例
企业形象宣传片
JPEG压缩编码标准
采用离散余弦变换和量化技术,实现图像数据的高压缩比。
PNG压缩编码标准
无损压缩格式,支持透明度和高级色彩控制。
GIF压缩编码方法
适用于简单动画和图标,采用LZW压缩算法。
2024/3/26
多媒体通信实验指导(改动)
多媒体通信实验指导实验一、数字图像获取一、实验目的1掌握使用扫描仪、数码相机、数码摄像级机、电脑摄像头等数字化设备以及计算机获取数字图像的方法;2修改图像的存储格式;并比较不同压缩格式图像的数据量的大小。
二、实验步骤1扫描仪、数码相机(手机)、数码摄像机或电子摄像头通过数据线与计算机的连接;2打开计算机,安装外部设备的驱动程序;3获取二值、灰度和彩色图像;(最好是自己的照片)4将获得的图像的格式转换为“*.gif”、“*.tif”、“*.jpg”的格式,检查图像文件数据量的大小。
将图片保存或拷贝到MATLAB程序组根目录的“work”文件夹中,以便后面的实验做为“原图像”利用。
5记录和整理实验报告。
三、实验仪器1计算机;2扫描仪(或数码相机、数字摄像机等)及其驱动程序盘;3图像处理软件(画图,Photoshop, Microsoft photo edit等);4记录用的笔、纸。
四、实验报告内容1叙述操作过程2提交原始图像。
五、思考题1试述数字图像获取设备的工作原理。
2你使用过图像获取设备有哪些。
实验二、图像变换一、实验目的1了解图像变换的意义和手段;2熟悉离散傅里叶变换基本性质;3熟练掌握图像变换的方法及应用;4通过实验了解二维频谱的分布特点;5通过本实验掌握利用MA TLAB编程实现数字图像的变换。
二、实验原理1应用各种离散变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决大多数图像处理问题。
对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。
2图像变换的基本原理(1)傅立叶(Fourier)变换的定义对于二维信号,二维Fourier变换定义为:二维离散傅立叶变换为:图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法。
现代多媒体通信技术实验报告总结
现代多媒体通信技术实验报告总结
中国当前正处于信息科技发展的快速过程中,多媒体通信技术也蓬勃发展和进步。
它正在改变人们的生活方式和模式,成为实现信息和交流的重要途径之一。
本实验的目的是评估多媒体通信技术的有效性和合理性,以及对当前领域应用的影响。
经过实验,多媒体通信技术的主要优点有:一是各种媒体的多样性,可以灵活运用到实际应用场景中;二是信息的传输时间短,可以加快交流速度;三是信息传递的质量高,可以满足更多的应用场景;最后,它也极大地促进了跨媒体和多媒体融合的发展。
另一方面,多媒体通信技术也存在一些问题,其中最值得一提的是信息传输的安全性和可靠性。
由于多媒体信息的复杂性,许多时候可能会遭到不法分子的攻击以及网络中的噪声干扰,从而导致信息传输有误,需要更加严密的安全机制来确保信息传输的安全性和可靠性。
此外,多媒体通信技术还可能带来负面影响,例如不合理的使用会造成浪费信息资源,并且会给用户带来隐私和安全方面的风险。
根据上述实验结果,得出以下结论:多媒体通信技术的应用可以提高信息传输的效率,促进信息的多样性和多媒体融合,但也需要采取有效的保护措施,以确保信息的安全性和正确性。
综上所述,多媒体通信技术是信息交流领域一种重要的技术,具有很强的适应性,可满足多种不同的应用需求,但也需要适当得到管理和保护,以确保信息的安全性和可靠性。
未来,多媒体技术将继续在实际应用领域发挥重要作用,在解决传统信息交流技术的局限性方
面更加突出,为更好的信息交流发展带来福音。
多媒体通信技术实验
武汉理工大学多媒体通信技术实验报告学号:0121109310216班级:电信1102班姓名:戴晓云指导老师:王绪国1.实验目的(1)了解多媒体通信原理(2)了解视频音频通信TCP/IP与UDP通信协议(3)掌握网络通信平台开发2.实验内容在以上硬软件环境下,利用合适的开发工具,设计一套可视对讲软件,实现局域网内两台计算机之间的可视对讲功能,要求音视频信号连续性、实时性较好,满足正常交流需要。
3.实验原理框图图3-1 视频聊天软件原理框图4.实验步骤4.1加载AnyChat for Web SDK库首先将anychatevent.js文件和anychatsdk.js文件加载到页面中。
<script language="javascript" type="text/javascript" src="./javascript/anychatsdk.js" charset="GB2312"></script><script language="javascript" type="text/javascript" src="./javascript/anychatevent.js" charset="GB2312"></script>anychatevent.js 为事件回调anychatsdk.js 为常量定义和方法定义用户只需对网页进行布局,布局完成后对SDK中方法进行调用,输入参数获得结果进行操作即可。
AnyChat SDK的所有功能函数都有个返回值,用户可根据常量定义获得函数返回值的意义,从而进行相应的操作。
4.2初始化SDK网页加载完成后进行初始化插件。
BRAC_InitSDK(apilevel); // 初始化SDK,返回出错代码根据系统返回错误代码,与常量进行对比,获得结果var GV_ERR_SUCCESS = 0; // 成功var GV_ERR_PLUGINNOINSTALL = 1010000; // 插件没有安装var GV_ERR_PLUGINOLDVERSION = 1010001; // 插件版本太低4.3登录系统初始化成功则显示登录界面,初始化失败则显示提示层在登录界面,设置中进行设置服务器地址和端口号。
多媒体实验报告
武汉理工大学多媒体通信技术实验报告学号:0121109310216班级:电信1102班姓名:戴晓云指导老师:王绪国1.实验目的(1)了解多媒体通信原理(2)了解视频音频通信TCP/IP与UDP通信协议(3)掌握网络通信平台开发2.实验内容在以上硬软件环境下,利用合适的开发工具,设计一套可视对讲软件,实现局域网内两台计算机之间的可视对讲功能,要求音视频信号连续性、实时性较好,满足正常交流需要。
3.软件设计框图4.实验步骤4.1建立视频聊天软件服务器(1)新建一个工程,命名为Project1.dpr,并把VFW.PAS加到USE中(2)在Form1上放置一个Tpanel控件,该控件用于显示视频。
之后再放置两个Tbutton 控件,一个caption为"开始",另一个Name为"停止",放置一个UDP组件,这里用indy的IdUDPClient用来传输视频,如图示:(3)定义全局变量CapWnd:THandle; //定义捕捉窗句柄CapParms:TcaptureParms; //用于设置设备属性的结构变量BMPINFO:TBitmapInfo; //BMP图像信息(4)编码事件代码开始按钮代码:CapWnd := capCreateCaptureWindow('我的窗口', WS_VISIBLE or WS_CHILD,//窗口样式0, //X坐标0, //Y 坐标panel1.Width, //窗口宽panel1.Height, //窗口高panel1.handle, //窗口句柄0); //通常为0if CapWnd = 0 then exit; //定义帧捕捉回调函数CapSetCallbackOnFrame(CapWnd,FrameCallBack); CapParms.dwRequestMicroSecPerFrame:=1;CapParms.fLimitEnabled:=FALSE;CapParms.fCaptureAudio:=FALSE;CapParms.fMCIControl:=FALSE;CapParms.fYield:=TRUE;CapParms.vKeyAbort:=VK_ESCAPE;CapParms.fAbortLeftMouse:=False;CapParms.fAbortRightMouse:=FALSE; //让设置生效CapCaptureSetSetup(capWnd,@CapParms,sizeof(TCAPTUREPARMS));CapPreviewRate(capWnd,33); //设置预览视频的频率CapCaptureSequenceNoFile(capWnd); //如果要捕捉视频流,则要使用函数来指定不生成文件,不然会自动生成A VI文件CapDriverConnect(CapWnd,0); //连接摄像头设备,第二个参数是个序号,当系统中装有多个显示驱动程序时,其值分别依次为0到总个数如果有多个摄像头,那么就是0->1->2 capGetVideoFormat(capWnd, @BMPINFO,sizeof(TBitmapInfo)); //取得视频图像数据头CapPreviewScale(capWnd,TRUE); //是否缩放CapOverlay(capWnd,true); //指定是否使用叠加模式,true为使用,否则为falseCapPreview(capWnd,true);回调函数代码:var hd:Thandle;jpg:TJpegImage;memStream :TMemoryStream;Bitmap:TBitmap;begin //将数据显在Image,Bitmap:=TBitmap.Create;Bitmap.Width :=BMPINFO.bmiHeader.biWidth;// New size of BitmapBitmap.Height:=BMPINFO.bmiHeader.biHeight;hd:= DrawDibOpen; DrawDibDraw(hd,Bitmap.canvas.handle,0,0,_BMPINFO.BmiHeader.biwidth,BMPINFO.bmiheader.biheight,_@BMPINFO.bmiHeader,lpVHdr^.lpData,0,0,BMPINFO.bmiHeader.biWidth,_BMPINFO.bmiHeader.biheight,0);DrawDibClose(hd); //发送数据memStream := TMemoryStream.Create;jpg := TJpegImage.Create;jpg.Assign(Bitmap);pressionQuality := 10; //jpg压缩质量jpg.JPEGNeeded;press;jpg.SaveToStream(memStream);jpg.Free; //因为UDP数据包有大小限制,这里如果超出部分,就没有传输,完全可以发几次发出去Form1.IdUDPClient1.BroadcastEnabled:=true;//用广播功能if memStream.Size>Form1.IdUDPClient1.BufferSize then//向192.168.0.X网段广播,端口9001Form1.IdUDPClient1.SendBuffer('192.168.0.255',9001,memStream.Memory^,Form1.IdUDPClient1.BufferSize) else Form1.IdUDPClient1.SendBuffer('192.168.0.255',9001,memStream.Memory^,memStream.Size); memStream.Free;Bitmap.Free;End;停止代码:capCaptureAbort(CapWnd); //停止捕捉capDriverDisconnect(CapWnd); //将捕捉窗同驱动器断开4.2建立视频聊天软件客户端3.2.1新建一个工程,命名为Project2.dpr3.2.2在程序窗口Form2上放置一个image控件,该控件用于接收的图像内容,再放置一个Tbutton控件,caption为"接收",,放置一个UDPServer组件,这里用indy的IdUDPServer 用来接收网络视频,如图示:接收按钮代码:IdUDPServer1.DefaultPort:=9001; //接收端口IdUDPServer1.Active:=true; //启用IdUDPServer1的UDPRead事件代码:var jpg:TJpegImage;begin try jpg := TJpegImage.Create; jpg.LoadFromStream(Adata);Image1.Picture.Bitmap.Assign(jpg); jpg.Free; exceptend;end;视频的传输是压缩成JPG进行传输的,服务器端和接收端都用到了jpeg单元,所以use 中都要加入jpeg。
基于组播的音频通信程序多媒体通信实验报告
基于组播的音频通信程序多媒体通信实验报告多媒体通信是一种可以传输图像、音频和视频等多种形式媒体的通信方式。
在这个实验中,我们实现了基于组播的音频通信程序,并且进行了相应的测试和性能评估。
以下是本次实验的报告。
一、实验目的本次实验的主要目的是通过使用组播技术实现音频通信程序,并对其进行测试和性能评估,验证该通信程序的可行性和效率。
二、实验原理组播是一种一对多的通信方式,通过将数据广播到多个组播组中的成员,实现对多个终端的同时通信。
在本次实验中,我们使用组播来实现音频通信,从而实现多个用户之间的语音通话。
三、实验步骤1.搭建实验环境:创建一个音频通信的网络,包括发送端和接收端。
2.发送端:将音频数据编码并发送到指定的组播组。
3.接收端:从指定的组播组接收音频数据,并解码播放。
四、实验结果经过实验,我们成功实现了基于组播的音频通信程序,并进行了相关测试和性能评估。
1.网络连接稳定:在通信过程中,网络连接保持稳定,没有出现断连等异常情况。
2.音频传输流畅:音频的传输过程中,没有出现明显的延迟、卡顿等现象,保证了通信的实时性和流畅性。
3.多终端支持:我们成功实现了同时支持多个终端进行音频通信,并能正常接收和播放音频数据。
五、实验总结通过本次实验,我们深入了解了组播技术,并实现了基于组播的音频通信程序。
通过测试和性能评估,我们验证了该程序的可行性和效率。
与传统的点对点通信相比,组播通信可以实现对多个终端的同时通信,减少了网络的负载和带宽占用,提高了通信的效率和可靠性。
在实际应用中,基于组播的音频通信可以应用于多媒体会议、在线教育等场景,提供更好的用户体验和服务质量。
多媒体实验报告
多媒体通信实验报告班级:姓名:学号:一、内插算法:利用 4 个最邻近点产生新的像素点已知网格的四个顶点 Q 11=(x 1,y 1), Q 12=(x 1,y 2), Q 21=(x 2,y 1), Q 22=(x 2,y 2) ,求网格内部点 P=(x ,y) 处的未知函数 f首先在 x 方向进行线性内插然后计算 y 方向的线性内插也可以先进行y 方向上的内插在进行x 方向上的内插。
二、源程序:I = imread('E:\zuoye.jpg'); Ip = imresize(I,5, 'bilinear');imwrite(Ip, 'lena5b.jpg', 'quality', 75); imshow(I)figure, imshow(Ip)三、实验结果:原图像:2111121112121()()() R (,)x x x x f R f Q f Q x y x x x x --≈+=--式中 2121222222121()()() R (,)x x x x f R f Q f Q x y x x x x --≈+=--式中 21122121()()()y y y y f P f R f R y y y y --≈+--11212212212121211222211121212121()()(,)()()()()()()()()()()()()()()()()()()f Q f Q f x y x x y y x x y y x x y y x x y y f Q f Q x x y y x x y y x x y y x x y y ≈--+------+--+------双线性内插后:四、结果分析:本实验采用双线性内插法将图像进行5倍放大,由于双线性内插法充分的利用了原图中虚拟点四周的四个真实存在的像素值来共同决定目标图中的一个像素值,因此缩放效果比简单的最邻近插值要好很多。
通信多媒体实验报告
一、实验目的1. 理解通信多媒体的基本概念和原理。
2. 掌握多媒体通信系统的组成和功能。
3. 熟悉常用多媒体通信技术,如音视频编解码、传输协议等。
4. 培养动手实践能力,提高对通信多媒体系统的设计、调试和优化能力。
二、实验原理通信多媒体是指将图像、音频、视频等多媒体信息通过通信网络进行传输、处理和显示的技术。
其基本原理如下:1. 多媒体信息采集:通过摄像头、麦克风等设备采集图像、音频、视频等多媒体信息。
2. 多媒体信息编码:将采集到的多媒体信息进行压缩编码,降低数据传输量,提高传输效率。
3. 数据传输:通过通信网络将编码后的多媒体信息传输到接收端。
4. 多媒体信息解码:接收端对接收到的多媒体信息进行解码,恢复原始的图像、音频、视频信息。
5. 多媒体信息显示:通过显示器、音响等设备将解码后的多媒体信息呈现给用户。
三、实验内容1. 实验一:音视频编解码技术(1)实验目的:掌握常用音视频编解码技术,如H.264、AAC等。
(2)实验步骤:① 采集一段音视频素材;② 使用音视频编解码软件对素材进行编码和解码;③ 比较编码前后音视频质量,分析编解码效果。
2. 实验二:多媒体通信系统搭建(1)实验目的:熟悉多媒体通信系统的组成和功能,掌握搭建多媒体通信系统的基本方法。
(2)实验步骤:① 准备硬件设备,如摄像头、麦克风、显示器、音响等;② 使用网络通信软件(如Wireshark)搭建多媒体通信系统;③ 实现音视频信息的采集、传输、解码和显示。
3. 实验三:多媒体通信系统优化(1)实验目的:掌握多媒体通信系统的优化方法,提高系统性能。
(2)实验步骤:① 分析多媒体通信系统的性能瓶颈;② 采取相应的优化措施,如调整编码参数、优化传输协议等;③ 评估优化效果,分析系统性能提升。
四、实验结果与分析1. 实验一:通过对比编码前后音视频质量,发现H.264编解码效果较好,压缩比高,音视频质量损失较小。
2. 实验二:搭建的多媒体通信系统能够实现音视频信息的采集、传输、解码和显示,系统运行稳定。
多媒体通信实验报告一
面向对象技术在多媒体数据库中的应用作者:高瑞(班级:2008211101学号:08210022)摘要面向对象编程技术是一种计算机编程架构,其基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。
该技术达到了软件工程的三个主要目标:重用性、灵活性和扩展性。
为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
由此面向对象技术得到了广泛的应用。
该文主要研究了面向对象技术在多媒体数据库中的应用,重点讨论基于面向对象的多媒体数据库系统的实现。
关键词多媒体面向对象多媒体数据库 DirectShowApplication of Object-oriented technology inMultimedia DatabaseName: Gao Rui(class:2008211102 student number:08210022)Abstract:Object-oriented programming technology is one kind of computer programming framework。
Its basic principle is that a computer program is up to the individuals which can rise the subroutine function of a combination of elements or object. This technology has reached three of the software engineering goals: reusability, flexibility and expansibility. In order to realize the overall operation, each object can receive information, data processing and send information to other objects. Thus object-oriented technology has been used widely. This paper mainly studies the object-oriented technology in the application of multimedia database based on object oriented and the realization of the multimedia database system.Key words multimedia; object-oriented; multimedia database1多媒体数据库概述1.1多媒体数据库的基本特征第一,媒体的种类比较多,从而加大了数据处理的难度;第二,数据量和媒体间量的差异很大,使数据库中的存储和组织方法受到影响;第三,多媒体不仅改变了数据库的接口,使其声、图、文并茂,同时也改变了数据库的操作形式,尤其是查询机制和查询方法。
多媒体通信 武汉理工大学
课程设计任务书学生姓名:王靖凯专业班级:通信gj1202指导教师:胡辑伟工作单位:信息工程学院题目: 多媒体通信初始条件:MATLAB软件平台;图像处理相关知识要求完成的主要任务:图像通信之前需要进行数据量压缩,编程实现JPEG图像压缩标准的主要环节,完成压缩和解压过程,计算压缩比。
要求:将彩色图像进行颜色空间转换、对不同的颜色分量进行不同的采样、对于3个分量进行8×8的DCT变换、对DCT系数矩阵按照JPEG推荐的量化表进行量化;对量化后的系数进行Z形扫描,最后进行熵编码,形成码流,计算比特数,和压缩比。
解压从量化后的DCT系数表开始逆向进行。
参考书:[1] 李秀敏. 基于MATLAB的DCT在JPEG图像压缩中的应用[J]. 电光与控制,2005.04[2] 傅祖芸. 信息论:基础理论与应用[M].电子工业出版社,2007.05[3] 刘玮,王红星. 图像的无损压缩编码方法及JPEG标准模式[J]. 现代电子技术,2002.05[4] 邱磊. JPEG算法研究及实现[J]. Computer Era No.9,2009[5] 陈思思,王耀楠. 基于DSP的JPEG图像压缩编码的实现[J].计算机测量与控制,2008.01[6]程丽. 基于MATLAB环境的JPEG图像压缩算法[J]. 四川兵工学报,2011.05时间安排:1、理论讲解,老师布置课程设计题目,学生根据选题开始查找资料;2、课程设计时间为2周。
(1)确定技术方案、电路,并进行分析计算,时间2天;(2)选择元器件、安装与调试,或仿真设计与分析,时间6天;(3)总结结果,写出课程设计报告,时间2天。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)ABSTRACT (2)1 实习任务与要求 (3)1.1实习目的 (3)1.2实习任务要求 (3)2 图像压缩技术简介2.1图像压缩技术基础 (4)2.2图像处理工具简介 (4)3 JPEG图像压缩编码原理 (6)3.1色彩空间转换 (6)3.2数据分块及采样 (6)3.3离散余弦变换 (7)3.4DCT系数的量化 (8)3.5量化系数Z形扫描 (9)3.6量化系数的编码 (11)3.6.1 DC系数编码 (11)3.6.2 AC系数编码 (11)3.6.3 霍夫曼编码 (12)3.7组成JPEG位数据流 (13)4 JPEG图像解压原理 (15)4.1读入文件 (15)4.2霍夫曼码构建 (15)4.3系数解码 (16)4.4反量化反Z形扫描DCT逆变换 (17)4.5颜色转换 (18)5 JPEG图像压缩MATLAB仿真实现 (19)5.1JPEG图形压缩解压模型 (19)5.2MATLAB仿真流程设计 (19)5.2.1 程序总流程图 (19)5.2.2 数字图像文件的读写 (20)5.2.3 DCT变换的编程实现 (21)5.2.4 量化程序设计 (23)5.2.5 Z形扫描设计 (23)5.3MATLAB仿真结果及分析 (24)5.3.1 仿真过程图像 (24)5.3.2 比特数与压缩比显示 (26)5.3.3 仿真结果分析 (26)6 总结与体会 (26)参考文献 (28)附录 (29)摘要随着科学技术的发展,图像压缩技术越来越引起人们的关注。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多媒体通信实验——点到点的语音视频通信一.实验要求(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 ()函数接收数据包。