精华内容
下载资源
问答
  • 由于帧同步将所有运算都放在客户端,而且所有游戏对象都需要参与运算、不能省略,因此对游戏进行性能优化也非常必要。本文将着重介绍H5游戏性能优化一些方法。 三,性能优化 游戏在运行过程中,最主要的资源...

    前文介绍了数据一致性、体验优化等方面。由于帧同步将所有的运算都放在客户端,而且所有游戏对象都需要参与运算、不能省略,因此对游戏进行性能优化也非常必要。本文将着重介绍H5游戏的性能优化的一些方法。

    三,性能优化

    游戏在运行过程中,最主要的资源消耗就是CPU、GPU、内存三部分。比如CPU有太多的渲染状态切换、逻辑更新太复杂,GPU的Draw Call和Over Draw太高,内存存在太多纹理、场景对象等。而这一切都会产生功耗。手机性能优化的核心就是,如何以最少的资源消耗,获得最好的用户体验。
    在这里插入图片描述

    1.GPU优化

    讲GPU优化前,首先要介绍一下渲染管线。CPU首先要决定渲染哪些对象、坐标是多少、加载什么纹理、哪些需要被裁剪,然后设置渲染状态,发送纹理数据。紧接着调用DrawCall。GPU则通过顶点着色器、光栅化、片段着色器等流程将其渲染出来。
    在这里插入图片描述

    GPU优化首当其冲是要进行合批、降Draw Call。原因是,GPU的渲染是并行的,它的工作方式决定了:少次多量的渲染指令、比多次少量的渲染指令,利用率高的多。常见的合批方式有:

    • 动态合图。采用引擎自带的动态合图,能最快速的达到合图效果。
    • 静态合图。开发者自行进行的合图方式,需要开发者对于图集和渲染顺序的把控更为严格,当然效果也更好。
    • bmfont。英文字母、数字、标点符号等,采用位图bmfont,能达到合图的效果。
    • 文本缓存。系统自定义的文本不能参与合图。但对于不怎么改变的文本,可以使用文本缓存的方式进行合图。

    此外,GPU的优化方式还有:优化自定义的shader,降低OverDraw(即像素点被重复绘制的比率);进行脏矩形优化(将屏幕分割成若干矩形,只渲染有变化的矩形区域);显示裁剪等。
    在这里插入图片描述

    举个我们游戏的栗子。不优化前,占用90+ Draw Call;采用动态合图降到30+ Draw Call;再使用静态合图、bmfont等、降到10+ Draw Call。

    2.CPU优化

    CPU的优化方式有:

    • 减少渲染状态切换。因为在调用Draw Call前CPU首先要进行渲染状态的设置,如果状态产生了切换,就需要重新设置,于是不可避免的会打断合批。因此尽量将渲染状态相同的放在一起渲染。渲染状态包括纹理状态改变、材质、混合模式改变等。
    • 差异化刷新率。比如降低视野外的物体的刷新率,而战斗场景和UI界面刷新率也可以不同。
    • 分帧执行。比如需要实例化大量node,或播放很多特效。就可以分到多帧去执行,避免爆点卡顿。
    • 事件机制。谨慎对待每帧都执行的update,将轮询方式改成事件触发方式。
    • 复用运算。比如有一个群体寻路的功能,就可以复用第一个人的寻路路径。控制粒子数量。
    • 注意控制粒子数量,减少计算量。可根据高中低档机分别进行控制。

    举个游戏的CPU优化对比图。优化后CPU降了2个百分点:
    在这里插入图片描述

    3.内存优化

    内存优化的方式有:

    • 使用对象池。频繁创建、销毁对象,非常消耗资源。比如游戏中的子弹。使用对象池则能减少GC,降低内存碎片。
    • 纹理压缩。CPU和GPU读取的纹理格式不同。PNG和JPG需要CPU解码后传给GPU。因此在内存中存在源文件数据、解码数据两份,内存占用较高。可采用纹理压缩,直接使用PVR、ETC、ASTC等GPU能直接读取的格式。但也有缺点:一是各平台对这些格式的支持程度不同,二是是图片纹理的质量可能受到影响。
    • 音频优化。每秒音频文件的数据量 = 声道数 * 采样率 * 每个采样占用的bit数。经测试,5个2M的MP3音乐,解码后的数据量可能达到100MB。因此如果内存占用过大,可酌情进行优化,比如双声道改单声道,降低采样率等。此外,较大的背景音乐使用Dom Audio而非Web Audio进行播放,因为Web Audio要完全解码后才播放、占用内存较大,而Dom Audio可以边解码边播放。
    • 资源释放。游戏场景切换时,静态资源设置自动释放,动态加载的资源则需要手动进行释放。
    • 逻辑优化。设置分级Log,避免频繁创建大array,避免大量匿名函数等。

    举个游戏的内存优化对比图,优化后内存降了60、70MB:
    在这里插入图片描述

    链接:

    帧同步在小游戏实践中的那些坑(一)数据篇:
    https://blog.csdn.net/weixin_42109916/article/details/109307299
    帧同步在小游戏实践中的那些坑(二)体验篇:
    https://blog.csdn.net/weixin_42109916/article/details/109310916
    帧同步在小游戏实践中的那些坑(三)性能篇:
    https://blog.csdn.net/weixin_42109916/article/details/109311921

    展开全文
  • RTP音视频同步中NTP作用

    千次阅读 2016-12-28 11:15:20
    多媒体通信同步方法主要有时间戳同步法、同步标记法、多路复用同步法三种。下面主要讨论时间戳同步法,特别是RTP时间戳同步。内容包括RTP媒体间同步的实现,为什么需要RTCP的NTP时间来实现媒体间同步?没有RTCP,...

    多媒体通信同步方法,主要有时间戳同步法、同步标记法、多路复用同步法三种。下面主要讨论时间戳同步法,特别是RTP时间戳同步。内容包括RTP媒体间同步的实现,为什么需要RTCP的NTP时间来实现媒体间同步?没有RTCP,能实现RTP媒体间的同步吗?DirectShow时间戳和RTP时间戳的区别,MPEG2-TS流的时间戳等。本文只简单讨论时间戳同步的原理,不涉及具体的实现方法,如音频帧和视频帧时间戳的计算方法,怎样根据时间戳去做音视频的呈现等。

     根据RTP规范,不同的RTP媒体流是分开传输的,且使用各自独立的时间戳进行同步。假设在一次视频点播中,传输两路RTP媒体流,一路视频,一路音频。根据视频帧时间戳,可以实现视频流内同步,这很好理解,通过视频帧时间戳可以计算出相邻视频帧的时间间隔,也就是视频帧之间的相对时间关系很容易通过时间戳来确定,按照这个间隔去呈现视频,就可以获得较好的效果。同理,音频流也可以实现自身的同步。 

    那么音频和视频这两路媒体间如何实现同步呢?我们只使用音视频的RTP时间戳,看能否实现媒体间的同步。音视频的RTP时间戳的增长速率一般是不同的,但没关系,知道了具体的单位后,两者是可以通过单位换算联系起来的。如下图:


    现在来看,这种方法好像可以实现同步,因为音视频被映射到同一个时间轴上了,音频和视频帧间的相对关系很清楚。慢着,RTP规范要求时间戳的初始值应该是一个随机值,那么假设音频帧时间戳的初始值是随机值1234,视频帧时间戳的初始值是随机值5678,看起来应该是下面这样:

    这么做合适吗?我们把音频帧时间戳1234和视频帧时间戳5678对应到绝对时间轴的0上,我们这么做的理由是什么?你可能会说,因为那是第一个音频帧和第一个视频帧,所以可以对应到同一个点上,在第一幅图中我们就是这么做的,把音频帧时间戳0和视频帧时间戳0对应到绝对时间轴的0上。但是RTP规范并没有规定第一个视频帧的时间戳和第一个音频帧的时间戳必须或者应该对应到绝对时间轴的同一个点上,从整个RTP规范中不能直接得出这样的结论,也推导不出这样的结论。 

    我们上面两幅图所做的转换是不正确的,为什么呢?因为在做转换时,隐含了一个假设,我们想当然地认为这个假设是成立的,实际上它并不总是成立。这个假设就是第一个视频帧和第一个音频帧的时间戳应该对应到同一个点上,即无论它们时间戳是多少,都应该在同一时间播放。

    仅仅使用RTP时间戳是无法实现媒体间同步的,根本的原因是音频时间轴和视频时间轴是完全独立的,通过音频帧和视频帧的时间戳,无法确定一个视频帧和一个音频帧的相对时间关系,也就是无法把它们都准确定位在绝对时间轴上,只能准确定位一个。

    要实现RTP媒体间同步,需要借助于RTCP,在RTCP的SR包中,包含有<NTP时间,RTP时间戳>对,音频帧RTP时间戳和视频帧RTP时间戳通过<NTP时间,RTP时间戳>对,都可以准确定位到绝对时间轴NTP上,音频帧和视频帧的相对时间关系就可以确定下来了。

    上面提到,我们的那个隐含的假设并不总是成立,那就是说它有成立的时候。那是不是说当它成立时,我们就可以不用RTCP来做媒体间同步了?答案是,基本上可以这么认为。

    例如,对于RTP实时流,在发送端媒体间就同步的很好,在接收端只需做少许处理,不需要RTCP,就可以实现媒体间同步。当然,这只是少数例外。因为RTP规范并不包括这个假设,所以我们还是按照RTP规范来做吧。

    下面说一下DirectShow和MPEG2-TS的时间戳。DirectShow中的时间戳和RTP中的时间戳,除了单位不一样,计算方法不一样外,本质的区别就是DirectShow中的音频帧和视频帧时间戳使用的是同一个时间轴,所以不需要借助其他的东西,仅仅使用音频帧时间戳和视频帧时间戳就可以实现媒体间同步。MPEG2-TS流中也有时间戳,它的时间戳和RTP及DirectShow的时间戳都不同,TS流中的音频帧和视频帧时间戳使用的也是同一个时间轴,TS流中的音频和视频是复用的,这在一定程度上就起到了同步的作用,所以它并不是在每个帧上都打时间戳,比如它的PTS时间戳就是每隔0.1秒一个,缺失的时间戳是通过其他时间戳插值计算出来的。

    (dengzikun)

    文章转载自:罗索实验室 [http://www.rosoo.net/a/201101/10776.html]

    展开全文
  • 多媒体通信同步方法主要有时间戳同步法、同步标记法、多路复用同步法三种。下面主要讨论时间戳同步法,特别是RTP时间戳同步。内容包括RTP媒体间同步的实现,为什么需要RTCP的NTP时间来实现媒体间同步?没有RTCP,...

    多媒体通信同步方法,主要有时间戳同步法、同步标记法、多路复用同步法三种。下面主要讨论时间戳同步法,特别是RTP时间戳同步。内容包括RTP媒体间同步的实现,为什么需要RTCP的NTP时间来实现媒体间同步?没有RTCP,能实现RTP媒体间的同步吗?DirectShow时间戳和RTP时间戳的区别,MPEG2-TS流的时间戳等。本文只简单讨论时间戳同步的原理,不涉及具体的实现方法,如音频帧和视频帧时间戳的计算方法,怎样根据时间戳去做音视频的呈现等。

     根据RTP规范,不同的RTP媒体流是分开传输的,且使用各自独立的时间戳进行同步。假设在一次视频点播中,传输两路RTP媒体流,一路视频,一路音频。根据视频帧时间戳,可以实现视频流内同步,这很好理解,通过视频帧时间戳可以计算出相邻视频帧的时间间隔,也就是视频帧之间的相对时间关系很容易通过时间戳来确定,按照这个间隔去呈现视频,就可以获得较好的效果。同理,音频流也可以实现自身的同步。 

    那么音频和视频这两路媒体间如何实现同步呢?我们只使用音视频的RTP时间戳,看能否实现媒体间的同步。音视频的RTP时间戳的增长速率一般是不同的,但没关系,知道了具体的单位后,两者是可以通过单位换算联系起来的。如下图(第一幅图中第2行应该是音频帧时间戳):

    现在来看,这种方法好像可以实现同步,因为音视频被映射到同一个时间轴上了,音频和视频帧间的相对关系很清楚。慢着,RTP规范要求时间戳的初始值应该是一个随机值,那么假设音频帧时间戳的初始值是随机值1234,视频帧时间戳的初始值是随机值5678,看起来应该是下面这样:
    这么做合适吗?我们把音频帧时间戳1234和视频帧时间戳5678对应到绝对时间轴的0上,我们这么做的理由是什么?你可能会说,因为那是第一个音频帧和第一个视频帧,所以可以对应到同一个点上,在第一幅图中我们就是这么做的,把音频帧时间戳0和视频帧时间戳0对应到绝对时间轴的0上。但是RTP规范并没有规定第一个视频帧的时间戳和第一个音频帧的时间戳必须或者应该对应到绝对时间轴的同一个点上,从整个RTP规范中不能直接得出这样的结论,也推导不出这样的结论。 

    我们上面两幅图所做的转换是不正确的,为什么呢?因为在做转换时,隐含了一个假设,我们想当然地认为这个假设是成立的,实际上它并不总是成立。这个假设就是第一个视频帧和第一个音频帧的时间戳应该对应到同一个点上,即无论它们时间戳是多少,都应该在同一时间播放。

    仅仅使用RTP时间戳是无法实现媒体间同步的,根本的原因是音频时间轴和视频时间轴是完全独立的,通过音频帧和视频帧的时间戳,无法确定一个视频帧和一个音频帧的相对时间关系,也就是无法把它们都准确定位在绝对时间轴上,只能准确定位一个。

    要实现RTP媒体间同步,需要借助于RTCP,在RTCP的SR包中,包含有<NTP时间,RTP时间戳>对,音频帧RTP时间戳和视频帧RTP时间戳通过<NTP时间,RTP时间戳>对,都可以准确定位到绝对时间轴NTP上,音频帧和视频帧的相对时间关系就可以确定下来了。

    上面提到,我们的那个隐含的假设并不总是成立,那就是说它有成立的时候。那是不是说当它成立时,我们就可以不用RTCP来做媒体间同步了?答案是,基本上可以这么认为。

    例如,对于RTP实时流,在发送端媒体间就同步的很好,在接收端只需做少许处理,不需要RTCP,就可以实现媒体间同步。当然,这只是少数例外。因为RTP规范并不包括这个假设,所以我们还是按照RTP规范来做吧。

    下面说一下DirectShow和MPEG2-TS的时间戳。DirectShow中的时间戳和RTP中的时间戳,除了单位不一样,计算方法不一样外,本质的区别就是DirectShow中的音频帧和视频帧时间戳使用的是同一个时间轴,所以不需要借助其他的东西,仅仅使用音频帧时间戳和视频帧时间戳就可以实现媒体间同步。MPEG2-TS流中也有时间戳,它的时间戳和RTP及DirectShow的时间戳都不同,TS流中的音频帧和视频帧时间戳使用的也是同一个时间轴,TS流中的音频和视频是复用的,这在一定程度上就起到了同步的作用,所以它并不是在每个帧上都打时间戳,比如它的PTS时间戳就是每隔0.1秒一个,缺失的时间戳是通过其他时间戳插值计算出来的。

    展开全文
  • AIS系统中UTC同步

    2017-12-01 10:20:23
    同步是通信系统中一个十分重要实际问题。通信系统能够有效、可靠工作,很大程度上取决于有无良好的同步系统。...AIS数据链路上每一与UTC每一分钟同步主要采用了以下4种方法: (1)UTC直接同步 能够

    同步是通信系统中一个十分重要的实际问题。通信系统能够有效、可靠的工作,很大程度上取决于有无良好的同步系统。AIS系统中重要的同步有以下几种。

    一、UTC同步

      世界协调时(UTC)同步是航海领域中非常关键的技术。在AIS系统中,站台之间通信的数据收发都依据UTC时间,主要时间源是GPS时间。AIS数据链路上每一帧与UTC的每一分钟同步,主要采用了以下4种方法:

    (1)UTC直接同步

    能够直接访问UTC时间的站台,应通过设置使站台的同步状态与UTC保持同步。

    (2)UTC间接同步

    一个站台若不能直接访问UTC时间,但能获得其他直接与UTC同步的站台的时间,应与那些站台进行同步,此时要将同步状态设置为UTC间接同步。AIS规定UTC间接同步只允许一次间接。

    (3)与基站同步(间接或直接)

    那些既不能与UTC直接同步,又不能获得间接UTC同步,但可以接收基站的发射的数据的移动站台,应该与接收站数最多并且在最近的40秒内有过两次报告被其他站接收的基站进行同步。与此基站一旦建立了同步,如果40秒内从此站接收的报告少于2次,则应当立即中断同步。

    (4)与移动站台同步

    如果一个站台既不能与UTC直接同步,也不能与UTC间接同步,同时又不能接收到其他基站的信息,则此站应与其他移动站台进行同步,所选择同步的移动台应该在接下来9帧的时间中有最多的站台接收到其信息,并且此移动站台在40秒内至少曾有2次报告被其他站台接收。

    二、时隙同步与帧同步

    时隙相位同步是指一个站台利用其他移动站台或基站的电文惊醒重新同步的一种方法,目的是维持高度的同步稳定性,并确保无报文辩解的重叠和报文不遭破坏。

          帧同步是指一个站台利用其他站台或基站当前的时隙序号作为本站台的当前时隙序号而进行同步的方法。

    展开全文
  • 主要内容:串行口结构、串行口4 种工作方式、多机通信、波特率制定方法、串行口应用。MCS-51单片机内部一个全双工异步串行口。全双工:双机通信之间可以同时实现发送数据和接收数据。异步:收发双方没有...
  • 主创新特点、并能提高系统性能的主要关键技术:能实现快速同步和高效信道估计与均衡PN序列 头设计和符号保护间隔填充方法、低密度校验纠错码(LDPC)、系统信息扩频传输方法等。本标 准支持4.813Mbps~32.486...
  • 体现本标准具有自主创新特点、并能提高系统性能的主要关键技术:能实现快速同步和高效信道估计与均衡PN序列头设计和符号保护间隔填充方法、低密度校验纠错码(LDPC)、系统信息扩频传输方法等。本标准支持4....
  • 图像是否,若某一时刻某台摄像机所拍摄图像丢失,则将同一时 刻下另一台摄像机采集图像删除掉。标定摄像机软件主要用来标定摄像机 内、外参数。六自由度解算软件主要用来计算运动物体六个自由度参 ...
  • 本文将主要介绍宽带无线城域网系统(BRadio)中下行链路TDS-OFDM(时域同步正交频分复用)发送方法。TDS-OFDM是针对宽带无线传输信道设计一种多载波调制方式,既适用于具有多径干扰和多普勒频移地面数字电视...
  • 一、在时间轴中使用声音这是Flash中声音最常使用方式,任何一...声音的同步属性(Sync)主要有以下几种: 1.事件(Event)。用这种方式设置声音会独立于时间轴播放,只要你没有用其它方式中止,它会一直播...
  • 3.2 组帧

    千次阅读 2016-08-26 23:39:40
    组帧主要解决帧边界、帧同步、透明传输等问题。通常以下四种方法实现组帧. 注意:组帧时既要加首部,又要加尾部。原因:在网络中是以帧为最小单位进行传输,所以 接收端要正确地接受帧,必
  • 先后遇到过问题和优化方法主要有下面几个: 池化技术 由于实时对战游戏数据包数量巨大,早期版本的帧同步策略会导致比较明显卡顿,通过进行数据包合并与优化逐渐解决了卡顿问题; ...
  • 数据链路层 功能 将物理层可能出错物理连接改造为逻辑上无差错数据链路 为网络层提供服务 无确认无连接 确认无连接 确认面向连接 链路管理 ...主要解决帧定界、帧同步、透明传输问题 方法 字符.
  • 乱七八糟笔记

    2020-04-16 14:56:48
    主要的分类方法有 单工(xiang)/双工(xiang)、异步/同步(指是一发送完之后是否要等待对方响应)。 大部分空闲时为高电平,由低电平或下降沿触发。 UART 通用异步串行协议,一般两根:Rx、Tx负责收发,是全双工...
  • RTP时间戳及多媒体通过处理

    千次阅读 2014-03-12 22:48:15
    多媒体通信同步方法主要有时间戳同步法、同步标记法、多路复用同步法三种。下面主要讨论时间戳同步法,特别是RTP时间戳同步。内容包括RTP媒体间同步的实现,为什么需要RTCP的NTP时间来实现媒体间同步?没有RTCP,...
  • 问题2-8:比特同步和帧同步的区别是什么? 问题2-9:教材的表2-4的OC和STS什么区别?例如OC-3和STS-3的数据率是一样的,为什么要使用两种表示方法的文献还使用如OC-3C的表示方法,这区别吗? 问题2-10:ATM...
  • multimedia sync

    2012-03-29 18:19:10
    多媒体通信同步方法主要有时间戳同步法、同步标记法、多路复用同步法三种。下面主要讨论时间戳同步法,特别是RTP时间戳同步。内容包括RTP媒体间同步的实现,为什么需要RTCP的NTP时间来实现媒体间同步?没有RTCP,...
  • 这两种方法都取得了很好的去噪效梁,但是这两种方法都需要采用迭代的方法估计模型参数,运算鼍很大。本文把图像的小波系数建模为广义高斯分布模型,图像信号的小波系数方差在邻域窗内高度相关。当小波系数为广义高斯...
  • 以太网最短:保证错误反馈时间。     冲突解决方法:退避算法     以太网格式     以太网信道利用率     网卡作用 &...
  • 结合实际工程,就P R M A协议实现若干问题进行说明,如处理器选型、网络同步结构等。其中重点介绍控制系统内3组状态寄存器,即时隙状态寄存器、缓存状态寄存器和节点状态寄存器。 关键词 PRMA 协议 多址接入...
  • ffmpeg开发中问题(八)

    千次阅读 2013-10-25 21:40:25
    今天发现了几个很重要问题,现在搞明白了,真是...2. 之前的同步问题,其实也算不上同步主要原因是视频速度被人为改变了,音频是正常速度,这样看起来不同步了 解决方法是,改变视频PTS,这样就可以正常播放了
  • 5、系统工作电源 主要完成系统所需要各种电源,本实验系统中+5V,-5V,+12V,-12V,-48V等5组电源,由下列电路组成: A、内置工作电源:+5V,+12V,-12V,-48V B、稳压电源: -8V,-5V 控制部分就是由CPU中央...
  • 20数据链路层组帧

    2021-01-15 08:19:33
    组帧:主要解决帧定界、帧同步、透明传输等问题。通常以下四种方法组帧 1、 字符计数法:在帧头部使用一个计数字段来标明帧内字符数。当目的结点数据链路层收到字节计数值时,就知道后面跟随字节数,从而确定...
  • Flutter学习笔记

    2019-03-14 15:57:12
    Flutter笔记 UI框架 Widget StatelessWidget StatefulWidget 主要通过重写build方法实现对子widget加载 ...而状态 Widget 当数据更新时,其实是绘制了新 Widget,只是 State 实现了跨帧的数据同步保存。 C...

空空如也

空空如也

1 2 3 4 5 6
收藏数 118
精华内容 47
关键字:

帧同步的方法主要有