一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多媒体数据的时间戳生成方法及装置与流程

2021-10-29 20:35:00 来源:中国专利 TAG:电子信息 装置 生成 多媒体 时间


1.本技术涉及电子信息领域,尤其涉及一种多媒体数据的时间戳生成方法及装置。


背景技术:

2.随着多媒体技术的广泛发展和应用,各种多媒体数据处理技术应运而生。例如,在多摄像头拍摄的场景中,会产生多路视频流,而后需要对多路视频流进行合成,以得到一路视频流进行播放。又例如,将一路或者多路视频流与一路音频流进行合成,得到一路多媒体数据流。
3.但是,将合成后的多媒体流进行播放时,会出现视频无法播放或者花屏的情况,还有可能出现音频与视频中的口型不对应的问题,大大影响了多媒体数据播放的效果。
4.因此,如何提升多媒体数据的播放效果成为亟需解决的问题。


技术实现要素:

5.本技术提供了一种多媒体数据的时间戳生成方法及装置,目的在于提升多媒体数据的播放效果。
6.为了实现上述目的,本技术提供了以下技术方案:
7.第一方面,本技术提供了一种多媒体数据的时间戳生成方法,获取待处理视频帧的器件时间;待处理视频帧为视频流中的任意视频帧;在确定出待处理视频帧不晚于第一视频帧的情况下,修正待处理视频帧的器件时间,使得待处理视频帧满足:晚于第一视频帧,且,早于第二视频帧,第一视频帧为预设视频帧序列中,待处理视频帧的前一视频帧,第二视频帧为预设视频帧序列中,待处理视频帧的后一视频帧;计算待处理视频帧的修正后的器件时间与第一视频帧的器件时间的帧间隔;依据帧间隔生成待处理视频帧的编码时间戳。
8.本技术的实施例提供的多媒体数据的时间戳生成方法,利用视频帧的原始时间戳,也就是器件时间,单调递增的特性,对待处理视频帧乱序的情况进行有效的识别,在识别出乱序后,对视频帧的原始时间戳进行修正,以确保编码时间戳满足单调递增的特性。编码时间戳将视频帧统一到一个时间轴上,对于单路视频流来说,能够修正视频流中乱序的问题,提升播放效果。而对于多路视频流来说,能够提升依据多路编码时间戳对多媒体数据的所做的其他处理的效果。
9.一种可能的实现方式,视频流为多路,待处理视频帧为视频流中任意一路的任意一个视频帧。
10.可见,该方法能够对多路视频流中的视频帧进行处理,将其统一到一个时间轴上,保证了所有的视频帧在这个时间轴上按序排列。
11.一种可能的实现方式,确定待处理视频帧不晚于第一视频帧的过程包括:获取第一视频帧的器件时间与待处理视频帧的器件时间的帧间隔;若帧间隔不大于0,则待处理视频帧不晚于第一视频帧。
12.可见,通过计算帧间隔的方式确定相邻帧的顺序,该方式更为直观简便,容易实现。
13.一种可能的实现方式,将所述待处理视频帧的器件时间累加预设修正值;所述预设修正值为预设范围内的任意值,所述预设范围为:大于待处理视频帧的器件时间与上一视频帧的器件时间的差值绝对值,小于差值绝对值与帧周期之和。
14.可见,以差值绝对值和帧周期确定预设修正值的选择范围,能够确保修正后的待处理视频帧满足条件,解决乱序的问题。
15.一种可能的实现方式,依据帧间隔生成待处理视频帧的编码时间戳,获取上一视频帧的编码时间戳;在上一视频帧的编码时间戳上累加帧间隔,得到待处理视频帧的编码时间戳。
16.可见,以相邻视频帧的原始时间戳差值作为编码时间戳之间的帧间隔,既实现了相邻帧的编码时间戳之间存在合理的间隔的需求,又使得视频帧的原始时间戳的间隔特性传递到了编码时间戳上,所以在一定程度上保留了视频帧的原始时间戳的原有特性,提升了播放效果的同时保证了利用编码时间戳进行后续处理时的稳定性。
17.一种可能的实现方式,获取上一视频帧的编码时间戳包括:若在预设视频帧序列中,待处理视频帧之前的视频帧有且仅有上一视频帧,则上一视频帧的编码时间戳为一预先设定值。
18.可见,本实施例中的视频帧的编码时间戳是在上一个视频帧的编码时间戳上累加得到的,而当上一个视频帧就是第一个视频帧的时候,它的编码时间戳可以是预先设定的值,以便于进行后续的计算。
19.一种可能的实现方式,预先设定值为上一视频帧的器件时间。
20.可见,以待处理视频帧序列中第一个视频帧的时间戳作为其编码时间戳也能实现在一定程度上保留视频帧的时间戳的原有特性的目的。
21.一种可能的实现方式,获取此时从音频流中采样到的音频帧的大小;依据音频帧的大小生成采样到的音频帧的编码时间戳。
22.可见,本实施例中,依据音频帧的大小生成采样到的音频帧的编码时间戳的方式,能够解决其他方案中因没有考虑音频帧大小发生变化而导致的,无法与视频保持同步的问题。
23.一种可能的实现方式,还包括:获取此时采样到的音频帧的器件时间与上一采样到的音频帧的器件时间的帧间隔;确定帧间隔包含的采样周期的个数m,m为不小于1的正整数;若m不小于2,则确定时间戳补偿值为,所述时间补偿值为(m

1)个采样周期;对此时采集到的音频帧的编码时间戳按照时间补偿值进行补偿。
24.可见,本实施例中,通过设定的帧间隔和采样周期的关系,以采样周期作为时间补偿值的单位量,能够保证相邻的视频帧的编码时间戳的差值在一个采样周期内,这样保证和前后视频帧的编码时间戳之间的距离比较恰当,保证音频播放过程的平稳和顺畅。
25.第二方面,本技术还提供了一种电子设备,该电子设备包括:一个或多个处理器、存储器和触摸屏;存储器用于存储一个或多个程序;该一个或多个处理器用于运行一个或多个程序,使得电子设备执行第一方面或第一方面任一种可能的实现方式所述的光斑显示方法。
26.第三方面,本技术还提供了一种计算机可读存储介质,其上存储有指令,当所述指令在电子设备上运行时,使得电子设备执行第一方面或第一方面任一种可能的实现方式所述的多媒体数据的时间戳生成方法。
27.第四方面,本技术还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行如上述第一方面或第一方面的可能的实现方式中任一所述的多媒体数据的时间戳生成方法。
28.应当理解的是,本技术中对技术特征、技术方案、有益效果或类似语言的描述并不是暗示在任意的单个实施例中可以实现所有的特点和优点。相反,可以理解的是对于特征或有益效果的描述意味着在至少一个实施例中包括特定的技术特征、技术方案或有益效果。因此,本说明书中对于技术特征、技术方案或有益效果的描述并不一定是指相同的实施例。进而,还可以任何适当的方式组合本实施例中所描述的技术特征、技术方案和有益效果。本领域技术人员将会理解,无需特定实施例的一个或多个特定的技术特征、技术方案或有益效果即可实现实施例。在其他实施例中,还可在没有体现所有实施例的特定实施例中识别出额外的技术特征和有益效果。
附图说明
29.图1为本技术实施例提供的电子设备的一种示例性结构图;
30.图2为本技术实施例提供的终端架构的一种的示意图;
31.图3为本技术实施例提供的一种多路多媒体数据的处理流程图;
32.图4为本技术实施例提供的一种多媒体流的传输流程的示意图;
33.图5为本技术实施例提供的另一种多路多媒体数据的处理流程图;
34.图6a

6g为本技术实施例提供的双摄场景下的用户操作示意图;
35.图7为本技术实施例提供的一种多媒体数据的时间戳生成方法的流程图;
36.图8为本技术实施例提供的用户调整录制速度操作示意图;
37.图9为本技术实施例提供的双摄场景下视频帧不均匀上报的示意图;
38.图10为本技术实施例提供的另一种多媒体数据的时间戳生成方法的流程图;
39.图11为本技术实施例提供的一种多媒体数据的时间戳生成示意图;
40.图12为本技术实施例提供的音频帧丢帧示意图;
41.图13为本技术实施例提供的音频帧丢帧情况下编码时间戳的生成示意图;
42.图14为本技术实施例提供的另一种多媒体数据的时间戳生成方法的流程图。
具体实施方式
43.本技术说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
44.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
45.申请人在研究的过程中发现,将多路多媒体数据进行合并后,合并得到的多媒体数据在进行播放时效果较差,主要存在以下问题:
46.1、不同路视频流中的视频帧时间戳生成时间不统一,所以每路视频帧的时间戳的生成方式也并不一致,可能会存在不同路视频帧的时间戳相同,则会导致合并后的视频流在进行播放时因多帧数据重叠导致花屏。
47.2、不同路视频流中的视频帧时间戳可能出现相同的情况,还有可能导致视频叠加后的帧的长度变大,无法在设定的播放时长下播放,导致播放失败。
48.3、因为多路多媒体数据的时间戳没有关联,所以在将音频流和视频流进行合并的时候,也会出现画面和声音无法对应的问题。
49.为解决以上问题,本技术公开了多媒体数据的时间戳生成方法,该生成方法运行在需要对多媒体数据进行处理的电子设备上,或者,为其他终端或服务器提供按照该方法生成的时间戳,以便于其他终端或服务器能够执行某项功能的电子设备上。执行该方法的可以是电子设备上的独立算法库,在其他应用有需求的情况下,调用该算法库完成时间戳生成流程。也可以是以功能模块集成到电子设备的应用程序中,例如,电子设备的相机应用,与相机应用中其他功能模块配合工作。
50.本技术实施例公开了一种电子设备,在一些实施例中,该电子设备可以是手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(ultra

mobile personal computer,umpc)、手持计算机、上网本、个人数字助理(personal digital assistant,pda)、可穿戴电子设备和智能手表等设备。
51.电子设备的示例性结构可以如图1所示。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块110,电源管理模块111,电池112,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏191(柔性屏幕),以及用户标识模块(subscriber identification module,sim)卡接口195等。传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l和骨传导传感器180m等。
52.可以理解的是,本技术实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
53.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural

network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的
控制。
54.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
55.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter

integrated circuit,i2c)接口,集成电路内置音频(inter

integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general

purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
56.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器180k,充电器,闪光灯,摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现电子设备100的触摸功能。i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过i2s接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
57.pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过pcm总线接口耦合。在一些实施例中,音频模块170也可以通过pcm接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。i2s接口和pcm接口都可以用于音频通信。
58.uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过uart接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过uart接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
59.mipi接口可以被用于连接处理器110与柔性屏幕191,摄像头193等外围器件。mipi接口包括摄像头串行接口(camera serial interface,csi),显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和摄像头193通过csi接口通信,实现电子设备100的拍摄功能。处理器110和柔性屏幕191通过dsi接口通信,实现电子设备100的显示功能。
60.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,柔性屏幕191,无线通信模块160,音频模块170,传感器模块180等。gpio接口还可以被配置为i2c接口,i2s接口,uart接口,mipi接口等。
61.usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
62.可以理解的是,本技术实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
63.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
64.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,柔性屏幕191,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
65.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
66.天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
67.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/1g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
68.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过柔性屏幕191显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
69.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi

fi)网络),蓝牙
(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
70.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time

division code division multiple access,td

scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi

zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
71.电子设备100通过gpu,柔性屏幕191,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接柔性屏幕191和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。在本技术实施例中,柔性屏幕191中可包括显示器和触控器件(touch panel,tp)。显示器用于向用户输出显示内容,触控器件用于接收用户在柔性屏幕191上输入的触摸事件。
72.电子设备100可以通过isp,摄像头193,视频编解码器,gpu,柔性屏幕191以及应用处理器等实现拍摄功能。
73.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
74.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal

oxide

semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的正整数。
75.本技术实施例中,摄像头193可以用于:在用户通话过程中捕获用户的耳朵的图像,根据耳朵的图像信息确定用户的耳朵与摄像头193的距离。比如,摄像头193可以捕获并保存用户的耳朵紧靠摄像头193时耳朵的图像;并比较通话过程中捕获的耳朵的图像,与用户的耳朵紧靠摄像头193时耳朵的图像;根据通话过程中捕获的耳朵的图像,与用户的耳朵紧靠摄像头193时耳朵的图像的比例,确定通话过程中用户的耳朵与摄像头193的距离。
76.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
77.视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg1等。
78.npu为神经网络(neural

network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
79.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
80.内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
81.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
82.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
83.扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170a收听音乐,或收听免提通话。并且,扬声器170a内含磁铁。
84.受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170b靠近人耳接听语音。
85.麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c。电子设备100可以设置至少一个麦克风170c。在另一些实施例中,电子设备100可以设置两个麦克风170c,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170c,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
86.耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,
ctia)标准接口。
87.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于柔性屏幕191。压力传感器180a的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180a,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于柔性屏幕191,电子设备100根据压力传感器180a检测触摸操作强度。电子设备100也可以根据压力传感器180a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
88.陀螺仪传感器180b可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180b确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180b可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180b检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180b还可以用于导航,体感游戏场景。
89.气压传感器180c用于测量气压。在一些实施例中,电子设备100通过气压传感器180c测得的气压值计算海拔高度,辅助定位和导航。
90.磁传感器180d包括霍尔传感器、磁力计等。霍尔传感器可以检测磁场方向;磁力计用于测量磁场的大小和方向。磁力计可以测量环境磁场强度,比如,可以利用磁力计测得磁场强度进而得到磁力计的载体的方位角信息。
91.加速度传感器180e可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。在一些实施例中,电子设备100可以通过重力的大小及方向确定电子设备100的姿态(即倾斜角度)。比如,具有折叠屏的电子设备100沿着转轴折叠成一定角度后,电子设备100被分成两个部分。电子设备100的两个部分分别安装有加速度传感器180e。电子设备100分别根据两个部分的加速度传感器180e检测出的重力的大小及方向,确定两个部分的倾斜角度,从而确定电子设备100的折叠角度α。
92.距离传感器180f,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180f测距以实现快速对焦。
93.本技术实施例中,距离传感器180f可以用于测量通话过程中,用户的耳朵与距离传感器180f之间的距离,或者用户的嘴部与距离传感器180f之间的距离。
94.接近光传感器180g可以包括例如发光二极管(led)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180g检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180g也可用于皮套模式,口袋模式自动解锁与锁屏。
95.环境光传感器180l用于感知环境光亮度。电子设备100可以根据感知的环境光亮
度自适应调节柔性屏幕191亮度。环境光传感器180l也可用于拍照时自动调节白平衡。环境光传感器180l还可以与接近光传感器180g配合,检测电子设备100是否在口袋里,以防误触。
96.电子设备100还可以根据感知的环境光亮度确定周围是否有物体遮挡,以及遮挡物与电子设备100的距离。比如,电子设备100可以预设,感知的环境光亮度,与遮挡物和电子设备100的距离,之间的对应关系;并根据感知的环境光亮度确定遮挡物和电子设备100的距离。本技术实施例中,环境光传感器180l可以用于测量通话过程中,用户的耳朵与环境光传感器180l之间的距离,或者用户的嘴部与环境光传感器180l之间的距离。
97.指纹传感器180h用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
98.温度传感器180j用于检测温度。在一些实施例中,电子设备100利用温度传感器180j检测的温度,执行温度处理策略。例如,当温度传感器180j上报的温度超过阈值,电子设备100执行降低位于温度传感器180j附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
99.触摸传感器180k,也称“触控面板”。触摸传感器180k可以设置于柔性屏幕191,由触摸传感器180k与柔性屏幕191组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过柔性屏幕191提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于电子设备100的表面,与柔性屏幕191所处的位置不同。
100.骨传导传感器180m可以获取振动信号。在一些实施例中,骨传导传感器180m可以获取人体声部振动骨块的振动信号。骨传导传感器180m也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180m也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于骨传导传感器180m获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于骨传导传感器180m获取的血压跳动信号解析心率信息,实现心率检测功能。
101.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
102.马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于柔性屏幕191不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。马达191可以为线性马达。
103.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
104.sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n
为大于1的正整数。sim卡接口195可以支持nano sim卡,micro sim卡,sim卡等。同一个sim卡接口195可以同时插入多张卡。多张卡的类型可以相同,也可以不同。sim卡接口195也可以兼容不同类型的sim卡。sim卡接口195也可以兼容外部存储卡。电子设备100通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用esim,即:嵌入式sim卡。esim卡可以嵌在电子设备100中,不能和电子设备100分离。
105.另外,在上述部件之上,运行有操作系统。例如苹果公司所开发的ios操作系统,谷歌公司所开发的android开源操作系统,微软公司所开发的windows操作系统和华为开发的鸿蒙操作系统(harmony os)等。在该操作系统上可以安装运行应用程序。
106.本示例中的电子设备以搭载android系统的终端为例,该终端能够按照统一的方式为多路多媒体数据生成时间戳,而这个时间戳是为了将多媒体数据统一到一个时间轴上而生成的新的时间戳,为了方便表述,以下简称编码时间戳。多媒体数据在采集时的时间戳也就是器件时间hw,以下简称原始时间戳。
107.本示例中的终端架构如图2所示,包括:
108.hw(hardware,硬件)层,承载终端系统中电子,机械和光电元件等组成的各种物理装置。这些物理装置按系统结构的要求构成一个有机整体为终端软件运行提供物质基础,以cameraapp为例涉及到的物理装置包括传感器,麦克风,马达,陀螺仪等。
109.hal(hardware abstraction layer,硬件抽象层)android的硬件抽象层,是对linux内核驱动程序的封装,向上提供接口,屏蔽底层硬件的实现细节。
110.fwk(framework,应用程序框架层),支持应用层中的程序的运行的框架层。
111.应用层,包括一系列应用程序包。
112.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
113.本示例中的多路多媒体数据的时间戳生成方法通过音视频时间戳生成模块来实现。音视频时间戳生成模块包括音频轨处理单元201和视频轨处理单元202,如图2中所示。音视频时间戳生成模块可以与现有功能模块集成,例如,集成到相机camera app中,也可以被封装为一个独立的算法库,可以被其他app调用,以配合其他app实现需要的功能。
114.本示例中终端具有前后两个摄像头,两个摄像头分别进行视频采集,则可得到两个视频流,前置视频流video frame1和后置视频流video frame2。并且,终端的麦克风会采集一路音频流audio frame。在本示例中,视频流和音频流采集的过程中,就将采集到的数据送到音视频时间戳生成模块生成编码时间戳,然后camera app中的多摄编码模块使用编码时间戳进行多路多媒体数据的合并。
115.本示例以生成的编码时间戳应用于多路多媒体数据合并为例,对多路多媒体数据的整体处理流程进行介绍,如图3所示。
116.麦克风mic410采集音频流,将音频流传输至麦克风的接口mic api 320,多媒体应用程序框架media fwk330通过mic api 320读取到音频流,并将音频流传输至应用层的camera app370。因为是双摄终端,相机传感器有两个,分别采集视频流传输至传感器接口sensorapi350,由于视频流有两路,为了能够实现两路视频流尽可能的同时被处理,缩减两者间的处理时间间隔,争取最大两路数据的同步,接口被预先定义为,交替上报两个传感器
采集的视频帧至相机应用程序架构camera fwk360,经由camera fwk360发送至camera app370。camera app370中的多摄模块调用音视频时间戳生成模块,同时对音频流和视频流中的时间戳进行处理,处理后的音视频流分别送入各自的缓存器buffer380,做一些预处理,为编码做准备,然后经由各自的编码器390进行编码,最后在音视频合成器合并为mp4格式的数据流。
117.图4是目前广泛采用的多媒体流的传输流程的示意图,可以看出,前置采集通路311将前置摄像头采集的前置视频流video frame1直接传输至opengl(open graphics library,开放图形库)321,opengl321是用于渲染2d、3d矢量图形的跨语言、跨平台的应用程序编程接口,其合并了hal和fwk这两个层中的功能实现,功能包括图形绘图,图像渲染,合成等。后置流采集通路312将后置摄像头采集的后置视频流video frame2也直接传输至opengl321,两路视频流在opengl321中渲染以及合并,得到一路视频流,并以视频帧队列的形式进行储存,合并后的视频流一方面通过显示预览应用向用户进行显示预览,一方面存入视频缓存stream buffer481,在这里可以对合并后的视频流进行预处理,最后,视频编码器391对视频缓存中的视频流进行编码。
118.音频采集通路311将采集的音频流传输至音频缓存audio buffer382,在这里也可以对音频流进行预处理,音频编码器392对音频流进行编码。
119.音视频合成器对编码后的视频流和编码后的音频流进行合成,得到mp4格式的数据流。
120.对比图3和图4可以看出,本示例中camera app中的多摄编码模块能够调用音视频帧时间戳生成模块,在多媒体数据进行合并、编码之前,为多媒体数据生成编码时间戳,并以编码时间戳参与到数据在进行后续处理时。
121.图5是从数据传输层面对本示例中的多路多媒体数据的处理流程进行的展示。video frame1和video frame2,是两个摄像头采集到的视频流,在音视频帧时间戳生成模块510中,视频轨处理单元为两路视频流中的视频帧生成编码时间戳。视频流携带编码时间戳进入视频预览或编码环路中,在这里,两路视频流分别存储在不同的音视频帧队列520,然后合并为一路视频队列,合并后的视频队列一方面进行显示预览,一方面传递到视频帧处理模块530中,在视频处理模块531中进行预处理后,输入到编码器540,视频编码器641对其进行编码,最后传输至合并处理模块550。
122.audio frame是本示例中的音频流,在音视频帧时间戳处理模块510中,音频轨处理单元为音频流的音频帧生成编码时间戳。处理后的音频流也进入音频编码环路,在这里,音视频帧处理模块530将音频流进行预处理后,送入音频编码器542进行编码,最后传输至合并处理模块550。
123.最后,合并处理模块将编码后的视频流和音频流合并为mp4格式的多媒体数据,以用于回放。
124.音视频时间戳生成模块与终端架构中的其他单元或模块之间的关联已经进行了详细介绍,接下来以示例的形式,对音视频时间戳生成模块是如何被调用,又是如何生成编码时间戳进行阐述。
125.仍然延续前面的双摄场景,用户在该场景下,如果想要录制视频,则首先如图6a所示,在应用界面启动camera app601的示意图,app启动后进入图6b所示相机界面,此时app
默认开启后置摄像头,界面上的预设区域602显示有相机可选功能选项,录像、拍照和双景。用户根据自身需求,选择双景模式,并点击设置图标303,进入对双景模式进行设置的界面,如图6c所示,区域602中显示有:双后置录像模式、双前置录像模式、前置后置录像模式和双后置一前置录像模式等选项,用户根据需求,前置后置录像模式,则触发app执行前后置摄像头同时录制的程序,如图6d所示,默认状态下,前置采集图像显示区域610和后置采集图像显示区域620大小相同且两个区域将界面显示区上下等分,后置采集图像位于上半部分。用户可根据需求,调整两个区域的大小和现实位置,例如,向上或向下拖动两个区域中的分割线605,或通过点击两个区域中的上下调节图标604调整区域大小。如图6d所示,用户向下拖动分割线605,将后置采集图像显示区域调大,而前置采集图像显示区域则自动调小,调整后的效果如图6e所示。除此调整方式外,还可通过显示在两个显示区域内的放大图标606,触发app切换至实现画中画模式。如图6f所示,点击后置采集图像显示区域内放大图标606,界面切换至图6g所示,后置采集图像显示区域全屏显示,前置采集图像显示区域在显示界面的一个预定大小的区域内同时显示,以上调整准备工作完成,则可点击界面中的录制图标607,启动录制。在某些版本的camera app,界面中还包括暂停和继续图标,以实现录制过程中暂停,以及启动后接连暂停时刻继续录制的功能。
126.当然,也可以选择先进行录制,在录制过程中根据需要,参考上述调整方式进行调整。
127.在启动录制后,双摄模块开始运行,摄像头和麦克风开始按照设定的工作模式采集视频流和音频流,且两个采集动作发生在同一时刻,从而使得音频流和视频流的起始时刻相同,从而保证这两类数据被同步到一个时间轴上时,起点相同。双摄模块调用音视频帧处理模块开始工作。
128.在本示例公开的多路多媒体数据的时间戳生成方法中,虽然一次录制可以同时得到视频流和音频流,但是由于两个类型的数据流特性不同,所以在生成时间戳时,两者同时开始,但是独立进行,也就是说,在设定相同的起始时刻后,整个流程分为两个并行分支,一个分支是对视频帧的原始时间戳的处理,另一分支是对音频帧的原始时间戳的处理。
129.该方法在生成时间戳时,可以预先设定一个判断的流程,若判断出是视频帧,则调用视频轨处理单元对视频帧的原始时间戳处理,如果是音频帧,则调用音频轨处理单元对音频帧的原始时间戳处理。
130.所以,我们可以从确定出是哪种类型的多媒体数据之后,对两个分支的处理流程分别进行说明。当然,在其他的示例中,也可能仅存在音频数据流,或视频数据流,则仅需执行该方法中的一个分支。
131.首先从仅包含视频流或识别出要处理的数据类型是视频帧的情况入手,对视频帧的编码时间戳的生成方法进行说明。
132.在本示例中的双摄场景下,预先设定的hal机制定义了两个摄像头采集的视频帧需要依次交替上传,例如,前置采集先上传,后置采集后上传,则该方法在执行时,先为前置摄像头采集的第一个视频帧生成编码时间戳,接下来为后置摄像头采集的第一个视频帧生成编码时间戳,因为生成的编码时间戳是单调递增的,那么前置摄像头采集的第二个视频生成的编码时间戳,应该在后置摄像头采集的视频流中的第一个视频帧的编码时间戳之后,利用这种两路交替处理,且生成的编码时间戳满足单调递增的思路,将两路视频流的编
码时间戳统一到了一个基准上。
133.在本示例中,先设定一个初始时间戳,作为第一个视频帧的编码时间戳。然后确定一个增量,将此增量累加到第一个视频帧的编码时间戳上,从而得到第二个视频帧的编码时间戳,以此类推,最终得到每个视频帧的编码时间戳。
134.该初始时间戳可以是一个预先设定的值,也可以是第一个视频帧的原始时间戳。
135.按照该思路为每一个视频帧生成编码时间戳的过程都可以概括为图7所示方法,包括:
136.s710:获取第n个视频帧的时间戳。
137.n大于等于1。第n个视频帧可能是两路视频流中任意一路中的任意一个视频帧,而n代表第n次获取到,代表了视频帧被处理的顺序,而非视频帧本身的属性。因为预先设定的hal机制定义了两个摄像头采集的视频帧需要依次交替处理,也就是说,如果第n个视频帧是前置视频流中的视频帧,那么理论上来讲,第n

1个视频帧是后置视频流中的视频帧。由于该传输机制的存在,使得这两路要被处理的视频流中的视频帧在逻辑上组成了特定的顺序,或者可以说,组成了一个逻辑上的待处理视频帧队列,也可称为预设视频帧序列。而n和n

1则是在预设视频帧序列中相邻的两个视频帧。
138.s720:计算第n个视频帧的时间戳与第n

1个视频帧的时间戳的帧间隔。
139.在本实施例中,将第n个视频帧的原始时间戳与n

1个视频帧的原始时间戳之间的帧间隔作为增量。
140.在另一实现方式中,该增量还可以是一个预先设定好的值,例如1/2个帧周期。
141.s730:将第n

1个视频帧的编码时间戳累加帧间隔,将累加结果作为第n个视频帧的编码时间戳。
142.若n为1,则第1个视频帧的原始时间戳就是其编码时间戳,若n为2,则第2个视频帧的时间戳为,第1视频帧编码时间戳累加第2个视频帧的原始时间戳和第1个视频帧的原始时间戳的差值,若n为3,则其编码时间戳为第2个视频帧的编码时间戳,累加第3个视频的时间戳和第2个视频帧的时间戳的差值,而因为第2个视频帧的编码时间戳等于第1视频帧编码时间戳累加第2个视频帧的原始时间戳和第1个视频帧的原始时间戳差值,而第1个视频帧的编码时间戳为其原始时间戳,则可发现规律,该规律以一个公式来进行示例如下:
[0143][0144]
其中pts
vn
表示第n个视频帧的编码时间戳,t
n
表示第n个视频帧的原始时间戳,t
n
‑1表示第n

1个视频帧的原始时间戳。
[0145]
在待处理视频帧序列中的视频帧都得到编码时间戳后,可以发现,虽然此时视频帧还未进行合并处理,但是他们的编码时间戳已经满足了作为一个视频帧序列的条件,所以处理后的视频帧在逻辑已经能够组成一个新的视频帧序列,这个序列可以称为结果序列。
[0146]
该方法按照统一的思路为两路视频流生成了编码时间戳,将两路视频流的时间戳统一到了一个基准上,避免了各路视频帧的时间戳之间没有关联,影响合成后多媒体数据播放效果的问题。
[0147]
在本示例中,在前一视频帧的编码时间戳上累加一个增量的方式,一方面满足了
时间戳的单调递增特性,另一方面为新的视频流中的相邻帧设定合理的帧间隔。
[0148]
而本示例中将待处理视频帧序列中,相邻视频帧的原始时间戳差值作为编码时间戳之间的帧间隔,既实现了相邻帧的编码时间戳之间存在合理的间隔的需求,又使得视频帧原始时间戳的间隔的特性传递到了编码时间戳上,所以在一定程度上保留了视频帧的原始时间戳的原有特性,提升了播放效果的同时保证了利用编码时间戳进行后续处理时的稳定性。
[0149]
在本示例中,以待处理视频帧序列中第一个视频帧的时间戳作为其编码时间戳,也能实现在一定程度上保留视频帧的时间戳的原有特性的目的。
[0150]
在另一种实现方式中,视频轨处理单元可以将待处理视频帧队列中第一个视频帧的编码时间戳直接确定为t1,然后第二个视频帧生成编码时间戳确定为t2,因为编码时间戳为单调递增,所以且只需满足,t2>t1即可,并依此规律依次设定后续视频帧的编码时间戳。该方法用一种较为简单的思路,将两路视频帧的时间戳重新进行设定,并统一到一个时间轴上,所以能够在一定程度上解决播放效果差的问题。只是,由于在某些情况下,视频帧的长度可能会发生变化,如果长度变大,则需要更长的时间播放,就会占用到和下一个帧之间的间隔时间,如果加上帧间隔也不足以满足播放完这个视频帧,而此时已经到了下一个视频帧的编码时间戳,则会造成播放失败或画面重叠花屏的情况,如果增量值保持不变的话,则有可能出现帧的重叠,影响视频播放效果。
[0151]
对比上述两种方式可以看出,一种虽计算略显复杂,但是编码时间戳之间的增量值动态变化,容错性更高,其可靠性更强,而另一种虽计算简单,但是容错性较差,可靠性较低。以上两种方式可根据实际的需求或硬件设备的处理能力而进行选择。
[0152]
上述示例中以两路视频流数据为例,对生成视频帧时间戳的方式进行了说明,但是并非限定该方法仅能应用于两路视频帧的处理,如果三路,五路或者更多路数据需要去生成编码时间戳,都可以按照该方式进行处理。
[0153]
即便不是多路视频处理的场景,作为单路视频流,如果遇到需要去改变视频流原始时间戳的情况,也可使用上述方式得到编码时间戳。
[0154]
在实际应用中,申请人发现,图7中所示方法虽然能够降低多媒体数据流播放效果差或者无法播放的情况出现的概率,但是无法播放的问题仍然偶有发生。而导致无法播放的原因在于,播放时间错误,进一步分析发现,是视频流中的编码时间戳出现了倒退,也就是播放过程中出现了相对此时播放时间之前的时间戳,所以造成时间混乱,导致无法播放。
[0155]
对此问题进行深入研究发现,先采集的视频帧会先被上传至视频缓存中,后续也先被处理。但是由于采集设备性能或传输故障或其他原因,会存在某个视频帧先被采集,但是发送至视频缓存的顺序晚于后采集的视频帧,而在本方案中,视频帧时间戳生成模块,根据存在视频缓存中的顺序,获取原始时间戳处理得到视频帧的编码时间戳,如果此时处理的视频帧的原始时间戳早于上一次处理的视频帧的原始时间戳,两者之间的差值为负,则按照图7所示流程生成视频帧的编码时间戳时,会出现此时生成的视频帧的编码时间戳在上一次生成的视频帧的编码时间戳之前,也就是,编码时间戳发生了倒退,为后续视频帧的合成编码埋下隐患,最终影响到合成后视频的播放效果。
[0156]
以上分析出的视频帧先被采集后被存储的现象也可能出现在单摄像头采集过程中。如果设备性能较差,导致数据传输延误,或者用户拍摄过程中,调整了视频拍摄速度,快
速或者慢速,都有可能引发该问题。如图8所示,用户在录制过程中通过界面上的倍速调整控件调整录制速度,例如2倍速,则向右滑动控件中间的滑块到2x标记对应的位置,实现采集速度调整到2倍速,设置成功后,相机将以2倍速的速度录制视频。
[0157]
因为同一设备多摄像头采集可以看作是多个单摄像头同时执行录制任务,则以上所说因为设备系能,传输不稳定或者用户录制过程中调整录制速度而导致的视频帧先被采集后被存储的现象,同样也会出现在多摄采集的情况下。即便在本示例中的双摄场景下,预先设定的hal机制已经定义了两个摄像头采集的视频帧需要交替上传的机制,但是其无法避免采集设备性能较差或者传输过程不稳定而导致的视频帧顺序错误的问题,在该场景下发生视频帧顺序错误的情况被称之为视频帧不均匀上报的现象。
[0158]
也就是说,无论是单路视频流,还是多路视频流,都可能存在视频帧顺序错误的问题。
[0159]
结合图9中以双摄场景下视频帧不均匀上报的情况为例,对视频帧顺序错误的情况进行举例说明。在此示例中,前置视频流video frame1中的视频帧以实线表示,包括视频帧t11,t12,t13和t14,后置视频流video frame1中的视频帧以虚线表示,包括视频帧t21,t22和t23,每个视频帧对应的数字为这个视频帧的时间戳,相邻两帧间的帧间隔,以括号引出的数值为例,实线括号代表区分视频流的情况下,相邻帧的帧间隔,虚线括号代表不区分视频流的情况下,相邻帧的帧间隔。
[0160]
理论情况下,按照hal中设定的传输机制,两路视频流中的视频帧顺序上传,视频帧的原始时间戳是随时间单调递增的,后一视频帧原始时间戳大于前一视原始频帧时间戳。但是如图中所示t12与t21的时间戳之差为负数,也就是说,t12与t21的帧间隔为负数。t13与t22的时间戳之差也为负数,也就是说,t13与t22的帧间隔也为负数。
[0161]
如果按照上述图7所示出流程,以t12与t21为例,因为t12与t21之间的差值为负值,帧间隔为负值,也就是说t12的编码时间戳等于t21的编码时间戳和一个负值相加,则会出现t12的编码时间戳小于t21的编码时间戳,也就意味着,t12的编码时间戳早于t21的编码时间戳,则可以认为此时出现了编码时间戳倒退的情况,那么该情况就会影响到后续合并后的视频流的过程,进而影响合并后的视频流播放时的效果,仍有可能造成视频无法播放,或者花屏。
[0162]
并且在分析过程中还发现,视频帧顺序与采集顺序不一致的现象还会造成编码时间戳重叠的情况,该情况也有可能造成视频无法播放,或者花屏。
[0163]
编码时间戳倒退和重叠等视频帧顺序错误的问题可归纳为视频帧乱序,而为了解决时间戳乱序的问题,申请人在图7所示方法的基础上做出了改进。
[0164]
申请人认为,若要解决编码时间戳乱序的问题,则需准确及时的发现引发编码时间戳乱序现象的原因,也就是,要及时发现设备上传的视频帧顺序与采集顺序不一致的现象。基于上述的分析研究可以发现,该现象的一个客观表现是编码时间戳倒退时,帧间隔为负值,以及编码时间戳重叠时,帧间隔为0。所以时间戳乱序的问题的客观表现为相邻帧间隔不大于0。在本示例中,一旦在视频编码时间戳生成方法执行的过程中,监测到帧间隔不大于0的情况,则意味着出现时间戳乱序的情况。
[0165]
为了解决时间戳乱序的问题,可以对视频帧的时间戳进行修正,使得修正后的视频帧的时间戳不会再导致编码时间戳倒退的问题。
[0166]
本示例中多媒体数据时间戳生成方法的流程可参考图10,包括:
[0167]
s1010:获取第n个视频帧的原始时间戳。
[0168]
同样,第n个视频帧可能是多摄场景下多路视频流中任意一路中的任意一个视频帧,也可以是单摄场景下采集到单路视频流中的任意一个视频帧。而n代表第n次获取到,代表了视频帧被处理的顺序,而非视频帧本身的属性。
[0169]
如果是多摄场景,预先设定的传输机制的存在,使得多路要被处理的视频流中的视频帧在逻辑上组成了特定的顺序,或者可以说,组成了一个逻辑上的待处理视频帧队列。而n和n

1则是在待处理视频帧队列中相邻的两个视频帧。
[0170]
如果是单摄场景,则此处n和n

1就是视频帧队列中相邻的两个视频帧。
[0171]
s1020:计算第n个视频帧的原始时间戳与第n

1个频帧的原始时间戳的帧间隔。
[0172]
s1030:如果帧间隔不大于0,则对第n个视频帧的原始时间戳进行修正,并计算第n个视频帧的修正后的原始时间戳与第n

1个视频帧的原始时间戳的帧间隔。
[0173]
通过判断帧间隔是否不大于0,来判断第n个视频帧的原始时间戳是否不晚于第n

1个视频帧的原始时间戳,来证明是否发生乱序的问题。
[0174]
s1040:将第n

1个视频帧的编码时间戳累加所述帧间隔的结果,作为第n个视频帧的编码时间戳。
[0175]
在一种实现方式中,对第n个视频帧的原始时间戳进行修正的方式可以为,将第n

1个视频帧的原始时间戳累加第一修正值,作为视频帧的修正时间戳,该第一修正值可以为1/n个帧周期,n为大于1的正整数。如,1/2个采样帧周期t
f
,即,
[0176][0177]
1/2个帧周期只是作为举例说明,并非限定。
[0178]
在另一种实现方式中,对第n个视频帧的原始时间戳进行修正的方式为,在视频帧的原始时间戳上累加第二修正值,该第二修正值的确定方式为:计算第n个视频帧的原始时间戳和第n

1个视频帧的原始时间戳的绝对差值,即,绝对帧间隔,并在该绝对帧间隔基础上再累加1/n个帧周期,累计结果作为第二修正值,n为大于1的正整数。使得视频帧的时间戳累加该第二修正值后,大于第n

1个视频帧的原始时间戳,且小于第n 1个视频帧的原始时间戳,所以第二修正值为绝对差值与绝对差值 帧周期t之间数值中的任意值。
[0179]
以上实现方式中所示的视频帧的原始时间戳修正方式仅仅是作为举例,并不限定只能用以上述方式进行修正。凡是能够保证视频帧的修正后的原始时间戳满足预定条件都可行。该预定条件可表述为:修正后的原始时间戳在大于第n

1个视频帧的原始时间戳,且,小于第n 1个视频帧的原始时间戳范围内;或者说,修正后的原始时间戳与第n

1个视频帧的原始时间戳的帧间隔大于0,且,第n 1个视频帧与修正后的原始时间戳的帧间隔大于0;或者说,修正后的原始时间戳使得第n个视频帧晚于第n

1个视频帧,且,早于第n 1个视频帧。
[0180]
s1050:如果帧间隔大于0,将第n

1个视频帧的编码时间戳累加所述帧间隔的结果,作为第n个视频帧的编码时间戳。
[0181]
本示例中该步骤与图7中所示计算编码时间戳的方式相同。
[0182]
本示例中提出的多媒体数据的时间戳生成方法中,添加了一个判断步骤,以判别
此时第n个视频帧是否不晚于第n

1个视频帧,根据判断结果识别出视频帧的时间戳乱序的情况,从而对视频帧的原始时间戳进行修正,以此解决编码时间戳倒退现象或重合的问题,进一步降低了编码时间戳出现乱序的概率,以进一步提升合并后视频播放效果。
[0183]
综上可以看出,本技术的实施例提供的多媒体数据的时间戳生成方法,利用视频帧的原始时间戳单调递增的特性,对待处理视频帧乱序的情况进行有效的识别和解决,确保编码时间戳满足单调递增的特性。编码时间戳将视频帧统一到一个时间轴上,对于单路视频流来说,能够修正视频流中乱序的问题,提升播放效果。而对于多路视频流来说,能够提升依据多路编码时间戳对多媒体数据的所做的其他处理的效果,例如将多路多媒体数据进行合并后的数据播放时的播放效果。
[0184]
本示例公开的通过修正视频帧原始时间戳的方式来解决视频帧乱序带来的问题的思路,并不仅仅局限于如图7中计算编码时间戳的方式。凡是利用处理过程中相邻的视频帧之间原始时间戳间隔来生成编码时间戳的方式,都能够与图10所示方法配合使用。在此仅以示例的方式,将其与图7所示流程相结合而进行的说明。
[0185]
接下来,延续前面的双摄场景,我们从仅包含音频流或识别出要处理的数据类型是音频帧的情况入手,对音频帧的编码时间戳的生成方法进行说明。
[0186]
如图5所示架构可以看出,音频采集通道从音频缓存audio record中按照预定采样率r对音频帧进行采样,采样率即采样频率,概念就是一秒钟采样多少次,例如8khz,48khz等,这一参数值预先设定,在采集过程中,一次采样得到的音频帧的大小,简称音频帧大小,其数值通常也是预先设定。
[0187]
在本示例中,音频帧和视频帧同步采集,且同时结束,所以时长相同,且,音频帧只有一路,则可以无需再对音频帧的时间戳进行处理,可以录制开始时刻ts作为基准,直接将音频帧的原始时间戳也就是器件时间t
hw
作为音频帧的编码时间戳,如图11所示。
[0188]
但是,实际使用中发现,以上方式存在较大误差,而这些误差足以导致音频帧和视频帧无法同步,影响播放效果。为了提供更好的音频帧编码时间戳的生成方法,申请人继续研究发现,音频流的长度和采样得到的音频帧的数量相关,因为设定了音频帧的大小,则可以根据音频帧的大小和采样次数得到音频流的长度,也就是音频流的播放时长。
[0189]
基于以上内容,申请人经过研究,提出了一种利用音频缓存大小,也就是音频帧大小生成编码时间戳的方法,以能够解决其他方案中因没有考虑音频帧大小发生变化而导致的,无法与视频保持同步的问题。
[0190]
因此本示例公开的音频编码时间戳的生成思想,该可以通过如下公式来实现:
[0191][0192]
其中,pts
ai
为第i个音频帧的编码时间戳;c为声道数,通常情况下为双声道,所以c为2;r为采样率,例如48khz;b为每个采样点的字节长度,例如为2,单位byte;s
i
为第i个音频帧的大小,单位byte。
[0193]
将上述公式进行变形为:
[0194]
[0195]
采样率r的倒数为采样周期t
period
。则上述公式还可以进行变形为:
[0196][0197]
则可以看出,每个音频帧的编码时间戳都是在前一个音频帧的编码时间戳的基础上加上一个增量,即所以每次累加的增量和音频帧的大小直接相关,这个增量代表第i个音频帧编码时间戳对应的时间轴上所占的时长。
[0198]
所以就可以得到规律,即,每个音频帧的编码时间戳都是在前一个音频帧的编码时间戳的基础上加一个增量,而该增量与音频帧大小直接相关。这样如果音频帧大小出现变化,则将该变化体现在其与前一个音频帧之间的时间戳的差值上,避免出现音频帧的编码时间戳叠加,造成音频帧叠加的问题。
[0199]
本示例中生成音频编码时间戳的方法,以音频帧的大小作为两个相邻帧之间帧间隔的依据,从而实现能够依据音频帧大小实时调整编码时间戳之间的帧间隔的目的,保证了生成的编码时间戳的可靠性,能够提升依据时间戳对音频帧所做的其他处理的效果,例如将多路多媒体数据进行合并后的数据播放时的播放效果。
[0200]
进一步分析还能发现,在某些场景能够实现音频帧的录制速度调整,如图8所示,视频2倍速录制,或者1/2倍速录制,会导致音频也按照调整后的倍速录制,而实现音频倍速录制功能的核心在于,对音频缓存audio buffer存储的音频帧的大小进行处理,而这也会直接导致音频帧的大小发生变化。如果使用其他音频帧编码时间戳生成方法,则无法应对变速录制情况下音频帧的编码时间戳出错的问题。而使用本示例中公开的音频帧编码时间戳的生成方式,则可完全应对。所以,本示例公开的编码时间戳的生成方式能够应用在较多的场景下使用,适用范围非常广泛。
[0201]
如果上述过程出现音频帧的丢失,那么就会导致音视频帧时间戳生成模块在采样时刻采样不到音频帧,按照上述公式5,可以看出,若没有采样到音频帧,则n值不会发生变化,pts
ai
也不会发生变化,则会导致此时的时间戳暂停。
[0202]
图12中所示,frame表示音频流,t1,t2

t6表示音频流中的音频帧。real time表示真实世界时间,也就是实际进行采样时的时间,read点代表采样时刻。vsync为垂直同步信号。
[0203]
结合该图,每个采样时刻采集到对应的音频帧后,就会按照计算过程,计算每个音频帧的编码时间戳,第一个采样时刻采集到的音频帧(简称第一个音频帧)的编码时间戳为第二个采样时刻采集到的音频帧(简称第二个音频帧)的时间戳为第三个采样时刻采集到的音频帧(简称第三个音频帧)的时间戳为等第四个采样时刻到来时,没有采样到应该在此时采集到的音频帧(简称第四个音频帧),所以对于音视频帧时间戳生成模块来说,此时不做任何运算处理,所以此时增量为0,时间戳没有单调递增。虽然在第五个
采样时刻采集到了音频帧,也就是第五个音频帧,但是对于音视频帧时间戳生成模块来说,这才是第四个音频帧,因此第五个音频帧的编码时间戳为:所以第五个音频帧会在第三个音频帧之后播放。并且,所有后续采样的音频帧的时间戳都会向前移位,如图13所示,第六个音频帧的编码时间戳对应为并且,最后一个音频帧会提前播放,造成播放时间提前结束,音频流的长度从6缩减到5,音频时长缩减,如遇到对合并视频流的时长要求严格的情况,则可能会导致音频流与视频流合成失败。
[0204]
申请人经研究发现,音频帧丢失的原因主要在于,采样频率受限,终端负载高或终端过热而导致麦克风采集时某一时刻没有采集到数据,想要解决该问题,需要从硬件方面提升终端的性能,以尽量避免音频帧丢失导致的音视频画面不同步,播放效果差的问题。
[0205]
虽然从根本上解决音频帧丢失的问题是避免音视频不同步问题的关键。但是硬件性能的改进和提升需要面临的困难较多,例如成本的增加,终端体积的变大等等。
[0206]
那是否还有其他可以解决上述问题的方式呢?在前面的分析中可以看出,前一个音频帧的编码时间戳上累加一个增量得到此采集时刻的音频帧的编码时间戳。结合图12中所示情况的分析可以发现,之所以第五个音频帧的编码时间戳时间提前,是因为在没有采集到第四个音频帧的时候,时间暂停在了第三个音频帧的编码时间戳上,所以只能以第三个音频帧的编码时间戳去累加一个增量得到第五个音频帧的编码时间戳。
[0207]
在一种可能的实现方式中,如果发现第四个采样时刻没有采样到音频帧,则可以在计算第五个采样时刻的音频帧的编码时间戳时,先将第三个音频帧的编码时间戳累加一个补偿值t
c
,让编码时间戳移动到理论上第四个音频帧的编码时间戳上,再去累加增量,则可以避免第五个音频帧的编码时间戳提前的第四个音频帧的编码时间戳的位置情况。
[0208]
在另一种可能的实现方式中,仍然按照公式计算出第五个采样时刻的音频帧编码时间戳然后在这个结果上,直接累加一个时间戳补偿值t
c
,这样避免出现播放第三个音频帧后直接播放第五个音频帧的情况,而是让两个音频帧之间有一定的间隔,这个间隔内虽然没有音频帧播放导致出现没有声音的情况,但是该方法能避免了音频帧丢失导致的音视频画面不同步的问题。
[0209]
上述过程仅以示例的形式对出现丢失一个音频帧的情况进行分析,以及提供了补偿的思路。如果连续丢失了m个音频帧,则需要把每一个丢失视频帧的补偿时间都进行考量,才能解决音视频画面因丢帧而出现的不同步的问题。
[0210]
基于此,本技术公开的音频帧编码时间戳的生成方法如图14所示,包括:
[0211]
s1410:获取此时采样到的音频帧的原始时间戳。
[0212]
即音频帧的器件时间。
[0213]
s1420:计算此时采样到的音频帧的原始时间戳与上一采样到的音频帧的原始时间戳差值,以及该差值与采样周期的倍数m。
[0214]
也就是,计算两个音频帧的间隔中有几个采样周期。如果不漏帧会等于1,而如果
漏帧,会为大于1的正整数,也就是m大于等于2。
[0215]
s1430:若倍数m不小于2,则确定时间戳补偿值为(m

1)t
period

[0216]
即,补偿值t
c
=(m

1)t
period

[0217]
上述判别条件和补偿值的关系可用如下公式表示:
[0218][0219]
为第n音频帧的器件时间,也就是原始时间戳,为第n

1个音频帧的器件时间,也就是原始时间戳。
[0220]
表示为,如果第n个音频帧的原始时间戳与第n

1个音频帧的原始时间戳的差值大于等于2倍的采样周期,则时间戳补偿值为若不大于,则时间戳补偿值为0,即不补偿。
[0221]
在本示例中,因为相邻两次采样之间的时间间隔为1个采样周期,则可推断,相邻两次采集到的音频帧的原始时间戳之间的差值,也为1个采样周期,因此,如果出现相邻两次采集到的视频帧的原始时间戳的差值与采样周期的倍数m大于等于2,则说明两次采样之间存在采样失败,没有采样到音频帧的情况,则可认定发生了丢帧的现象,需要对生成的编码时间戳进行补偿。
[0222]
若m为1,则证明两个音频帧之间的周期为1个采样周期,没有丢帧。
[0223]
s1440:生成此时采样到的音频帧的编码时间戳。
[0224]
生成编码时间戳的参考公式3所示。
[0225]
s1450:累加时间戳补偿值,将补偿后的编码时间戳作为此时采样到的音频帧的编码时间戳。
[0226]
以公式来表达,则为:
[0227][0228]
本示例中,以采样周期t
period
作为了时间戳补偿值的单位量,能够保证相邻的视频帧的编码时间戳的差值在一个采样周期内,这样保证和前后视频帧的编码时间戳之间的距离比较恰当,保证音频播放过程的平稳和顺畅。当然,本示例并不限定只能采用这一种方式确定时间戳补偿值,任何能够满足补偿后的编码时间戳和前一帧的编码时间戳之间的差值大于m

1个采样周期的方式,都是本示例的保护范围。
[0229]
上述步骤s1410

s1430的过程也可以发生在,生成此时采样的音频帧的编码时间戳之后。只要保证在需要补偿的情况下,对编码时间戳进行补偿即可。
[0230]
以上实施例分别以举例的方式,对视频帧的编码时间戳和音频帧的编码时间戳的生成过程进行了说明。在分别得到这两个类型的数据帧的编码时间戳后,后续可根据需求,再看是否要对这两个类型的数据帧的编码时间戳进行处理。例如,将音视频进行合成。在将两者进行合成时,也会涉及到同步,实现音视频同步,在播放时,需要选定一个参考时钟,读取参考时间戳,那么参考时钟的选择一般有以下三种:
[0231]
将视频同步到音频上:就是以音频的播放速度为基准来同步视频。
[0232]
将音频同步到视频上:就是以视频的播放速度为基准来同步音频。
[0233]
将视频和音频同步外部的时钟上:选择一个外部时钟为基准,视频和音频的播放
速度都以该时钟为标准。
[0234]
在本技术给出的示例中,音视频同时录制,则就相当于将视频和音频同步到了进行录制过程的终端的时钟上。或者,也可以限定视频帧和音频帧生成编码时间戳的起始时间相同,也相当于将两个数据类型的时间戳预先以执行生成编码时间戳的终端的时钟进行了同步,为后续处理提供了便利。
[0235]
综上可以看出,本技术的实施例提供的多路多媒体数据的时间戳生成方法,为多媒体数据中的同类型的数据帧按照统一的方式重新生成时间戳即编码时间戳。在为视频帧生成编码时间戳时,利用视频帧的时间戳单调递增的特性,对待处理视频帧乱序的情况进行有效的识别和解决,以确保编码时间戳也满足单调递增的要求。而在为音频帧生成编码时间戳时,考虑到了音频帧的大小对生成编码时间戳的影响,以音频帧大小为变量构建了音频帧的编码时间戳生成算法,从而提升了音频帧编码时间戳的可靠性。
[0236]
本技术的实施例提供的多媒体数据的时间戳生成方法,将同类型数据帧统一到一个时间轴上,能够提升依据时间戳对多路多媒体数据的所做的其他处理的效果,例如将多路多媒体数据进行合并后的数据播放时的播放效果。
[0237]
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中包括指令,当上述指令在电子设备上运行时,使得该电子设备执行如图7、图10或图14所示的相关方法步骤,以实现上述实施例中的多媒体数据的时间戳生成方法。
[0238]
本实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行如图7、图10或图14所示方法实施例中的相关方法步骤,以实现上述实施例中的多媒体数据的时间戳生成方法。
[0239]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜