CN104202656A - 网络音频mp3流乱序分段解码方法 - Google Patents
网络音频mp3流乱序分段解码方法 Download PDFInfo
- Publication number
- CN104202656A CN104202656A CN201410472027.0A CN201410472027A CN104202656A CN 104202656 A CN104202656 A CN 104202656A CN 201410472027 A CN201410472027 A CN 201410472027A CN 104202656 A CN104202656 A CN 104202656A
- Authority
- CN
- China
- Prior art keywords
- audio
- decoding
- data
- board
- hardware driving
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 28
- 230000006870 function Effects 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 claims description 15
- 230000011218 segmentation Effects 0.000 claims description 13
- 238000012546 transfer Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000004321 preservation Methods 0.000 claims description 3
- 230000001133 acceleration Effects 0.000 abstract description 4
- 230000003319 supportive effect Effects 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供了一种网络音频MP3流乱序分段解码方法,涉及音频流处理技术领域。本方法从网络中捕获音频MP3数据包,获取MP3数据帧并根据位置信息存储在缓存中,一个session建立一个缓存,当有连续MP3数据帧达到指定大小时,进行音频解码。采用FFmpeg技术进行数据块解码,解码时修改相应的上下文,通过伪装的方式让FFmpeg进行解码。采用具有多个加速单元的独立板卡进行解码,加速单元采用FFmpeg技术实现,从而可实现并行解码。无论网络音频MP3以何种顺序接收,本发明方法均能以固定数量的音频帧为单位拼接并进行最大程度解码,并可支持多数据流并发解码,提高了音频流有效帧数的接收率和解码率。
Description
技术领域
本发明涉及音频流处理技术领域,具体是一种网络音频MP3流乱序分段解码方法。
背景技术
在网络音频MP3流处理领域,传统的处理方案一般为根据音频流按序处理。实际运用中,由于P2P、分段下载以及UDP协议的特性,使得乱序的音频流存在。目前已有的处理方法只能跳过乱序的数据流,导致解码不完整,不能还原整个数据流。
发明内容
本发明的目的是为了最大程度的正确处理乱序的音频MP3流,提出了一种网络音频MP3流乱序分段解码方法,通过本地缓存、分段处理以进行最大程度解码。
本发明提供的网络音频MP3流乱序分段解码方法,包括两大步骤:
第一步,从网络中捕获音频MP3数据包并保存;包括如下步骤1.1~步骤1.3;
步骤1.1、捕获网络传输来的数据包,当数据包为MP3数据包时,执行步骤1.2,否则继续捕获数据包;
步骤1.2、判断所捕获的MP3数据包是否属于一个新session(会话)的音频流数据,若是,为该新session建立缓存,并进入步骤1.3执行;否则,继续执行步骤1.3;
步骤1.3、使用FFmpeg剥离MP3数据包获取其中未解码的MP3数据帧,根据MP3数据帧中包含的位置信息,将MP3数据帧保存至缓存中对应的位置。
第二步,遍历缓存中已保存的所有MP3数据帧,当存在包含达到指定大小的连续MP3数据帧的数据块时,采用FFmpeg技术对该数据块进行解码;采用FFmpeg技术对数据块进行解码时,根据数据块在音频流中所处的位置,找到相应的上下文并更新后,继续解码。
本发明第二步采用FFmpeg技术对数据块进行解码,可通过设置在独立板卡上加速单元实现。所述的板卡上设置有两个以上的加速单元,每个加速单元采用FFmpeg技术实现,用于音视频处理;板卡的外部接口为PCI-E,插在支持PCI-E插槽的计算机上;计算机与板卡之间实现DMA方式的数据传输,从计算机的缓存中读取待解码的数据块通过DMA方式传输给板卡上的加速单元,加速单元将解码后的结果数据通过DMA方式传回计算机。
所述的板卡,其实现数据解码的方法是:
(1)在主机操作系统的用户态下设置有API库和管理工具,在主机操作系统的核心态下设置主机侧硬件驱动;在板卡系统的核心态下设置板卡侧硬件驱动,在板卡系统的用户态下设置板卡控制单元和加速单元;API库提供API函数,以控制板卡启停音视频加速处理;主机侧硬件驱动与板卡侧硬件驱动用于实现DMA数据传输方式;
(2)上层应用程序调用API库提供的API函数,管理工具根据所调用的API函数向板卡控制单元发送音视频处理的命令,板卡控制单元接收到音视频处理的命令后,控制加速单元对音视频数据进行解码处理;要处理的音视频数据通过主机侧硬件驱动从主机缓存中读取,然后传送给板卡侧硬件驱动,板卡侧硬件驱动将要处理的音视频数据传送给加速单元,加速单元在将解码后的结果数据传送给板卡侧硬件驱动,板卡侧硬件驱动再传送给主机侧硬件驱动,最后由主机侧硬件驱动将处理后的结果数据写回内存。
本发明的优点与积极效果在于:无论网络音频MP3以何种顺序接收,均能以固定数量的音频帧为单位拼接并进行最大程度解码;连续MP3数据帧形成的数据块大小可根据实际应用调整,并可支持多数据流并发解码,提高了音频流有效帧数的接收率和解码率。
附图说明
图1是本发明的网络音频MP3流乱序分段解码方法的步骤流程图;
图2是本发明通过FFmpeg技术实现并发解码的结构示意图。
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
本发明提出一种基于网络音频MP3流的无序分段解码方法,目的是最大程度的正确处理乱序的音频MP3流。
如图1所示,本发明的无序分段解码方法具体包括以下步骤:
第一步,从网络中捕获音频MP3数据包并保存;包括如下步骤1.1~步骤1.3。
步骤1.1、捕获网络传输来的数据包,当数据包为音频MP3数据包时,执行步骤1.2,否则继续捕获数据包。
步骤1.2、分析所捕获的MP3数据包是否属于一个新session(会话)的音频流数据,若是,为该新session建立缓存,并进入步骤1.3执行;否则,取得该session的上下文数据,继续执行步骤1.3。
步骤1.3、使用FFmpeg剥离该音频MP3数据包,获取该数据包中所包含的未解码的MP3数据帧并保存。根据MP3数据帧中包含的位置信息,将MP3数据帧保存至缓存中对应的位置。
第二步,遍历缓存中已保存的所有MP3数据帧,对达到指定大小的数据块采用FFmpeg技术进行解码。数据块为连续的MP3数据帧,例如,当发现大于3秒的连续的MP3数据帧的数据块时,对该数据块进行解码处理。数据块的大小可以根据实际应用调整。
解码采用FFmpeg技术实现。所述的FFmpeg是一个开源免费跨平台的视频和音频流方案,它包含了非常先进的音频/视频编解码库libavcodec,FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案,支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码格式,AVI、MPEG、OGG、Matroska、ASF等90多种解码格式。具体可参见http://www.ffmpeg.org。本发明的解码处理由开源的FFmpeg移植而成,可实现目前所有FFmpeg所自带的音视频处理,并可随时升级。
FFmpeg中解码支持流方式,数据是以块(大小不定)为单位依次送入解码引擎解码。解码引擎记录当前流的信息,包括码流的当前位置等等上下文环境。有数据块送入时,解码引擎根据上下文计算出数据块在码流中所处的位置,更新上下文后再进行解码。因此FFmpeg中必须按照顺序送入数据才能进行正确的解码,否则系统将引起异常。
本发明实现了对缓冲的乱序音频数据进行解码,并最大可能的还原该音频流。对于每一块数据块,都需要修改FFmpeg中相应的上下文内容,通过伪装的方式上ffmpeg继续解码工作。在原有FFmpeg基础上,在投入数据块至解码引擎前,根据该数据块在音频流中所处的位置,找到相应的上下文并更新,之后解码引擎再继续解码。对于每一块数据块,都需要修改FFmpeg中相应的上下文内容,通过伪装的方式让FFmpeg继续解码工作。让解码引擎认为该码流已经到了该位置,从而能顺利进行解码。对于一些特定的封装,例如flv还需要通过特殊处理flv头尾数据来解封装真正的数据内容。由于数据的不完整性,FFmpeg非常容易崩溃,本发明中针对常见格的流数据经过大量测试,最大程度上了保持了系统的鲁棒性。
本发明采用加速单元对数据块进行解码。每个加速单元采用FFmpeg技术实现,用于音视频处理。因此,利用本发明方法可同时对多个数据块进行解码处理。
所述的加速单元设置在独立的板卡上,加速单元有多个,以实现并行音频解码处理。板卡的外部接口为PCI-E,可插在支持PCI-E插槽的计算机上,板卡通过PCI-E总线与计算机通讯。
如图2所示,在计算机主机操作系统的用户态下设置有API(Application ProgrammingInterface,应用程序编程接口)库1和管理工具2;在主机操作系统的核心态下设置DMA(DirectMemory Access,直接内存访问)方式的主机侧硬件驱动3。在板卡系统的核心态下设置DMA方式的板卡侧硬件驱动4;在板卡系统的用户态下设置板卡控制单元5和加速单元6。加速单元6可以有多个,如图2所示的实施例中为3个。
API库1用于提供API函数,实现板卡控制功能、状态检测功能、数据统计以及日志功能。板卡控制是指控制板卡进行音视频加速处理的启动或暂停或关闭。状态检测功能是指板卡的工作状态查询。数据统计是指通过板卡所完成的音视频处理的数据量,数据量是指音视频编解码流数及字节数。
管理工具2根据所调用的API函数控制板卡完成音视频数据的处理。管理工具2向板卡控制单元5发送音视频处理的命令以及待处理音视频数据的地址信息,并从板卡控制单元5接受数据处理状态以及数据统计的信息。管理工具2与板卡控制单元5之间通过PCI-E总线进行通讯。
主机侧硬件驱动3与板卡侧硬件驱动4用于实现DMA数据传输方式。
板卡控制单元5用于实现如下功能:控制板卡、数据传输、加速单元控制以及数据统计等。控制板卡用于响应主机操作系统中管理工具2对板卡的控制,如启动板卡进行音视频加速处理或暂停板块音视频加速处理或关闭板块对音视频的加速处理。加速单元控制是指加载用于音视频编解码处理的加速单元6。数据统计是指各加速单元在进行音视频处理后统计自身处理的数据量(音视频编解码流数及字节数),然后合并统计后返回给主机操作系统。
主机的上层应用程序7调用API库1提供的API函数,管理工具2根据所调用的API函数控制板卡完成音视频数据的处理。管理工具2向板卡控制单元5发送音视频处理的命令,板卡控制单元5接收到该命令后,控制加速单元6对所要处理的音视频数据进行音视频解码处理。要处理的音视频数据是通过主机侧硬件驱动3从主机缓存中读取,然后通过DMA方式传送给板卡侧硬件驱动4,板卡侧硬件驱动4将要处理的音视频数据传送给加速单元6,加速单元6在将要处理的数据处理完毕后将处理后的结果数据传送给板卡侧硬件驱动4,板卡侧硬件驱动4再传送给主机侧硬件驱动3,最后由主机侧硬件驱动3将处理后的结果数据写回内存。
本发明方法中由计算机主机负责数据采集及传输,板卡负责音频解码处理,从而大大提高了普通计算机的音频解码能力。并且板卡和主机之间采用DMA方式传输数据,整个音频处理过程不占用CPU资源。板卡可采用多核处理器,例如64核的多核处理器,以提高多数据流并发解码的效率。
采用本发明方法进行网络音频MP3数据乱序分段解码,与背景技术中的现有的传统处理方案的对比效果如表1所示。对比采用了INTEL XEON 2.7G+千兆网卡,在局域网内使用快车从同一个流媒体服务器中,分5段下载6个相同的音频流,每个音频流下载5次,解码后的帧数取平均值表示。
表1本发明的网络音频数据乱序分段解码与传统处理方案的对比表
音频1 | 音频2 | 音频3 | 音频4 | 音频5 | 音频6 | |
实际帧数 | 1830 | 7643 | 3432 | 1406 | 1238 | 8473 |
传统方案 | 367 | 1405 | 546 | 315 | 216 | 1498 |
传统方案解码率 | 20% | 18% | 16% | 22% | 17% | 18% |
本发明方案 | 1829 | 7641 | 3431 | 1405 | 1237 | 8472 |
本发明方案解码率 | 99% | 99% | 99% | 99% | 99% | 99% |
从表1中可以看出,利用本发明方法,相比传统方案,对同一个音频,所采集的帧数远远大于传统方法,解码率也大大提高。
Claims (3)
1.一种网络音频MP3流乱序分段解码方法,其特征在于,包括两大步骤:
第一步,从网络中捕获音频MP3数据包并保存,包括如下过程:
步骤1.1、捕获网络传输来的数据包,当数据包为MP3数据包时,执行步骤1.2,否则继续捕获数据包;
步骤1.2、判断所捕获的MP3数据包是否属于一个新session的音频流数据,若是,为该新session建立缓存,并进入步骤1.3执行;否则,继续执行步骤1.3;session指会话;
步骤1.3、使用FFmpeg剥离MP3数据包获取其中未解码的MP3数据帧,根据MP3数据帧中包含的位置信息,将MP3数据帧保存至缓存中对应的位置;
第二步,遍历缓存中已保存的所有MP3数据帧,当存在包含达到指定大小的连续MP3数据帧的数据块时,采用FFmpeg技术对该数据块进行解码;采用FFmpeg技术对数据块进行解码时,根据数据块在音频流中所处的位置,找到相应的上下文并更新后,继续解码。
2.根据权利要求1所述的网络音频MP3流乱序分段解码方法,其特征在于,第二步中所述的采用FFmpeg技术对数据块进行解码,通过设置在独立板卡上加速单元实现;所述的板卡上设置有两个以上的加速单元,每个加速单元采用FFmpeg技术实现,用于音视频处理;板卡的外部接口为PCI-E,插在支持PCI-E插槽的计算机上;计算机与板卡之间实现DMA方式的数据传输,从计算机的缓存中读取待解码的数据块通过DMA方式传输给板卡上的加速单元,加速单元将解码后的结果数据通过DMA方式传回计算机。
3.根据权利要求2所述的网络音频MP3流乱序分段解码方法,其特征在于,第二步中所述的板卡,其实现数据解码的方法是:
(1)在主机操作系统的用户态下设置有API库和管理工具,在主机操作系统的核心态下设置主机侧硬件驱动;在板卡系统的核心态下设置板卡侧硬件驱动,在板卡系统的用户态下设置板卡控制单元和加速单元;API库提供API函数,以控制板卡启停音视频加速处理;主机侧硬件驱动与板卡侧硬件驱动用于实现DMA数据传输方式;
(2)上层应用程序调用API库提供的API函数,管理工具根据所调用的API函数向板卡控制单元发送音视频处理的命令,板卡控制单元接收到音视频处理的命令后,控制加速单元对音视频数据进行解码处理;要处理的音视频数据通过主机侧硬件驱动从主机缓存中读取,然后传送给板卡侧硬件驱动,板卡侧硬件驱动将要处理的音视频数据传送给加速单元,加速单元在将解码后的结果数据传送给板卡侧硬件驱动,板卡侧硬件驱动再传送给主机侧硬件驱动,最后由主机侧硬件驱动将处理后的结果数据写回内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410472027.0A CN104202656B (zh) | 2014-09-16 | 2014-09-16 | 网络音频mp3流乱序分段解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410472027.0A CN104202656B (zh) | 2014-09-16 | 2014-09-16 | 网络音频mp3流乱序分段解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104202656A true CN104202656A (zh) | 2014-12-10 |
CN104202656B CN104202656B (zh) | 2017-08-04 |
Family
ID=52087871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410472027.0A Expired - Fee Related CN104202656B (zh) | 2014-09-16 | 2014-09-16 | 网络音频mp3流乱序分段解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104202656B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981470A (zh) * | 2017-12-27 | 2019-07-05 | 华为技术有限公司 | 报文传输控制方法及装置 |
CN112511840A (zh) * | 2020-12-24 | 2021-03-16 | 北京睿芯高通量科技有限公司 | 一种基于ffmpeg与硬件加速设备的解码系统及方法 |
CN113709518A (zh) * | 2021-08-24 | 2021-11-26 | 天津津航计算技术研究所 | 一种基于rtsp协议的视频实时传输模式设计方法 |
CN114024924A (zh) * | 2022-01-05 | 2022-02-08 | 北京安博通科技股份有限公司 | 一种tcp流重组方法、装置、电子设备及存储介质 |
WO2022183841A1 (zh) * | 2021-03-02 | 2022-09-09 | 北京沃东天骏信息技术有限公司 | 解码方法、装置和计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464685A (zh) * | 2002-06-13 | 2003-12-31 | 优创科技(深圳)有限公司 | 一种在网络终端缓冲区中处理音频流回放的方法 |
WO2005034092A2 (en) * | 2003-09-29 | 2005-04-14 | Handheld Entertainment, Inc. | Method and apparatus for coding information |
CN101895737A (zh) * | 2010-07-13 | 2010-11-24 | 中兴通讯股份有限公司 | 多媒体解码方法及装置、视频监控方法及系统 |
CN102104772A (zh) * | 2011-02-28 | 2011-06-22 | 南京邮电大学 | 一种无线视频传感器编解码系统的设计方法 |
CN102497578A (zh) * | 2011-11-25 | 2012-06-13 | 武汉大学 | 一种3g网络环境下的移动音视频实时通信方法 |
-
2014
- 2014-09-16 CN CN201410472027.0A patent/CN104202656B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464685A (zh) * | 2002-06-13 | 2003-12-31 | 优创科技(深圳)有限公司 | 一种在网络终端缓冲区中处理音频流回放的方法 |
WO2005034092A2 (en) * | 2003-09-29 | 2005-04-14 | Handheld Entertainment, Inc. | Method and apparatus for coding information |
CN101895737A (zh) * | 2010-07-13 | 2010-11-24 | 中兴通讯股份有限公司 | 多媒体解码方法及装置、视频监控方法及系统 |
CN102104772A (zh) * | 2011-02-28 | 2011-06-22 | 南京邮电大学 | 一种无线视频传感器编解码系统的设计方法 |
CN102497578A (zh) * | 2011-11-25 | 2012-06-13 | 武汉大学 | 一种3g网络环境下的移动音视频实时通信方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981470A (zh) * | 2017-12-27 | 2019-07-05 | 华为技术有限公司 | 报文传输控制方法及装置 |
CN112511840A (zh) * | 2020-12-24 | 2021-03-16 | 北京睿芯高通量科技有限公司 | 一种基于ffmpeg与硬件加速设备的解码系统及方法 |
CN112511840B (zh) * | 2020-12-24 | 2023-02-17 | 北京睿芯高通量科技有限公司 | 一种基于ffmpeg与硬件加速设备的解码系统及方法 |
WO2022183841A1 (zh) * | 2021-03-02 | 2022-09-09 | 北京沃东天骏信息技术有限公司 | 解码方法、装置和计算机可读存储介质 |
CN113709518A (zh) * | 2021-08-24 | 2021-11-26 | 天津津航计算技术研究所 | 一种基于rtsp协议的视频实时传输模式设计方法 |
CN113709518B (zh) * | 2021-08-24 | 2023-11-28 | 天津津航计算技术研究所 | 一种基于rtsp协议的视频实时传输模式设计方法 |
CN114024924A (zh) * | 2022-01-05 | 2022-02-08 | 北京安博通科技股份有限公司 | 一种tcp流重组方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104202656B (zh) | 2017-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11374995B2 (en) | Multimedia file processing | |
US20220272402A1 (en) | Video stream playing method, system, terminal and storage medium | |
US20230045658A1 (en) | Method and system for real-time transcoding of mpeg-dash on-demand media segments while in transit from content host to dash client | |
US9961398B2 (en) | Method and device for switching video streams | |
CN104202656A (zh) | 网络音频mp3流乱序分段解码方法 | |
US8745256B2 (en) | Method and system for multimedia audio video transfer | |
US10476928B2 (en) | Network video playback method and apparatus | |
WO2017101355A1 (zh) | 图像处理方法及装置 | |
US10791160B2 (en) | Method and apparatus for cloud streaming service | |
CN103546424A (zh) | 一种tcp数据传输方法、tcp卸载引擎及系统 | |
CN112804592B (zh) | 一种基于浏览器的rtsp直播视频转发方法及终端 | |
US10389773B2 (en) | Technologies for end of frame detection in streaming content | |
CN104202659A (zh) | 网络视频流乱序分段解码方法 | |
US20150296014A1 (en) | Picture download method and apparatus | |
US20210233572A1 (en) | Video processing method, electronic device, and storage medium | |
US20180324238A1 (en) | A System and Methods Thereof for Auto-playing Video Content on Mobile Devices | |
CN116600169A (zh) | 媒体文件的预加载方法、装置、电子设备及存储介质 | |
CN107172504B (zh) | 一种面向流式音视频数据的分布式处理方法及其装置 | |
US20190200031A1 (en) | Coding of video and audio with initialization fragments | |
CN105592319B (zh) | 一种服务器截图方法及服务器 | |
CN113596325B (zh) | 抓图方法、装置、电子设备及存储介质 | |
CN105657540B (zh) | 一种适配安卓系统的视频解码方法及其装置 | |
CN206294299U (zh) | 一种移动音视频直播系统 | |
CN106658154A (zh) | 一种视频截图方法、装置和设备以及视频处理方法、装置和设备 | |
CN105263134A (zh) | 一种图像传输方法及移动设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170804 |