毕业设计论文(4)

2019-06-17 19:22

东北大学毕业设计(论文) 第2章 相关技术

变本身的源传输地址,必须选择新的SSRC识别符,以避免被当作一个环路源。

有贡献源(CSRC)表:0到15项,每项32比特,CSRC列表识别在此包中负载的有贡献源。识别符的数目在CC域中给定.若有贡献源多于15个,仅识别15个。CSRC识别符由混合器插入,用有贡献源的SSRC识别符。例如语音包,混合产生新包的所有源的SSRC标识符都被陈列,以期在接收机处正确指示交谈者。

注意:前12个字节出现在每个RTP包中,仅仅在被混合器插入时,才出现CSRC识别符列表。

2.2.2 RTCP实时传输协议

实时传输控制协议RTCP(Real time Transport Control Protocol)负责管理传输质量,在当前应用进程之间交换控制信息,提供流量控制和拥塞控制服务。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。

RTCP协议的功能是通过不同的RTCP数据报文来实现的,主要有如下几种类型: (1) SR(Sender Report)发送端报告,所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。

(2) RR(Receiver Report)接收端报告,所谓接收端是指仅接收但不发送RTP数据报的应用程序或者终端。

(3) SDES源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。

(4) BYE通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自己将退出会话。

(5) APP由应用程序自己定义,解决了RTCP的扩展性问题,并且为协议的实现者提供了很大的灵活性。

RTCP数据报携带有服务质量监控的必要的信息,能够对服务质量进行动态的调整,并且能够对网络拥塞进行有效的控制。由于RTCP数据报采用的是组播方式,因此会话中的所有的成员都可以通过RTCP数据报返回的控制信息,来了解其他参与者的当前情况。

-8-

东北大学毕业设计(论文) 第2章 相关技术

例如在流媒体应用场合下,发送媒体流的应用程序将周期性地产生发送端报告SR,该RTCP数据报含有不同媒体流间的同步信息,以及已经发送的数据报和字节的计数,接收端根据这些信息可以估计出实际的数据传输速率。另一方面,接收端会向所有已知的发送端发送接收端报告RR,该RTCP数据报含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等重要信息,发送端应用根据这些信息可以估计出往返时延,并且可以根据数据报丢失概率和时延抖动情况动态调整发送速率,以改善网络拥塞状况,或者根据网络状况平滑地调整应用程序的服务质量。

RTCP具有以下四个功能:

(1) 基本功能是提供数据传输质量的反馈.这是RTP作为一种传输协议的主要作用,它与其他协议的流量和阻塞控制相关.反馈可能对自适应编码有直接作用,但是IP组播的实验表明它对于从接收机得到反馈信息以诊断传输故障也有决定性作用。向所有成员发送接收反馈可以使\观察员\评估这些问题是局部的还是全局的。利用类似多点广播的传输机制,可以使某些实体,诸如没有加入会议的网络业务观察员,接收到反馈信息并作为第三类监视员来诊断网络故障.反馈功能通过RTCP发射机和接收机报告实现。

(2) RTCP为每个RTP源传输一个固定的识别符,称为标称名或CNAME。由于当发生冲突或程序重启时SSRC可能改变,接收机要用CNAME来跟踪每个成员。接收机还要用CNAME来关联一系列相关RTP会话期中来自同一个成员的多个数据流,例如同步语音和图像。

(3) 前两个功能要求所有成员都发送RTCP包,因此必须控制速率以使RTP成员数可以逐级增长。通过让每个成员向所有成员发送控制包,各个成员都可以独立地观察会议中所有成员的数目。

(4) 可选的功能是传输最少的会议控制信息,例如在用户接口中显示的成员识别.这最可能在\松散控制\的会议中起作用,在\松散控制\会议里,成员可以不经过资格控制和参数协商而加入或退出会议。RTCP作为一个延伸到所有成员的方便通路,必须要支持具体应用所需的所有控制信息通信。

2.3 FFmpeg视频编解码技术

2.3.1 FFmpeg简介

FFmpeg是一个集视频录制、转换和音视频编解码功能于一体的开源C代码库。FFmpeg最初的开发是基于Linux操作系统,但是经过编译和移植后也可以在人多数操作系统中使用。FFmpeg包含了丰富的视频编解码库,支持MPEG、DivX、MPEG-4、

-9-

东北大学毕业设计(论文) 第2章 相关技术

AC3、DV、FLV等40多种编码以及AVI、MPEG、OGG、Matroska、ASF等90多种解码。为了保证编解码质量和可移植性,FFmpeg里很多视频编解码的codec都是从头开发的[5]。

2.3.2 组成

FFmpeg开源库主要由以下一些子库组成[6]:

(1) libavformat:用于生成和解析各种音视频封装格式,配置和获取编解码器的信息和上下文结构。

(2) libavcodec:包含了所有的音视频编解码器。 (3) libavutil:包含了一些工具组件函数。

(4) libswscale:用于在不同的颜色空间进行转换和视频比例缩放等。 (5) libpostproc:用后期的效果处理。

(6) ffmpeg:提供了一些可以直接进行格式转换、编解码的工具。 (7) ffserve:一个HTTP多媒体即时广播服务器。

(8) ffplay:一个简单的用ffmpeg进行解析和解码的播放器。

2.3.3 编码框架

在使用FFmpeg库中的任何功能之前,都必须对FFmpeg进行注册,否则任何codec和format将无法使用,FFmpeg库中的初始化注册功能由av_register_all()函数来实现。第二步要根据所使用的编码格式申请FFmpeg中的编码器,可以使用两种方法来申请编码器,分别是根据编码器的CODEC_ID来申请和根据设置的文件名格式来申请,例如将CODEC_ID设置为CODEC_ID_MPEG4和将文件名后缀.mp4传入申请编码器的函数,都可以申请到MPEG_ 4格式的编码器。FFmpeg支持现有的大多数视频编码器,如MPEG_1、MPEG_2、MPEG_3、H.261、H.263等,但是目前FFmpeg还不支持H.264编码器,如需要H.264编码器,需要将其他的开源H.264库(如X264库)集成到FFmpeg中,本文不加赘述。

在申请好了编码器之后,需要对编码器的各种编码参数进行一些必要的设置以满足不同的要求。其中比较重要的参数有视频尺寸、编码比特率、运动估计算法、GOP大小和像素格式等。视频尺寸即视频的宽度和高度。编码比特率即码率,它决定了编码的质量和压缩率,编码比特率越大,采样率就越高,相应的编码质量也越高,但是压缩率会变小,即需要传送的数据量变大,反之,编码比特率越小,采样率就越低,相应的编码

-10-

东北大学毕业设计(论文) 第2章 相关技术

质量就越低,但是压缩率会变大,传送的数据量也会变小。运动估计算法可以有效地去除帧间的冗余,在传输视频时对于减少网络负载量具有非常重要的意义。GOP(Group of Pictures)大小是指以帧数来表示的一组连续画面的大小,在这组连续的画面所对应的帧中,只需要把第一帧作为I帧,其余帧都可以作为P帧或B帧。像素格式是指视频帧中的像素所使用的颜色空间格式,如YUV420P、YUV422P和RGB24等。在编码器准备就绪开始编码之前,还需要分配编码所需的内存空间,这些内存空间包括一帧原始视频图像大小的临时缓存区、一帧原始视频图像大小的图像存放区和一个输出缓存区,输出缓存区可以在不会发生数据溢出的前提下自行设定大小。

在前期的准备工作完成之后,就可以对视频序列进行编码了。编码的过程为:首先提取出视频序列的一帧,将这一帧图像拷贝到临时缓冲区中。然后利用月FFmpeg提供的sws_scale()方法将图像像素转换为之前设定的像素格式并存放在图像存放区中;最后使用FFmpeg的avcodec_encode_video()方法将这帧图像编码并存放在输出缓存区中等待发送。

当结束编码时,会将之前中请的FFmpeg中的资源和系统内存中的资源进行释放和回收,等待下一次开始编码。编码过程如图2.2所示。

初始化ffmpeg申请编码器视频编码设置编码器参数NY结束?释放资源分配编码缓存区 图2.2 使用FFmpeg编码过程

2.3.4 解码框架

本课题对FFmpeg的解码实现过程与编码过程大致类似,有点需要说明的是在分配待解码图像输入缓冲区的时候,所需申请的内存大小要比实际大一个尺寸,这个尺寸在FFmpeg中定义为FF_INPUT_BUFFER_PADDING_SIZE。这是因为有一些解码器在从输入缓冲区读取视频流的时候会以32位或64位为步长,这就有内存溢出的可能性。在输入缓冲区的后面加入一定长度的保护单元,可以避免这种情况的发生,对解码也不会产生影响。如果在分配输入缓冲区的时候忽略了这一点,将会导致无法解码出正确的图像

-11-

东北大学毕业设计(论文) 第2章 相关技术

数据的情况。解码过程如图2.3所示。

申请解码器NY申请解码器视频解码结束?释放资源申请解码器图2.3 使用FFmpeg解码过程

2.4 本章小结

本章对基于Android的视频通话系统关键技术进行了简单的介绍,并结合本系统介绍了各个技术在实际背景下的具体应用。第一节介绍了Java多媒体框架里在本应用中使用到的重要组件。第二节介绍了RTP/RTCP协议,包括RTP实时传输的原理。第三节介绍了本系统所使用的编解码器,并简单分析了其特点。本章内容是本课题的技术构成,也是本课题能够实现的关键。

-12-


毕业设计论文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:诸子百家年谱

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: