实验三_数字视频流通信传输

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字视频流通信传输

一 实验目的

1.了解流传输的原理。

2.理解计算机网络体系结构

3.掌握SOCKET编程

4.了解TI DSP平台下网络开发工具NDK

5. 结合原理对程序进行分析

6.运行.out文件看到视频流传输的效果。

二 实验原理

1.流媒体实现的关键技术就是流式传输。流式传输定义很广泛,现在主要指通过网络传送媒体(如视频、音频)的技术的总称。其特定含义为通过Internet 将影视节目传送到PC机。实现流式传输有两种方法:实时流式传输(Realtime Streaming)和顺序流式传输(progressive Streaming)。一般说来,如视频为实时广播,使用流式传输媒体服务器,或应用如RTSP的实时协议,即为实时流式传输。如使用HTTP服务器,文件即通过顺序流式传输。

2. 要使得计算机在网络中有条不紊地交换数据,就要为网络中数据交换建立统一的规则、标准或约定,称为网络协议;各层协议的集合构成了网络的体系结构。

计算机网络的五层协议体系结构图2.1所示:

图2.1 计算机网络五层协议

①应用层是所有用户所面向的应用程序的统称。ICP/IP协议族在这一层面有着很多协议来支持不同的应用,许多大家所熟悉的基于Internet的应用的实现就离不开这些协议。如我们进行万维网(WWW)访问用到了HTTP协议、文件传输用FTP协议、电子邮件发送用SMTP、域名的解析用DNS协议、远程登录用Telnet协议等等,都是属于TCP/IP应用层的;就用户而言,看到的是由一个个软件所构筑的大多为图形化的操作界面,而实际后台运行的便是上述协议。

②传输层的功能主要是提供应用程序间的通信,TCP/IP协议族在这一层的

协议有TCP和UDP。

③网络层是TCP/IP协议族中非常关键的一层,主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅地传输,IP协议就是一个网络层协议。

④网络接口层是TCP/IP软件的最低层,负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

3. UDP和TCP使用了应用层接口处的端口(port)与上层的应用进程提供通信,因此在运输协议数据单元(即UDP报文段或TCP用户数据报)的首部中都要写入源端口和目的端口。运输层收到IP层交上来的数据后,要根据其目的端口号决定当通过哪个端口号交给目的进程。

为了在通信时不致发生混乱,必须把端口号和主机的IP地址结合在一起使用。如一个TCP连接由它两个端点来标志,而每一个端点又是由IP地址和端口号决定的。因此将TCP连接的端点称为插口(Socket),或套接字、套接口。

套接字=(IP地址,端口号)

运输层和应用层之间进行交换的数据称为报文(Message),而在运输层和网络层之间进行交换的数据称为数据报(Datagram)。运输层可以使用运输控制协议(TCP)来封装数据,也可以使用数据报协议(UDP)来封装数据。

TCP提供的是面向连接的、可靠的数据流传输。TCP的数据包开头就有详细的IP地址,要求接受方返回“收到”的信息,这样才继续发送。TCP的安全性较高,保证了传输数据的正确性,但由于数据量大,要等待对方的反馈,其速度比不上UDP。UDP提供的是非面向连接的、不可靠的数据流传输。UDP传输中不管其顺序,数据到达收端后再进行排序组装,有数据包丢失等情况,但它的传输效率比较高,速度较快。

图3.1使用TCP协议的Client/Server结构程序模型

图3.2使用UDP协议的Client/Server结构程序模型

由图3.1和3.2可看出,使用TCP协议使用connect()和accetp(),确定了连接成功,从而建立了端口点对点的连接,确保了传输的可靠性。而使用UDP 时,不需建立点到点的连接,只有建立了端口,就可以把数据sendto()发送出去。

4. NDK是TI提供的一个相对完整的TCP/IP Stack及一些网络工具包,还集成了一些常用的网络服务器组件。NDK的编程请参考文档TI C64系列网络开发技术.ppt,PP:19~57.

三 程序设计

本程序是利用TI提供的JPEG的编码与解码库,加之TCP/IP协议栈来实现的视频采集,回放与网络的传输。工作过程如下:

①首先由SEEDVPM642将图像采集,并过行JPEG的压缩;

②可以由TCP/IP传到PC机上进行JPEG的解压与显示,也可以由DSP完成解压,由监视设备进行显示。

(1)程序主要的执行流程jpeg_network\src\main\ jpegmain.c中的main()函数所示,下面对主要函数进行简要的介绍:

tskVideoInputInit();//初始化输入输出设备

tskVideoOutputInit();

tskVideoInputStart();//获得输入数据流,并将图像数据转换为YUV420格式存储,方便后面压缩处理

tskVideoOutputStart();//将图像数据转换为YUV422格式,然后在显示器上播放

tskEncodeInit();//初始化编码器

tskDecodeInit();//初始化解码器

tskEncodeStart();//开始编码

tskDecodeStart();//开始解码

thrControlInit();

thrControlStartup();//获取网页上传输回来的控制信息

UTL_showHeapUsage( intHeap );// cgi编程,实现web网页与服务器的信息交互 UTL_showHeapUsage( extHeap );

(2)NDK网络编程

NDK的使用请参考文档 DM642上TCP_IP协议的实现及性能测试.pdf。下面对程序中NDK编程进行简要的分析。

相关文档
最新文档