CN1960315B - 流媒体去抖动方法 - Google Patents
流媒体去抖动方法 Download PDFInfo
- Publication number
- CN1960315B CN1960315B CN2005101006701A CN200510100670A CN1960315B CN 1960315 B CN1960315 B CN 1960315B CN 2005101006701 A CN2005101006701 A CN 2005101006701A CN 200510100670 A CN200510100670 A CN 200510100670A CN 1960315 B CN1960315 B CN 1960315B
- Authority
- CN
- China
- Prior art keywords
- packet
- buffering area
- delay value
- described buffering
- maximum delay
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000003139 buffering effect Effects 0.000 claims description 41
- 230000005540 biological transmission Effects 0.000 description 5
- 239000002699 waste material Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种流媒体去抖动方法,该方法包括:申请一段固定长度的内存作为缓冲区;接收数据包并提取数据包的相关信息,根据相关信息在缓冲区内对数据包进行排序;若经过最小延迟值,则检查缓冲区内的数据包是否符合提交条件,如果符合提交条件则向应用程序提交缓冲区内的数据包;否则继续收包,直到缓冲区内的数据包符合提交条件才提交缓冲区内的数据包;若经过最大延迟值,则强制提交缓冲区内的数据包。当采用上述方法时,通过为流媒体统一分配缓冲区,实现数据无缝存储,提高了内存空间利用率。此外,通过采用双延迟深度,能在不同网络状况下保证较好的媒体回放质量;采用环状缓冲区和双向链表机制减少了去抖动排序的开销。
Description
【技术领域】
本发明涉及一种流媒体去抖动方法,特别涉及一种在互联网上实时传输的音频或视频数据等流媒体去抖动方法。
【背景技术】
随着科学技术的不断发展,IP网络得到日益广泛的应用。许多流媒体数据(例如,音频和/或视频数据)都可以通过IP网络实时传输。但是由于携带上述流媒体数据的数据包在IP网络中的传输路径不同,导致了各数据包从发送端到接收端所经历的时间不同,使得各数据包到达接收端的顺序和间隔不同于发送端发出的顺序和间隔,这种现象称为延迟抖动。如果直接将具有延迟抖动的数据进行音频或视频解码,将会出现声音或图片帧的前后交错,体现在听觉上就会出现声音抖动,而体现在视觉上会出现花屏或色块。
目前解决流媒体抖动的方法基本上都是通过在接收端对数据包进行缓冲。例如,在流媒体数据到达接收端之前将各数据包存储在抖动缓冲器中,而抖动缓冲器以恒定的时间间隔读出各数据包,以便将不同时间到达数据包重建成连续的数据流。现有去抖动方法大多是采用队列或数组机制,为每个数据包分配固定大小的空间,提交的数据在物理内存上不连续,从而浪费内存空间。同时现有去抖动技术多采用单一的固定缓冲延迟深度,然而不同的网络传输情况所产生的延迟抖动不同,因而所需缓冲延迟深度也会有所不同,固定的延迟深度往往会增加去抖动排序的开销。
【发明内容】
为了解决现有技术的流媒体去抖动方法中物理内存不连续并采用单一的固定缓冲延迟深度从而浪费内存空间并增加去抖动排序开销的技术问题,本发明提供了一种采用无缝数据存储并利用双延迟深度进行抖动排序的流媒体去抖动方法。
本发明解决现有技术的流媒体去抖动方法中物理内存不连续并采用单一的固定缓冲延迟深度从而浪费内存空间并增加去抖动排序开销的技术问题所采用的技术方案是:申请一段固定长度的内存作为缓冲区,预先设定最小延迟值和最大延迟值;接收数据包并提取数据包的相关信息,根据相关信息在缓冲区内对数据包进行排序;根据所述预先设定的最小延迟值和最大延迟值,判断所述缓冲区内的所述数据包是否符合提交条件,其中所述提交条件包括确定所述缓冲区内的数据包是否连续无丢包或者所述缓冲区内的数据包的丢包量是否小于预定值;若经过最小延迟值,则检查缓冲区内的数据包是否符合提交条件,符合提交条件则向应用程序提交缓冲区内的数据包;否则继续收包,直到缓冲区内的数据包符合提交条件才提交缓冲区内的数据包;若经过最大延迟值,则强制提交缓冲区内的数据包。
根据本发明的一优选结构,本发明的流媒体为视频流或音频流。
根据本发明的一优选结构,最小延迟值为时间值或字节数。
根据本发明的一优选结构,最大延迟值为时间值或字节数。
根据本发明的一优选结构,相关信息包括时间戳、序列号、媒体类型、标志位以及数据包长度。
根据本发明的一优选结构,步骤b包括在缓冲区内建立双向链表,并根据时间戳和/或序列号将数据包的媒体数据插入双向链表的相应节点。
根据本发明的一优选结构,步骤c中提交缓冲区内的数据包包括:将双向链表的首指针、链表长度及链表所占用物理内存区域末尾的地址提交给应用程序。
根据本发明的一优选结构,在步骤a中,缓冲区的大小由媒体流的码率决定。
根据本发明的一优选结构,最小延迟值和/或最大延迟值的大小由网络抖动情况动态调节。
根据本发明的一优选结构,步骤c中的检查缓冲区内的数据包是否符合提交条件包括:确定缓冲区内的数据包是否连续无丢包或者缓冲区内的数据包的丢包量是否小于预定值。
本发明的流媒体去抖动方法采用无缝数据存储,充分利用了有限的内存空间,避免了内存空间的浪费。采用环状缓冲区和双向链表机制减少去抖动排序的开销。同时还能根据网络丢包的情况在一定范围内对延迟深度进行动态调整,最终可提高实时在线媒体回放的质量。
【附图说明】
图1是本发明的流媒体去抖动方法的流程示意图。
【具体实施方式】
下面结合附图和实施例对本发明进一步说明。
如图1所示,图1本发明流媒体去抖动方法的流程示意图。在本发明中通过以下步骤对流媒体的去抖动方法:
第一步:根据媒体流的码率申请固定长度的内存作为缓冲区;
第二步:接收媒体流的数据包,并提取各数据包的序列号、时间戳、媒体类型、标志位以及数据包长度等相关信息,添加相应的数据包信息头放入物理内存空间,同时建立双向链表,并按照时间戳和/或序列号的顺序将数据包内的媒体数据插入双向链表的相应节点;
第三步:根据预先设定的最小延迟值和最大延迟值,判断缓冲区内的数据包是否达到提交条件。该步骤的具体执行过程包括:经过最小延迟值后,检查缓冲区中数据包是否连续无丢包,如果连续无丢包则将缓冲区内双向链表的首指针、链表长度及链表所占用物理内存区域末尾的地址提交给应用程序,应用程序(例如,音频或视频解码程序)通过链表首指针遍历双向链表获取媒体数据并对缓冲区内存储的媒体数据进行解码,以便后续应用。如果缓冲区中数据不连续,则继续收包,直到缓冲区中数据连续无丢包后,向应用程序提交媒体数据;若经过最大延迟值后,即使缓冲区内存储的媒体数据不连续也不再继续等待,强制提交缓冲区部分数据。
在本实施例中,最大延迟值和最小延迟值可以采用时间值或者字节数。在网络状况较差的情况下,使用时间(例如,ms、10ms)作为延迟单位,这种延迟值的提交实时性较好,而对于实时性要求相对不高的流媒体应用,可以使用字节数作为延迟单位。而缓冲区还可以采用目前公知的环形缓冲区,以便减小抖动排序的开销。同时,可以根据不同网的络传输情况动态地调节最大延迟值和最小延迟值,以便在适用不同的网络抖动的同时不会增加去抖动排序的开销。此外,如果缓冲区内的数据包的丢包量小于预定值,也可以认为是满足提交条件,并进行提交。
上述的详细描述仅是示范性描述,本领域技术人员在不脱离本发明所保护的范围和精神的情况下,可根据不同的实际需要设计出各种实施方式。
Claims (9)
1.一种流媒体去抖动方法,所述方法包括以下步骤:
a.申请一段固定长度的内存作为缓冲区,预先设定最小延迟值和最大延迟值;
b1.接收数据包并提取所述数据包的相关信息,根据所述相关信息在所述缓冲区内对所述数据包进行排序;
b2.根据所述预先设定的最小延迟值和最大延迟值,判断所述缓冲区内的所述数据包是否符合提交条件,其中所述提交条件包括确定所述缓冲区内的数据包是否连续无丢包或者所述缓冲区内的数据包的丢包量是否小于预定值;
c.若经过所述最小延迟值,则检查所述缓冲区内的数据包是否符合提交条件,如果符合提交条件则向应用程序提交所述缓冲区内的数据包;否则继续收包,直到所述缓冲区内的数据包符合提交条件才提交所述缓冲区内的数据包;
d.若经过所述最大延迟值,则强制提交所述缓冲区内的数据包。
2.根据权利要求1所述的方法,其特征在于:所述流媒体为视频流或音频流。
3.根据权利要求1所述的方法,其特征在于:所述最小延迟值和/或所述最大延迟值为时间值或字节数。
4.根据权利要求1所述的方法,其特征在于:所述缓冲区为环形缓冲区。
5.根据权利要求1所述的方法,其特征在于:所述相关信息包括时间戳、序列号、媒体类型、标志位以及数据包长度。
6.根据权利要求5所述的方法,其特征在于:所述步骤b1包括在所述缓冲区内建立双向链表,并根据所述时间戳及所述序列号将所述数据包的媒体数据插入所述双向链表的相应节点。
7.根据权利要求6所述的方法,其特征在于:所述步骤c中提交所述缓冲区内的数据包包括:将所述双向链表的首指针、链表长度及链表所占用物理内存区域末尾的地址提交给应用程序。
8.根据权利要求1所述的方法,其特征在于:在所述步骤a中,所述缓冲区的大小由所述流媒体的码率决定。
9.根据上述权利要求任意一项所述的方法,其特征在于:所述最小延迟值和/或所述最大延迟值的大小由网络抖动情况动态调节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005101006701A CN1960315B (zh) | 2005-10-31 | 2005-10-31 | 流媒体去抖动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005101006701A CN1960315B (zh) | 2005-10-31 | 2005-10-31 | 流媒体去抖动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1960315A CN1960315A (zh) | 2007-05-09 |
CN1960315B true CN1960315B (zh) | 2010-08-25 |
Family
ID=38071815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005101006701A Active CN1960315B (zh) | 2005-10-31 | 2005-10-31 | 流媒体去抖动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1960315B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281528A (zh) * | 2013-04-10 | 2013-09-04 | 深圳康佳通信科技有限公司 | 一种流媒体解码方法、系统及移动终端 |
CN103594103B (zh) * | 2013-11-15 | 2017-04-05 | 腾讯科技(成都)有限公司 | 音频处理方法及相关装置 |
US10506245B2 (en) | 2015-11-18 | 2019-12-10 | Cybrook Inc. | Video data processing using a ring buffer |
US10506283B2 (en) | 2015-11-18 | 2019-12-10 | Cybrook Inc. | Video decoding and rendering using combined jitter and frame buffer |
CN106131565B (zh) * | 2015-12-29 | 2020-05-01 | 苏州踪视通信息技术有限公司 | 使用联合抖动-帧缓冲区的视频解码及渲染 |
CN105743815B (zh) * | 2016-04-06 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 抖动缓冲数据处理的方法和装置 |
CN106371765B (zh) * | 2016-08-29 | 2020-09-18 | 成都科鸿达科技有限公司 | 一种高效大规模系统的ltl模型检测去内存抖动的方法 |
KR102527925B1 (ko) * | 2017-11-29 | 2023-05-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
CN109495660B (zh) * | 2018-11-29 | 2021-05-18 | 广州市百果园信息技术有限公司 | 一种音频数据的编码方法、装置、设备和存储介质 |
CN113037853B (zh) * | 2021-03-22 | 2023-01-06 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1352846A (zh) * | 1999-01-14 | 2002-06-05 | 艾利森电话股份有限公司 | 自适应抖动缓存 |
CN1463125A (zh) * | 2002-05-28 | 2003-12-24 | 华为技术有限公司 | 一种实现缓存去抖的大容量实时流处理方法 |
CN1581844A (zh) * | 2003-08-15 | 2005-02-16 | 上海贝尔阿尔卡特股份有限公司 | 一种分组交换网络分布式自适应抖动缓冲区调整方法 |
CN1627747A (zh) * | 2003-12-09 | 2005-06-15 | 华为技术有限公司 | 语音传输过程中实现动态调整抖动缓存的方法 |
EP1564935A2 (en) * | 2004-02-16 | 2005-08-17 | Mitel Networks Corporation | Method of dynamic adaptation for jitter buffering in packet networks |
-
2005
- 2005-10-31 CN CN2005101006701A patent/CN1960315B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1352846A (zh) * | 1999-01-14 | 2002-06-05 | 艾利森电话股份有限公司 | 自适应抖动缓存 |
CN1463125A (zh) * | 2002-05-28 | 2003-12-24 | 华为技术有限公司 | 一种实现缓存去抖的大容量实时流处理方法 |
CN1581844A (zh) * | 2003-08-15 | 2005-02-16 | 上海贝尔阿尔卡特股份有限公司 | 一种分组交换网络分布式自适应抖动缓冲区调整方法 |
CN1627747A (zh) * | 2003-12-09 | 2005-06-15 | 华为技术有限公司 | 语音传输过程中实现动态调整抖动缓存的方法 |
EP1564935A2 (en) * | 2004-02-16 | 2005-08-17 | Mitel Networks Corporation | Method of dynamic adaptation for jitter buffering in packet networks |
Also Published As
Publication number | Publication date |
---|---|
CN1960315A (zh) | 2007-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1960315B (zh) | 流媒体去抖动方法 | |
CN103051955B (zh) | 流媒体播放方法及装置 | |
CN101674486B (zh) | 一种流媒体音视频同步方法及系统 | |
CN103916716B (zh) | 一种无线网络下视频实时传输的码率平滑方法 | |
CN101917389B (zh) | 一种网络电视直播系统 | |
CN1764974B (zh) | 存储多媒体数据的存储介质和再现多媒体数据的方法和设备 | |
US6278478B1 (en) | End-to-end network encoding architecture | |
US8462811B2 (en) | Isochronous device communication management | |
US6188670B1 (en) | Method and system in a data processing system for dynamically controlling transmission of data over a network for end-to-end device flow control | |
CN103200461A (zh) | 一种多台播放终端同步播放系统及播放方法 | |
CN102130886B (zh) | 网络视频流媒体系统及传输处理方法、发送端 | |
CN102006501B (zh) | 流媒体播放控制方法、装置和流媒体播放器 | |
JP4475650B2 (ja) | ドリフトしたデータ・ストリームを最低限の感知できるアーティファクトで再同期させる方法およびシステム | |
CN1996935B (zh) | 一种流媒体接收端缓冲区内数据包的动态调整方法 | |
JP2011518526A (ja) | リッチメディアサービスのための端末のユーザインターフェース装置及び方法 | |
CN102694831A (zh) | 移动终端流媒体数据补偿方法与系统、内容分发网络 | |
CN103124412A (zh) | 一种基于rtp协议的网络抖动处理技术 | |
CN103078810A (zh) | 一种高效率富媒体展现系统和方法 | |
CN101753977B (zh) | 一种调节网络数字视频播放速度的方法及装置 | |
CN101483542B (zh) | 一种对网络流媒体音视频的多维度的访问量统计方法 | |
CN103248774B (zh) | 一种VoIP服务器同步混音方法及系统 | |
US9667975B2 (en) | Method and apparatus for transmitting video contents compressed by codec | |
CN101378356B (zh) | 一种ip实时流媒体的播放方法 | |
CN104469538A (zh) | 面向画面画质较小损失的rtp视频流数据包重组方法 | |
JP2003209594A (ja) | プログラム、記録媒体、並びに情報送信装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |