CN116700838A - 一种as语言接口函数、音视频处理方法和系统 - Google Patents
一种as语言接口函数、音视频处理方法和系统 Download PDFInfo
- Publication number
- CN116700838A CN116700838A CN202310683201.5A CN202310683201A CN116700838A CN 116700838 A CN116700838 A CN 116700838A CN 202310683201 A CN202310683201 A CN 202310683201A CN 116700838 A CN116700838 A CN 116700838A
- Authority
- CN
- China
- Prior art keywords
- function
- audio
- internal
- video
- module
- 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
- 230000006870 function Effects 0.000 title claims abstract description 386
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 152
- 238000000034 method Methods 0.000 claims description 32
- 238000013507 mapping Methods 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 9
- 230000009191 jumping Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 9
- 238000002156 mixing Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
本发明公开了一种AS语言接口函数、音视频处理方法和系统,该接口函数包括:代理模块,用于根据目标函数进行调用函数;对应关系模块,用于存放第一内部函数组和目标函数,其中第一内部函数组与第二内部函数组形成一一对应关系,第一内部函数组用于存放多个第一内部函数,多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,第二内部函数组用于存放多个第二内部函数,多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口;目标函数与指定的一个第一内部函数绑定。本发明通过ANE接口扩展方式构建AS语言接口函数以提高AS语言在音视频处理的兼容性,满足了研发人员对接口调用的开发需求。
Description
技术领域
本发明涉及一种多媒体技术领域,特别涉及一种AS语言接口函数、音视频处理方法和系统。
背景技术
AS语言是ActionScript简称,它是Flash的脚本语言,多用于Flash互动性、娱乐性、实用性开发,网页制作和RIA(丰富互联网程序)开发。然而Adobe于2020年终止支持Flash,导致官方Adobe提供的自带SDK也缺少更新。
由于AS语言自带SDK提供的接口使用不便,对音视频的处理操作不够灵活,当直接使用AS语言播放音频或视频文件时,虽然可以直接解析flv格式,但仍然存在部分特殊格式的音频、视频文件无法支持解析,例如:音频文件无法支持wav、avs、acc等格式,视频文件无法支持mov、wmv等格式。
发明内容
为了克服现有技术存在的缺陷与不足,本发明提供了一种AS语言接口函数、音视频处理方法和系统,本发明通过ANE接口扩展方式构建AS语言接口函数以提高AS语言在音视频处理的兼容性,更好地满足研发人员在使用AS语言进行音视频开发时对接口调用的需求。
为了达到上述第一目的,本发明采用以下技术方案:
一种AS语言接口函数,用于支持音视频文件的处理,所述接口函数包括:
代理模块,用于根据目标函数进行调用函数;
对应关系模块,用于存放第一内部函数组和所述目标函数,其中所述第一内部函数组与第二内部函数组形成一一对应关系,所述第一内部函数组用于存放多个第一内部函数,所述多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,所述第二内部函数组用于存放多个第二内部函数,所述多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口;
所述目标函数与指定的一个第一内部函数绑定以使得所述代理模块执行调用时有确定的地址信息。
优选地,在存放第一内部函数组时,具体为:通过遍历所述第一内部函数组以提取出每个第一内部函数,每个第一内部函数在绑定时根据函数名信息确定地址信息;
在所述第二内部函数组中,每个第一内部函数根据所述函数名信息与唯一一个第二内部函数确定为相同关系,以使得当所有函数加载至内存后所述代理模块根据所述函数名信息调用相同的目标函数时找到相同的地址信息。
为了达到上述第二目的,本发明采用以下技术方案:
一种音视频处理方法,包括:
加载对应关系模块;
响应于至少一个音视频操作请求,根据请求类型确定对指定音视频文件的处理方式;
卸载所述对应关系模块,其中所述对应关系模块用于存放第一内部函数组和目标函数,所述第一内部函数组与第二内部函数组形成一一对应关系,所述第一内部函数组用于存放多个第一内部函数,所述第二内部函数组用于存放多个第二内部函数,所述目标函数用于与指定的一个第一内部函数绑定。
优选地,所述多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,所述多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口;
在根据请求类型确定对指定音视频文件的处理方式中,包括:
根据请求类型确定所述音视频操作请求所需调用的至少一个第一内部函数,在每次调用前确定指定的一个第一内部函数并通过所述目标函数绑定以完成调用接口的配对。
优选地,在根据请求类型确定对指定音视频文件的处理方式中,还包括:
当判断所述请求类型为加载请求时,确定所述指定音视频文件所对应的文件句柄;
当判断所述请求类型为跳转请求时,根据所述文件句柄和目标时刻将所述指定音视频文件的播放进度跳转至所述目标时刻;
当判断所述请求类型为播放请求时,根据所述文件句柄播放所述指定音视频文件。
优选地,在加载对应关系模块中,具体包括以下步骤:
确定字符串集,其中所述字符串集包含所有第一内部函数的函数名信息;
遍历所述第一内部函数组和所述字符串集,以使得所述第一内部函数组获取每个第一内部函数的函数名信息并在遍历结束后确定函数个数;
通过ANE接口扩展方式将如权利要求1-2任一所述的AS语言接口函数打包成ANE文件;
通过动态链接的方式将所述ANE文件加载至内存,以确定每个第一内部函数的地址信息,所述每个第一内部函数的地址信息用于所述目标函数在确定绑定时进行赋值。
优选地,在根据所述文件句柄和目标时刻将所述指定音视频文件的播放进度跳转至所述目标时刻中,具体包括:
以多线程方式运行所述后端处理模块和所述前端处理模块,其中所述后端处理模块和所述前端处理模块具有共享内存区,所述共享内存区用于共同读写数据;
在第一线程处理中,包括:
通过所述后端处理模块根据所述文件句柄确定所述指定音视频文件在内存中的第一映射区和第二映射区,所述第一映射区和所述第二映射区分别包含于所述共享内存区内;
通过所述后端处理模块根据所述目标时刻确定帧序号;
通过所述后端处理模块根据所述帧序号确定目标图像和目标音频,并发送写入通知信息,其中所述指定音视频文件包括音频信息和视频信息,所述目标图像为根据所述帧序号定位的图像数据,所述目标音频为根据所述帧序号定位的音频码流;
在第二线程处理中,包括:通过所述后端处理模块获取所述写入通知信息,在所述第一映射区中写入所述目标图像并在完成写入操作时向前端处理模块发送刷新通知信息,在所述第二映射区中写入所述目标音频;
在第三线程处理中,包括:通过所述前端处理模块获取所述刷新通知信息,在所述第一映射区域中读取所述目标图像以刷新当前画面。
优选地,在根据所述文件句柄播放所述指定音视频文件中,包括:
计算所述目标图像和所述目标音频之间的时间差,进而确定下一帧的音频数据和视频数据以确保所述音频数据和所述视频数据的播放速度一致;
在所述第一映射区中设置视频缓存区,在所述第二映射区中设置音频缓存区;
在所述视频缓存区中缓存所述视频数据,在所述音频缓存区中缓存所述音频数据;
在所述视频缓存区中根据当前帧序号和第一预设缓存帧数写入所述视频数据,在所述音频缓存区中根据所述当前帧序号和第二预设缓存帧数写入所述音频数据;
根据所述当前帧序号和时间轴进行播放视频数据和音频数据。
为了达到上述第三目的,本发明采用以下技术方案:
一种音视频处理系统,包括:
加载单元,用于加载对应关系模块;
响应单元,用于响应于至少一个音视频操作请求,根据请求类型确定对指定音视频文件的处理方式;
卸载单元,用于卸载所述对应关系模块,其中所述对应关系模块用于存放第一内部函数组和目标函数,所述第一内部函数组与第二内部函数组形成一一对应关系,所述第一内部函数组用于存放多个第一内部函数,所述多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,所述第二内部函数组用于存放多个第二内部函数,所述多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口,所述目标函数用于与指定的一个第一内部函数绑定;
在根据请求类型确定对指定音视频文件的处理方式中,包括:根据请求类型确定所述音视频操作请求所需调用的至少一个第一内部函数,在每次调用前确定指定的一个第一内部函数并通过所述目标函数绑定以完成调用接口的配对。
为了达到上述第四目的,本发明采用以下技术方案:
一种存储介质,该存储介质用于存储程序代码,所述程序代码用于执行上述任一所述的音视频处理方法。
本发明与现有技术相比,具有如下优点和有益效果:
(1)通过ANE接口扩展方式构建AS语言接口函数以提高AS语言在音视频处理的兼容性,能够更好地满足研发人员在开发时对接口调用的需求,例如对指定音视频文件直接定位并显示到特定的关键帧,提高了研发人员使用AS语言进行开发音视频处理类软件的开发效率。
(2)在加载所有函数时,调用方为后端处理模块和前端处理模块,利用共享内存区和一一对应关系,使得调用方能够根据相同函数名信息进行寻址,从而得到的地址信息是相同的,进而避免了调用方对相同功能函数在内存上的重复加载,减少了冗余的内存占用,同时也保证了代理模块绑定相同功能函数时的稳定性,只需对相同功能代码绑定一次即可,避免了目标函数因为不同调用方存在不同函数处理而在执行相同功能代码时再绑定不同的功能函数。
(3)通过后端处理模块和前端处理模块在共享内存区进行共同读写数据,通过多线程方式执行音视频文件的数据处理和画面刷新,使得数据处理和画面刷新的过程相互独立以实现双缓存机制,减少在画面播放时因单线程处理方式等候数据处理而产生的时延,并进一步在第一映射区中设置视频缓存区,在第二映射区中设置音频缓存区,通过设置缓存区以改善视频播放卡顿的情况。
附图说明
图1为实施例1中的一种AS语言接口函数的框架示意图;
图2为实施例2中的一种音视频处理方法的步骤流程示意图;
图3为实施例2中加载对应关系模块时的步骤示意图;
图4为实施例2中确定对指定音视频文件的处理方式时的步骤示意图;
图5为实施例2中确定指定音视频文件所对应的文件句柄时的步骤示意图;
图6为实施例2中将指定音视频文件的播放进度跳转至目标时刻时的步骤示意图;
图7为实施例2中播放指定音视频文件时的步骤示意图;
图8为实施例3中的一种音视频处理系统的框架示意图;
图9为实施例4中的一种终端的框架示意图;
图10为实施例5中的一种计算机设备的框架示意图。
附图标记:10、AS语言接口函数;20、代理模块;30、对应关系模块;40、种音视频处理系统;50、加载单元;60、响应单元;70、卸载单元。
具体实施方式
在本公开的描述中,需要说明的是,下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。应当理解,本公开的方法实施方式中记载的各个步骤可以按和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。需要注意,本公开中提及的“一个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例1
如图1所示,本实施例提供了一种AS语言接口函数10,该接口函数用于支持音视频文件的处理。实际应用时,该接口函数为通过ANE接口扩展方式进行打包成ANE文件,进而通过动态链接的方式为AS语言提供音视频文件处理的接口调用。
在本实施例中,该接口函数包括:
代理模块20,用于根据目标函数进行调用函数;
对应关系模块30,用于存放第一内部函数组和目标函数,其中第一内部函数组与第二内部函数组形成一一对应关系,第一内部函数组用于存放多个第一内部函数,从而第一内部函数组包括多个第一内部函数,多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,第二内部函数组用于存放多个第二内部函数,从而第二内部函数组包括多个第二内部函数,多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口;
目标函数与指定的一个第一内部函数绑定以使得代理模块执行调用时有确定的地址信息。
在本实施例中,后端处理模块通过调用代理模块以完成对音视频文件的数据处理,其中对音视频文件的数据处理包括解码、转码、过滤以及编码,例如在解码中,基于音视频处理文件库的功能函数对输入视频进行解码,并将编码的数据转换为本地数据格式;在转码中,基于音视频处理文件库对解码后的本地数据进行重新编码,并保存为指定的视频格式,比如MP4、AVI、FLV等;在编辑中,基于音视频处理文件库提供的各种过滤器对视频帧进行处理,包括添加水印、去噪、降低码率等操作;在编码中,基于音视频处理文件库对过滤后的视频帧进行编码,并生成最终的视频文件。
在本实施例中,前端处理模块则通过调用代理模块以完成对音视频文件的播放显示,该播放显示相当于视频处理中的输出流程,即将生成的视频文件输出到指定的画面区域、设备或平台中,比如屏幕、投影仪、网络直播平台等。
在存放第一内部函数组时,具体为:通过遍历第一内部函数组以提取出每个第一内部函数,第一内部函数在绑定时根据函数名信息确定地址信息;
在第二内部函数组中,每个第一内部函数根据函数名信息与唯一一个第二内部函数确定为相同关系,以使得当所有函数加载至内存后代理模块根据函数名信息调用相同的目标函数时找到相同的地址信息。
实际应用时,第一内部函数组与第二内部函数组包含相同的内部函数,即每个第一内部函数均有一个第二内部函数与之对应,通过第一内部函数组与第二内部函数组形成一一对应关系,使得加载所有函数时,所有的第一内部函数与所有的第二内部函数具有共享内存区,通过一一对应关系,根据相同函数名信息进行寻址,从而得到的地址信息是相同的,进而避免了相同功能函数在内存上的重复加载,减少了冗余的内存占用,同时也保证了代理模块绑定相同功能函数时的稳定性,只需对相同功能代码绑定一次即可,无需让目标函数在执行相同功能代码时根据不同模块的调用再绑定不同的功能函数。
在本实施例中,多个第一内部函数和多个第二内部函数均为基于音视频处理文件库进行封装得到的接口函数。实际应用时音视频处理文件库可以为libav库或ffmpeg库。实际应用时,每个第一内部函数的函数名信息为本领域技术人员根据实际情况进行命名,在此不做限定。
以下以本实施例后端处理模块使用的命名方式作为示例性的说明:
示例性地,在后端处理模块执行播放流程中,相应的接口函数包括PlayerLoad函数、PlayerPlay函数、PlayerPause函数、PlayerSeek函数、PlayerUnload函数、PlayerVolume函数、PlayerBitmap函数、PlayerRefreshWindow函数、PlayerSetSpeedParts函数;
其中,PlayerLoad函数用于加载文件,PlayerPlay函数用于开始播放,PlayerPause函数用于暂停播放,PlayerSeek函数用于跳转关键帧,PlayerUnload函数用于卸载播放器,PlayerVolume函数用于调节声量,PlayerBitmap函数用于读取画面内容,PlayerRefreshWindow函数用于画面的刷新显示,PlayerSetSpeedParts函数用于控制分段播放的时间和速度。
示例性地,在后端处理模块执行输出视频流程中,在播放指定音视频文件时先混音以使视频播放的画面和音频合并,相应的接口函数还包括:mixingAudioLoad函数、setMixingAudioSampleRate函数、onMixingAudioApply函数、mixingAudioUnload函数、EncodeVideoAlloc函数、EncodeVideoSet函数、EncodeVideoApply函数、EncodeVideoPushFrame函数、EncodeVideoEndPush函数、EncodeVideoFree函数;
其中,mixingAudioLoad函数用于混音初始化,setMixingAudioSampleRate函数用于设置采样率,onMixingAudioApply函数用于混音开始操作,mixingAudioUnload函数用于混音结束操作以释放内存,EncodeVideoAlloc函数,用于视频输出初始化并将音频文件传进来,EncodeVideoSet函数用于配置视频尺寸,帧率,压缩比等,EncodeVideoApply函数用于确认配置信息并开始接收图片推送,EncodeVideoPushFrame函数用于按时间送帧,EncodeVideoEndPush函数用于结束送帧,EncodeVideoFree函数用于结束视频输出以释放内存。
应当明白,上述提及的接口函数均为用于音视频文件处理的功能函数,在实际应用时均可以作为第一内部函数,从而构成第一内部函数组。本领域技术人员可以根据实际情况对接口函数做出适应性修改,故本实施例在此不对具体的接口函数实现进行限定。
实施例2
如图2所示,本实施例提出了一种音视频处理方法,该方法基于实施例1中AS语言接口函数10而实现。该方法包括:
步骤S100、加载对应关系模块;
结合图3所示,在加载对应关系模块中,具体包括以下步骤:
步骤S101、确定字符串集,其中字符串集包含所有第一内部函数的函数名信息;
步骤S102、遍历第一内部函数组和字符串集,以使得第一内部函数组获取每个第一内部函数的函数名信息并在遍历结束后确定整个字符串集中的函数个数;
在本实施例中,字符串集存储所有第一内部函数的函数名信息的字符串,通过遍历第一内部函数组和字符串集以使得每个第一内部函数的函数名信息的字符串都赋值给第一内部函数组,具体可以基于索引标识符进行遍历,索引标识符用于分隔字符串集中的每个字符串成员,以区分字符串集中的每个第一内部函数的函数名信息的字符串符号。函数个数用于后续使用接口时进行传参,通过限制遍历时的索引标识符的阈值大小以避免调用接口时溢出函数寻址范围,即避免野指针问题,从而提高函数寻址的安全性。
示例性地,以数组为例,在每次遍历时,以数组成员的标号作为索引标识符,从而根据该标号能够访问字符串集中的指定字符串成员的地址信息;以队列为例,以队列成员的序号作为索引标识符,从而根据该序号能够访问字符串集中的每个字符串成员的地址信息;依次类推,本实施例还可以使用堆作为数据结构来存储字符串集。
实际应用时,遍历第一内部函数组和字符串集时,还可以通过哈希表根据字符串的键值进行访问,具体地,通过哈希函数使得每个字符串成员都与一个唯一的键值(即哈希值)相关联,即将字符串映射到一个独立的数据桶中,每个数据桶存储一个或多个字符串,从而利用哈希表来根据字符串的键值进行访问相应的字符串成员。
步骤S103、通过ANE接口扩展方式将上述的AS语言接口函数10打包成ANE文件;
在本实施例中,ANE接口扩展方式是指AdobeAir的本地扩展,它的作用是提供给基于AdobeAir平台上层开发的AS3脚本调用所在设备功能的接口及方法的拓展方式。
在本实施例中,基于AS语言接口函数10打包成ANE文件用于AS语言在进行音视频文件处理时提供调用接口,ANE文件包括用于音视频处理的动态库文件和用于管理加载和卸载的swf文件,实际应用时,通过在处理前加载所有的函数至内存以提供用于音视频文件处理的ANE扩展接口,有效提高了AS语言在音视频处理上对多种音视频格式处理的兼容性,即使得AS编译成的本地可执行程序的窗口对音视频文件处理的具有更大的兼容性,其中本地可执行程序例如为windows的exe程序。
步骤S104、通过动态链接的方式将ANE文件加载至内存,以确定每个第一内部函数的地址信息,每个第一内部函数的地址信息用于目标函数在确定绑定时进行赋值。实际应用时,通过动态库链接的方式加载ANE文件,以使对应关系模块加载至内存,进而每个第一内部函数具有寻址结果,从而确定出所有第一内部函数的函数名信息和相应的地址信息以及所有第一内部函数的函数个数。
步骤S200、响应于至少一个音视频操作请求,根据请求类型确定对指定音视频文件的处理方式;
在本实施例中,在执行根据请求类型确定对指定音视频文件的处理方式之前,还包括:
根据指定音视频文件的文件格式判断是否为可支持类型,当判断为可支持类型时,使用AS语言自带SDK处理指定音视频文件,否则继续执行根据请求类型确定对指定音视频文件的处理方式。
在本实施例中,通过判断指定音视频文件的文件格式,以达到自适应处理指定音视频文件的效果,从而提高AS语言对音视频格式处理的兼容性。
结合图4所示,在根据请求类型确定对指定音视频文件的处理方式中,包括:
步骤S201、根据请求类型确定音视频操作请求所需调用的至少一个第一内部函数,在每次调用前确定指定的一个第一内部函数并通过目标函数与该指定的一个第一内部函数绑定以完成调用接口的配对。
实际应用时,在每次调用前,通过目标函数绑定指定的一个第一内部函数的地址信息,以完成调用接口的配对。
在根据请求类型确定对指定音视频文件的处理方式中,还包括:
步骤S202、当判断请求类型为加载请求时,确定指定音视频文件所对应的文件句柄;
结合图5所示,在确定指定音视频文件所对应的文件句柄中,具体包括:
步骤S202a、获取指定音视频文件的文件路径标识符;
步骤S202b、响应于加载请求,确定加载操作函数的函数名信息;
在本实施例中,加载请求为通过用户选中指定音视频文件并点击加载控件时生成,加载请求还可以通过点击打开控件选中指定音视频文件来生成。加载操作函数为一个第一内部函数,即PlayerLoad函数,该PlayerLoad函数用于加载音视频文件。
步骤S202c、基于加载操作函数的函数名信息从对应关系模块中确定映射的地址信息,该地址信息用于与目标函数进行绑定;
在本实施例中,由于初始化时已通过动态库文件将所有函数加载至内存,此时可通过函数名信息在内存中寻址确定地址信息,进而完成与目标函数的绑定。
步骤S202d、基于文件路径标识符调用目标函数以加载指定音视频文件,进而确定文件句柄;
在本实施例中,加载指定音视频文件成功时,PlayerLoad函数会返回一个文件句柄,该文件句柄为操作系统用于区分不同应用文件在打开时进行管理而赋予的唯一标识值。进一步地,由于音视频文件通常采用压缩方式进行存储,因此在加载时对指定音视频文件进行解码操作,将其还原成原始的视频信息和音频信息,其中音频信息表现为音频码流,而视频信息则表现为视频帧。
步骤S203、当判断请求类型为跳转请求时,根据文件句柄和目标时刻将指定音视频文件的播放进度跳转至目标时刻;
需要说明的是,AS语言自带SDK提供的接口使用不便,对音视频的处理操作不够灵活,例如:直接使用AS语言自带SDK,是无法直接定位并显示到某些关键帧。而本实施例基于AS语言接口函数10打包成ANE文件,以使得AS语言在进行音视频文件处理时调用接口更灵活,也能够定位到关键帧,从而更好地满足研发人员在开发时对接口调用的需求。
结合图6所示,在根据文件句柄和目标时刻将指定音视频文件的播放进度跳转至目标时刻中,具体包括:
步骤S203a、以多线程方式运行后端处理模块和前端处理模块;
在本实施例中,由于AS语言原本为单线程处理方式,将导致画面加载时存在一定的时延,进而出现视频播放卡顿的情况。实际应用时,后端处理模块和前端处理模块具有共享内存区,共享内存区用于共同读写数据,通过多线程方式执行音视频文件的数据处理和画面刷新,以使数据处理和画面刷新的过程相互独立,减少在画面播放时因单线程处理方式等候数据处理而产生的时延。
步骤S203b、在第一线程处理中确定目标图像和目标音频;
具体地,在第一线程处理中,包括:
通过后端处理模块根据文件句柄确定指定音视频文件在内存中的第一映射区和第二映射区,第一映射区和第二映射区分别包含于共享内存区内;
通过后端处理模块根据目标时刻确定帧序号,其中目标时刻与帧序号为对应关系。
通过后端处理模块根据帧序号确定目标图像和目标音频,并发送写入通知信息,其中指定音视频文件包括音频信息和视频信息,目标音频为根据帧序号定位的音频码流,目标图像为根据帧序号定位的图像数据;
在本实施例中,通过PlayerSeek函数实现跳转关键帧。还需要说明的是,解析音视频文件后,通常会划分为音频信息和视频信息两部分,其中音频信息表现为音频码流,而视频信息则表现为视频帧,并且分别存储在不同的轨道中。在音视频文件中,每个音频码流包含了一个基于预设时间段的音频数据;而每个视频帧都由多帧图像数据组成,每帧图像数据用于描述每个像素的位置、亮度、颜色等属性。
步骤S203c、在第二线程处理中写入目标图像和目标音频;
具体地,在第二线程处理中,包括:通过后端处理模块获取写入通知信息,在第一映射区中写入目标图像并在完成写入操作时向前端处理模块发送刷新通知信息,在第二映射区中写入目标音频;
步骤S203d、在第三线程处理中刷新当前画面;
具体地,在第三线程处理中,包括:通过前端处理模块获取刷新通知信息,在第一映射区域中读取目标图像以刷新当前画面。实际应用时,通过PlayerBitmap函数读取在第一映射区域中读取目标图像所对应的画面内容,通过PlayerRefreshWindow函数实现画面的刷新显示。
步骤S204、当判断请求类型为播放请求时,根据文件句柄播放指定音视频文件。
结合图7所示,在根据文件句柄播放指定音视频文件中,包括:
步骤S204a、计算目标图像和目标音频之间的时间差,进而确定下一帧的音频数据和视频数据以确保音频数据和视频数据的播放速度一致,从而确保音频和视频同步。
步骤S204b、在第一映射区中设置视频缓存区,在第二映射区中设置音频缓存区;
步骤S204c、在视频缓存区中缓存视频数据,在音频缓存区中缓存音频数据;
步骤S204d、在视频缓存区中根据当前帧序号和第一预设缓存帧数写入视频数据,在音频缓存区中根据当前帧序号和第二预设缓存帧数写入音频数据;
在本实施例中,基于当前帧序号和第一预设缓存帧数对视频进行缓存,基于当前帧序号和第二预设缓存帧数对音频进行缓存,以进一步确保音视频播放的流畅度。
步骤S204e、根据当前帧序号和时间轴进行播放视频数据和音频数据。
在本实施例中,播放前通过混音合并视频播放的画面和音频,并在播放时通过PlayerPlay函数播放合并后的音视频。
步骤S300、卸载对应关系模块,其中对应关系模块用于存放第一内部函数组和目标函数,第一内部函数组与第二内部函数组形成一一对应关系,第一内部函数组用于存放多个第一内部函数,多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,第二内部函数组用于存放多个第二内部函数,多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口,目标函数用于与指定的一个第一内部函数绑定。
实际应用时,通过PlayerUnload函数卸载播放器,进而将对应关系模块在内存中申请的空间释放,以完成卸载过程。
实施例3
如图8所示,本实施例提供了一种音视频处理系统40,该系统与上述实施例中任一种音视频处理方法相对应。
该系统包括:
加载单元50,用于加载对应关系模块;
响应单元60,用于响应于至少一个音视频操作请求,根据请求类型确定对指定音视频文件的处理方式;
卸载单元70,用于卸载对应关系模块,其中对应关系模块用于存放第一内部函数组和目标函数,第一内部函数组与第二内部函数组形成一一对应关系,第一内部函数组用于存放多个第一内部函数,多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,第二内部函数组用于存放多个第二内部函数,多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口,目标函数用于与指定的一个第一内部函数绑定;
在根据请求类型确定对指定音视频文件的处理方式中,包括:根据请求类型确定音视频操作请求所需调用的至少一个第一内部函数,在每次调用前确定指定的一个第一内部函数并通过目标函数与该指定的一个第一内部函数绑定以完成调用接口的配对。此外,其余与上述实施例中任一种音视频处理方法相同的步骤过程在此不再赘述。
实施例4
如图9所示,本实施例提供了一种终端,包括:至少一个存储器和至少一个处理器;
其中,至少一个存储器用于存储程序代码,至少一个处理器用于调用至少一个存储器所存储的程序代码执行上述实施例中的任一种音视频处理方法。
实施例5
本实施例提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以参见图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库为物理层用于存储各种数据库。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述实施例中任一种音视频处理方法。
实施例6
本实施例提供了一种存储介质,该存储介质用于存储程序代码,程序代码用于执行上述实施例中任一种音视频处理方法。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种AS语言接口函数,其特征在于,用于支持音视频文件的处理,所述接口函数包括:
代理模块,用于根据目标函数进行调用函数;
对应关系模块,用于存放第一内部函数组和所述目标函数,其中所述第一内部函数组与第二内部函数组形成一一对应关系,所述第一内部函数组用于存放多个第一内部函数,所述多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,所述第二内部函数组用于存放多个第二内部函数,所述多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口;
所述目标函数与指定的一个第一内部函数绑定以使得所述代理模块执行调用时有确定的地址信息。
2.根据权利要求1所述的AS语言接口函数,其特征在于,在存放第一内部函数组时,具体为:通过遍历所述第一内部函数组以提取出每个第一内部函数,每个第一内部函数在绑定时根据函数名信息确定地址信息;
在所述第二内部函数组中,每个第一内部函数根据所述函数名信息与唯一一个第二内部函数确定为相同关系,以使得当所有函数加载至内存后所述代理模块根据所述函数名信息调用相同的目标函数时找到相同的地址信息。
3.一种音视频处理方法,其特征在于,包括:
加载对应关系模块;
响应于至少一个音视频操作请求,根据请求类型确定对指定音视频文件的处理方式;
卸载所述对应关系模块,其中所述对应关系模块用于存放第一内部函数组和目标函数,所述第一内部函数组与第二内部函数组形成一一对应关系,所述第一内部函数组用于存放多个第一内部函数,所述第二内部函数组用于存放多个第二内部函数,所述目标函数用于与指定的一个第一内部函数绑定。
4.根据权利要求3所述的音视频处理方法,其特征在于,所述多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,所述多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口;
在根据请求类型确定对指定音视频文件的处理方式中,包括:
根据请求类型确定所述音视频操作请求所需调用的至少一个第一内部函数,在每次调用前确定指定的一个第一内部函数并通过所述目标函数绑定以完成调用接口的配对。
5.根据权利要求4所述的音视频处理方法,其特征在于,在根据请求类型确定对指定音视频文件的处理方式中,还包括:
当判断所述请求类型为加载请求时,确定所述指定音视频文件所对应的文件句柄;
当判断所述请求类型为跳转请求时,根据所述文件句柄和目标时刻将所述指定音视频文件的播放进度跳转至所述目标时刻;
当判断所述请求类型为播放请求时,根据所述文件句柄播放所述指定音视频文件。
6.根据权利要求5所述的音视频处理方法,其特征在于,在加载对应关系模块中,具体包括以下步骤:
确定字符串集,其中所述字符串集包含所有第一内部函数的函数名信息;
遍历所述第一内部函数组和所述字符串集,以使得所述第一内部函数组获取每个第一内部函数的函数名信息并在遍历结束后确定函数个数;
通过ANE接口扩展方式将如权利要求1-2任一所述的AS语言接口函数打包成ANE文件;
通过动态链接的方式将所述ANE文件加载至内存,以确定每个第一内部函数的地址信息,所述每个第一内部函数的地址信息用于所述目标函数在确定绑定时进行赋值。
7.根据权利要求5所述的音视频处理方法,其特征在于,在根据所述文件句柄和目标时刻将所述指定音视频文件的播放进度跳转至所述目标时刻中,具体包括:
以多线程方式运行所述后端处理模块和所述前端处理模块,其中所述后端处理模块和所述前端处理模块具有共享内存区,所述共享内存区用于共同读写数据;
在第一线程处理中,包括:
通过所述后端处理模块根据所述文件句柄确定所述指定音视频文件在内存中的第一映射区和第二映射区,所述第一映射区和所述第二映射区分别包含于所述共享内存区内;
通过所述后端处理模块根据所述目标时刻确定帧序号;
通过所述后端处理模块根据所述帧序号确定目标图像和目标音频,并发送写入通知信息,其中所述指定音视频文件包括音频信息和视频信息,所述目标图像为根据所述帧序号定位的图像数据,所述目标音频为根据所述帧序号定位的音频码流;
在第二线程处理中,包括:通过所述后端处理模块获取所述写入通知信息,在所述第一映射区中写入所述目标图像并在完成写入操作时向前端处理模块发送刷新通知信息,在所述第二映射区中写入所述目标音频;
在第三线程处理中,包括:通过所述前端处理模块获取所述刷新通知信息,在所述第一映射区域中读取所述目标图像以刷新当前画面。
8.根据权利要求7所述的音视频处理方法,其特征在于,在根据所述文件句柄播放所述指定音视频文件中,包括:
计算所述目标图像和所述目标音频之间的时间差,进而确定下一帧的音频数据和视频数据以确保所述音频数据和所述视频数据的播放速度一致;
在所述第一映射区中设置视频缓存区,在所述第二映射区中设置音频缓存区;
在所述视频缓存区中缓存所述视频数据,在所述音频缓存区中缓存所述音频数据;
在所述视频缓存区中根据当前帧序号和第一预设缓存帧数写入所述视频数据,在所述音频缓存区中根据所述当前帧序号和第二预设缓存帧数写入所述音频数据;
根据所述当前帧序号和时间轴进行播放视频数据和音频数据。
9.一种音视频处理系统,其特征在于,包括:
加载单元,用于加载对应关系模块;
响应单元,用于响应于至少一个音视频操作请求,根据请求类型确定对指定音视频文件的处理方式;
卸载单元,用于卸载所述对应关系模块,其中所述对应关系模块用于存放第一内部函数组和目标函数,所述第一内部函数组与第二内部函数组形成一一对应关系,所述第一内部函数组用于存放多个第一内部函数,所述多个第一内部函数为用于为后端处理模块提供音视频文件处理的函数接口,所述第二内部函数组用于存放多个第二内部函数,所述多个第二内部函数为用于为前端处理模块提供音视频文件处理的函数接口,所述目标函数用于与指定的一个第一内部函数绑定;
在根据请求类型确定对指定音视频文件的处理方式中,包括:根据请求类型确定所述音视频操作请求所需调用的至少一个第一内部函数,在每次调用前确定指定的一个第一内部函数并通过所述目标函数绑定以完成调用接口的配对。
10.一种存储介质,其特征在于,该存储介质用于存储程序代码,所述程序代码用于执行如权利要求3-8中任一所述的音视频处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310683201.5A CN116700838B (zh) | 2023-06-09 | 2023-06-09 | 一种as语言接口函数、音视频处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310683201.5A CN116700838B (zh) | 2023-06-09 | 2023-06-09 | 一种as语言接口函数、音视频处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116700838A true CN116700838A (zh) | 2023-09-05 |
CN116700838B CN116700838B (zh) | 2024-02-02 |
Family
ID=87838772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310683201.5A Active CN116700838B (zh) | 2023-06-09 | 2023-06-09 | 一种as语言接口函数、音视频处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116700838B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441566A (zh) * | 2008-11-18 | 2009-05-27 | 腾讯科技(深圳)有限公司 | 一种嵌入式平台和在嵌入式平台上动态链接程序的方法 |
CN101630248A (zh) * | 2009-08-06 | 2010-01-20 | 腾讯科技(深圳)有限公司 | flash处理装置和处理方法 |
CN102169432A (zh) * | 2010-02-25 | 2011-08-31 | 腾讯科技(深圳)有限公司 | 一种as语言接口函数及调用方法 |
WO2017162012A1 (zh) * | 2016-03-21 | 2017-09-28 | 中兴通讯股份有限公司 | 多方会议系统及其实现多方会议的方法和装置 |
CN115248919A (zh) * | 2021-04-27 | 2022-10-28 | 腾讯科技(深圳)有限公司 | 一种函数接口的调用方法、装置、电子设备及存储介质 |
-
2023
- 2023-06-09 CN CN202310683201.5A patent/CN116700838B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441566A (zh) * | 2008-11-18 | 2009-05-27 | 腾讯科技(深圳)有限公司 | 一种嵌入式平台和在嵌入式平台上动态链接程序的方法 |
CN101630248A (zh) * | 2009-08-06 | 2010-01-20 | 腾讯科技(深圳)有限公司 | flash处理装置和处理方法 |
CN102169432A (zh) * | 2010-02-25 | 2011-08-31 | 腾讯科技(深圳)有限公司 | 一种as语言接口函数及调用方法 |
WO2017162012A1 (zh) * | 2016-03-21 | 2017-09-28 | 中兴通讯股份有限公司 | 多方会议系统及其实现多方会议的方法和装置 |
CN115248919A (zh) * | 2021-04-27 | 2022-10-28 | 腾讯科技(深圳)有限公司 | 一种函数接口的调用方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116700838B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101034080B1 (ko) | 균일한 비디오 디코딩 및 디스플레이 | |
KR101188472B1 (ko) | 데이터 즉시 청킹을 사용하여 파일 입출력을 스케줄 하는 방법 | |
US7721308B2 (en) | Synchronization aspects of interactive multimedia presentation management | |
CN111277869B (zh) | 视频播放方法、装置、设备和存储介质 | |
US8675000B2 (en) | Command buffers for web-based graphics rendering | |
US20040267778A1 (en) | Media foundation topology application programming interface | |
US7698528B2 (en) | Shared memory pool allocation during media rendering | |
US7558806B2 (en) | Method and apparatus for buffering streaming media | |
CN1720519A (zh) | 管理元数据及其系统 | |
CN109840879B (zh) | 图像渲染方法、装置、计算机存储介质及终端 | |
US8582960B2 (en) | Storage medium storing moving-image data that includes mode information, and reproducing apparatus and method | |
CN109325145A (zh) | 视频缩略图的获取方法、终端及计算机可读存储介质 | |
CN110727825A (zh) | 动画播放的控制方法、装置、服务器和存储介质 | |
CN117178557A (zh) | 用于场景中的定时和事件触发更新的方法和装置 | |
CN113225605A (zh) | 视频播放处理方法、装置、电子设备及存储介质 | |
CN112689197B (zh) | 一种文件格式转换方法、装置、以及计算机存储介质 | |
US7774375B2 (en) | Media foundation topology | |
CN116700838B (zh) | 一种as语言接口函数、音视频处理方法和系统 | |
CN1742338A (zh) | 存储运动画面数据和附加数据的信息存储介质、再现设备及其方法 | |
CN1758736A (zh) | 存储多媒体数据的存储介质和再现运动图像的设备及方法 | |
CN1950813A (zh) | 存储应用程序数据的存储介质及其再现设备和方法 | |
KR20160131827A (ko) | 클라우드 스트리밍 서비스 시스템, 알파 레벨을 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치 | |
CN114222185A (zh) | 视频播放方法、终端设备及存储介质 | |
US20040237072A1 (en) | Data processing system receptive for presentation of data comprising an application program and a multiplatform interpreter, and a platform subsystem arranged for interaction with the multiplatform interpreter and a memory for use with such system for subsystem | |
CN114430487A (zh) | 媒体显示方法及装置和视频处理设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |