CN116095380B - 一种振动处理方法及相关设备 - Google Patents

一种振动处理方法及相关设备 Download PDF

Info

Publication number
CN116095380B
CN116095380B CN202310380081.1A CN202310380081A CN116095380B CN 116095380 B CN116095380 B CN 116095380B CN 202310380081 A CN202310380081 A CN 202310380081A CN 116095380 B CN116095380 B CN 116095380B
Authority
CN
China
Prior art keywords
vibration
segment
current
file
time stamp
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
Application number
CN202310380081.1A
Other languages
English (en)
Other versions
CN116095380A (zh
Inventor
徐士立
刘专
赵佳宁
洪楷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310380081.1A priority Critical patent/CN116095380B/zh
Publication of CN116095380A publication Critical patent/CN116095380A/zh
Application granted granted Critical
Publication of CN116095380B publication Critical patent/CN116095380B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43074Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of additional data with content streams on the same device, e.g. of EPG data or interactive icon with a TV program
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream

Abstract

本申请实施例提供了一种振动处理方法及相关设备,其中方法包括:可先从媒体数据的振动文件中获取当前振动片段,及当前振动片段的编码信息;其中,振动文件包括一个或多个振动片段,且任一振动片段与媒体数据的一个媒体片段相对应;当前振动片段的编码信息用于标识当前振动片段在振动文件中的位置;而后基于当前振动片段的编码信息,控制输出当前振动;其中,在输出当前振动时,输出与当前振动片段对应的媒体片段。通过本申请实施例,能够尽可能地保证振动和媒体之间的同步,从而带来更加沉浸式的体验。

Description

一种振动处理方法及相关设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种振动处理方法、一种振动处理装置、一种计算机设备、一种计算机可读存储介质。
背景技术
振动作为一种新型的输出媒体,在各个业务场景(诸如游戏交互场景、音频/视频播放场景等)均有广泛的应用。将振动与媒体(如音频、视频)进行同步播放,能够营造更加沉浸式的体验,为对象提供在多维度的感受的一致性。
目前,有关振动的效果的设计更加复杂和多样化,在振动与对应媒体的播放过程中,基于机械装置所进行的振动(如马达振动)和媒体之间可能会出现不同步,并随着时间的累积加剧这种不同步而被对象感知到,这样会影响在相应业务场景下对象的体验感。因此,如何尽可能地保证振动与媒体之间的同步,是一个亟需解决的问题。
发明内容
本申请实施例提供一种振动处理方法及相关设备,可以尽可能地保证振动和媒体之间的同步,从而带来更加沉浸式的体验。
一方面,本申请实施例提供了一种振动处理方法,该方法包括:
从媒体数据的振动文件中获取当前振动片段,及当前振动片段的编码信息;振动文件包括一个或多个振动片段,且任一振动片段与媒体数据的一个媒体片段相对应;当前振动片段的编码信息用于标识当前振动片段在振动文件中的位置;
基于当前振动片段的编码信息,控制输出当前振动;其中,在输出当前振动时,输出与当前振动片段对应的媒体片段。
一方面,本申请实施例提供了一种振动处理装置,该装置包括:
获取单元,用于从媒体数据的振动文件中获取当前振动片段,及当前振动片段的编码信息;振动文件包括一个或多个振动片段,且任一振动片段与媒体数据的一个媒体片段相对应;当前振动片段的编码信息用于标识当前振动片段在振动文件中的位置;
控制单元,用于基于当前振动片段的编码信息,控制输出当前振动;其中,在输出当前振动时,输出与当前振动片段对应的媒体片段。
一方面,本申请实施例提供一种计算机设备,该计算机设备包括:
处理器,适用于执行计算机程序;
计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时,实现如上述振动处理方法。
一方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器加载并执行如上述振动处理方法。
一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,该计算机程序或计算机指令被处理器执行时实现上述振动处理方法。
在本申请实施例中,可从媒体数据的振动文件中获取当前振动片段,并获取到当前振动片段的编码信息。该振动文件包含一个或多个振动片段,且一个振动片段与媒体数据中的一个媒体片段对应。可见,振动文件中的振动片段与媒体数据中的媒体片段之间存在对应关系,该对应关系可保证振动片段与媒体片段之间是契合的。当前振动片段的编码信息可用于标识该当前振动片段在振动文件中的位置,基于当前振动片段的编码信息,可控制输出当前振动,且在输出当前振动时,可输出当前振动片段对应的媒体片段。可见,基于当前振动片段的编码信息可控制当前振动片段对应振动的输出,并且当前振动与对应媒体片段之间是同步输出的。若振动文件包含多个振动片段,对于振动的输出是分段进行的,且对于振动文件中的每个振动片段,其所对应的振动均能够在编码信息的指示下和对应的媒体片段同步输出;另外,针对在振动文件中的位置不同的振动片段,对应振动的输出也可基于编码信息进行灵活控制。通过每个分段的振动与媒体片段的输出同步,能够保证整体振动与媒体的同步,进而为对象提供更加沉浸式的体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种振动处理系统的架构图;
图2是本申请实施例提供的一种振动处理方法的流程示意图;
图3a是本申请实施例提供的一种媒体数据与振动文件之间的关系示意图;
图3b是本申请实施例提供的一种振动片段与媒体片段之间的对应关系的示意图;
图3c是本申请实施例提供的一种当前振动片段在振动文件中的位置的示意图;
图4是本申请实施例提供的另一种振动处理方法的流程示意图;
图5a是本申请实施例提供的一种在音频同步场景下确定同步时间戳的示意图;
图5b是本申请实施例提供的一种在游戏场景下确定同步时间戳的示意图;
图5c是本申请实施例提供的一种振动同步控制逻辑的示意图;
图5d是本申请实施例提供的一种当前振动片段的编码信息的内容示意图;
图6是本申请实施例提供的一种振动处理装置的结构示意图;
图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上;例如:至少一个振动片段是指该一个、两个或两个以上的振动片段。多个振动片段是指两个或两个以上的振动片段。
本申请提出了一种振动处理方案,该方案涉及振动处理系统、方法及相关设备,该方案可由计算机设备执行。计算机设备可以先获取到包含一个或多个振动片段的振动文件,该振动文件与媒体数据对应,进而可从该媒体数据的振动文件中获取出当前振动片段,该振动文件中任一振动片段和媒体数据中的一个媒体片段对应。与此,计算机设备还可获取当前振动片段的编码信息,该编码信息可用于标识当前振动片段在振动文件中的位置。基于该编码信息可控制输出当前振动,且在输出当前振动时,还会输出当前振动片段对应的媒体片段。这样,在输出当前振动的时刻还可输出对应媒体片段,从而可实现当前振动和媒体片段的同步输出。若振动文件包含多个振动片段,对于振动的输出是分段进行的,这样对于振动文件中的每个振动片段,其所对应的振动均能够和对应的媒体片段同步输出,从而能够保证整个振动与媒体的同步,为对象提供更加沉浸式的体验。
本申请提出的振动处理方案可应用在各种业务场景下,该业务场景包括但不限于:游戏场景、视频播放场景、音频播放场景等等。在相应业务场景下,通过让振动和媒体的播放尽可能地保持同步,能够带来更佳的体验。示意性地,在游戏场景下,采用本申请的振动处理方案可使得振动和游戏场景中的音频和/或视频尽可能地保持同步,例如在游戏场景中虚拟形象释放一个击打操作时,可同时输出一个振动,如此操作者能够感受到同步输出的振动,这样能够为操作者营造更为逼真的击打感,还能够带给操作者更加流畅的操控体验。另外,游戏场景下振动、音频以及视频之间的同步,还能够给操作者带来触觉、听觉、视觉三感的一致性,从而提供更加沉浸式的游戏体验。在视频播放场景下,采用本申请的振动处理方案可使得振动和视频的画面尽可能地保持同步,综合触觉和视觉维度的感知,为观看者营造更加沉浸式的观看体验。在音频播放场景下,采用本申请的振动处理方案可使得振动和音频的律动尽可能保持同步,通过触觉和听觉维度的感知为听众营造更佳的音乐体验。
下面将结合附图,对本申请实施例提供的振动处理系统的架构进行介绍。
请参见图1,图1是本申请一个示例性实施例提供的一种振动处理系统的架构图。如图1所示,该振动处理系统10包括终端设备101和服务器102;各个终端设备可以和服务器102之间通过有线或无线的方式建立通信连接。
其中,终端设备101包括但不限于:智能手机、平板电脑、智能可穿戴设备、智能语音交互设备、智能家电、个人电脑、车载终端、智能摄像头等等设备,本申请对此不作限制。对于终端设备的数量,本申请不做限制。服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。对于服务器的数量,本申请不做限制。
其中,终端设备101执行的振动处理流程大致可包括以下处理内容:(1)当前振动片段的获取;(2)当前振动片段的编码信息的获取;(3)控制当前振动的输出。
(1)获取当前振动片段。
终端设备可从媒体数据的振动文件中获取当前振动片段。振动文件中包含一个或多个振动片段,该当前振动片段是其中一个振动片段。
在一个实施例中,终端设备可先获取媒体数据的振动文件,该振动文件是一个记录连续振动的文件,然后可根据媒体数据确定出同步时间戳,接着利用同步时间戳对振动文件进行拆分,得到振动文件的多个振动片段,最后再按序从中获取出当前振动片段。作为一种可行的方式,以上内容也可以由服务器执行,终端设备可直接从服务器获取振动文件中的一个振动片段作为当前振动片段。在另一种实施例中,该振动文件也可不被拆分,振动文件中包含一个振动片段,当前振动片段对应一个完整的连续振动。
(2)获取当前振动片段的编码信息。
针对振动文件中的每个振动片段均对应有的编码信息。在一种实现方式中,若终端设备对振动文件进行拆分,那么可由终端设备对每个振动片段进行编码得到每个振动片段的编码信息,从而在获取到当前振动片段之后,可进一步获取到该当前振动片段的编码信息。在另一种实现方式中,每个振动片段的编码信息也可存储在服务器中,终端设备可从服务器中获取。
当前振动片段的编码信息可用于标识当前振动片段在振动文件中的位置。若振动文件中包含多个振动片段,在振动文件中不同位置的振动片段的编码信息所标识的位置不同。
(3)基于编码信息控制输出当前振动。
当前振动片段的编码信息除了用于标识当前振动片段在振动文件中的位置之外,还可以包括描述当前振动片段对应振动的参数,以描述振动的效果,该参数包括但不限于:振动强度、振动频率、振动时长、振动开始时间戳等等。终端设备可解析该编码信息,并按照解析后的编码信息的指示,控制输出当前振动(即当前振动片段对应的振动)。且在输出当前振动时,可输出对应媒体片段。这样,媒体数据中的媒体片段和当前振动同时开始输出,从而实现当前振动与媒体片段之间启动同步。对于振动文件中的每个振动片段对应的振动,和相应振动片段对应媒体片段均是同时开始输出的,通过每段振动与媒体片段的同步,可实现连续振动与媒体之间的同步。
在一种可实现的方式中,上述(1)-(3)所介绍的流程也可以由服务器执行,或者服务器和终端设备共同执行。示意性地,在服务器和终端设备共同执行时,服务器可下发控制指令以控制终端设备输出当前振动,并在输出当前振动时,输出对应媒体片段,从而实现振动与媒体之间的同步输出。
本申请实施例提供的振动处理方案,可从媒体数据的振动文件中获取当前振动片段,并获取到当前振动片段的编码信息。该振动文件包含一个或多个振动片段,且一个振动片段与媒体数据中的一个媒体片段对应。可见,振动文件中的振动片段与媒体数据中的媒体片段之间存在对应关系,该对应关系可保证振动片段与媒体片段之间是契合的。当前振动片段的编码信息可用于标识该当前振动片段在振动文件中的位置,基于当前振动片段的编码信息,可控制输出当前振动,且在输出当前振动时,可输出当前振动片段对应的媒体片段。如此,基于当前振动片段的编码信息可控制当前振动片段对应振动的输出,并且当前振动与对应媒体片段之间是同步输出的。进一步地,若振动文件包含多个振动片段,对于振动的输出是分段进行的,且对于振动文件中的每个振动片段,其所对应的振动均能够在编码信息的指示下和对应的媒体片段同步输出;另外,针对在振动文件中的位置不同的振动片段,对应振动的输出也可基于编码信息进行灵活控制。通过每个分段的振动与媒体片段的输出同步,能够保证连续振动与媒体的同步,进而为对象提供更加沉浸式的体验。
接下来对本申请实施例提供的振动处理方法进行介绍。
请参见图2,是本申请实施例提供的一种振动处理方法的流程示意图。该振动处理方法可以由计算机设备(如图1所示系统中的终端设备101)来执行,该振动处理方法可以包括以下步骤S201-S202。
S201,从媒体数据的振动文件中获取当前振动片段,及当前振动片段的编码信息。
媒体数据可用于表示媒体,该媒体数据支持输出。在计算机领域,媒体数据包括但不限于文本、图像、音频、动画、视频等一种或多种媒体的数据。示意性的,媒体数据包括但不限于:视频数据、音频数据、游戏数据等。在一种实现方式中,媒体数据可以是数据流,数据流是一种向对象持续提供内容的数据形式,该数据流包括但不限于:视频流、音频流、文本数据流、图像数据流等等中的一种或多种。借助于现代通信网络,媒体数据能够以相应介质(例如广播、电视、网络等)为载体进行传播。
媒体数据的振动文件可以用于记录一个连续振动。一个连续振动是指在一定时长内不间断的振动。通过媒体数据与连续振动之间的契合,能够在同一时段内带来不同维度的播放体验。举例来说,媒体数据表示0-10秒的视频,在该视频的第5秒配合视频画面的变化存在一个连续振动,且振动时长设置为2秒,那么该视频的振动文件可记录一个2秒的连续振动。振动文件所记录的连续振动包括对连续振动的振动效果的描述,即通过振动文件可描述如何振动,例如按照何种振动强度、振动频率、持续多少时长进行振动。因此,本申请实施例中,振动文件也可以称为振动效果文件或者振动效果描述文件。
媒体数据可对应一个或多个连续振动,因此媒体数据可以对应多个振动文件,且不同振动文件所记录的连续振动之间是不连续的。示意性地,请参见图3a所示的媒体数据与振动文件之间的关系示意图。仍旧以上述0-10秒的视频为例,该视频可以在第0-1秒对应一个连续振动,5-7秒对应一个连续振动。由此,媒体数据对应有两个振动文件分别记录两个连续振动。为便于理解,本申请实施例均是媒体数据的一个振动文件为例进行说明的,若媒体数据的振动文件的数量为多个,对于每个振动文件均可应用本申请实施例所描述的振动处理方法,来保证振动文件所记录的连续振动与媒体数据之间的同步。
振动文件包括一个或多个振动片段,任一振动片段与媒体数据的一个媒体片段相对应。其中,若振动文件包括一个振动片段,那么该振动片段对应振动为振动文件所记录的连续振动。振动片段对应的媒体片段为该连续振动对应的参考媒体数据所表示的媒体,该参考媒体数据为所有媒体数据或者部分媒体数据。若振动文件包括多个振动片段,那么基于一个振动片段输出的振动为该连续振动的一段振动,所有振动片段可以按序组合起来对应振动文件所记录的连续振动。振动片段对应的媒体片段为媒体数据对应媒体的部分。基于振动片段与媒体片段之间的对应关系,在输出对应振动时可输出媒体片段,以使得振动与媒体片段进行契合,保证同步效果。示例性地,请参见图3b所示的振动片段与媒体片段之间的对应关系的示意图。基于图3a所示的连续振动,视频中0-1秒的视频画面对应的连续振动被分为两段振动,振动文件包括两个振动片段,一个振动片段对应的振动时长为500毫秒(ms),且一个振动片段对应一个500ms的视频片段。若该连续振动未被分段,那么振动文件包括一个振动片段,且振动片段对应的振动时长为1秒(s),且对应10秒视频中0-1秒的视频片段。
当前振动片段是从媒体数据的振动文件包含的一个或多个振动片段中获取到的一个振动片段,该当前振动片段可以是正在处理的振动片段。当前振动片段的编码信息是对当前振动片段进行编码处理得到的,该当前振动片段的编码信息用于标识当前振动片段在振动文件中的位置。在一种实现方式中,若振动文件仅包含一个振动片段,那么该当前振动片段在振动文件中的位置可用于指示该连续振动为独立振动的效果,该当前振动片段对应振动前后均未连接连续的振动。若振动文件包含多个振动片段,那么当前振动片段在振动文件中的位置可以包括以下任一种:振动开始段、振动中间段以及振动结束段。该当前振动片段的位置是基于当前振动片段输出的一段振动,相对于振动文件所记录的连续振动而言的。在当前振动片段处于振动开始段时,当前振动片段之后还连接有振动片段;在当前振动片段处于振动中间段时,当前振动片段前后均连接有振动片段;在当前振动片段处于振动结束段时,仅当前振动片段之前连接有振动片段。示意性地,如图3c所示的当前振动片段在振动文件中的位置的示意图。该振动文件所记录的一个连续振动(T0-T4)通过T1、T2和T3三个时间戳拆分为四段,由此,振动文件包括4个振动片段,可分别用于描述:T0-T1、T1-T2、T2-T3、T3-T4这几段振动。其中,T0-T1这一振动片段处于振动文件的振动开始段,T1-T2、T2-T3这两个振动片段均处于振动文件的振动中间段,T3-T4这一振动片段处于振动文件的振动结束段。当前振动片段可以是以上4个振动片段中的任一个振动片段。
通过编码信息对当前振动片段在振动文件中位置进行标识,可得知振动文件是否被分为多个振动片段,进而基于各个振动片段将所记录的连续振动进行分段振动。在被分为多个振动片段时,能够基于当前振动片段在整个振动文件中的位置,采取相应的处理策略来控制输出振动,实现分段的振动之间的连续性,以及连续振动与媒体(如音频/视频)之间的同步。
S202,基于当前振动片段的编码信息,控制输出当前振动;其中,在输出当前振动时,输出与当前振动片段对应的媒体片段。
可理解的是,当前振动片段的编码信息除了标识当前振动编码在振动文件中的位置,还可包括其他参数以指示当前振动片段进行振动所需的信息,例如当前振动的振动时长、振动强度、振动频率等等,以便基于编码信息进行振动。
基于当前振动片段的编码信息所标识的位置,以及编码信息包含其他参数的指示,可控制输出当前振动,该当前振动是指当前振动片段对应的振动。若该当前振动片段为振动文件中仅有的一个振动片段,那么控制输出的当前振动为该振动文件记录的连续振动。若当前振动片段为多个振动片段中的一个振动片段,那么控制输出的当前振动为该连续振动的一段振动。作为一种可行的实现方式,基于当前振动片段输出的当前振动可包含多个振动阶段,例如开始振动、振动过程中、振动结束等。在当前振动的不同阶段,可基于当前振动片段在振动文件中所处的位置,来采取相应的处理策略实现振动之间的连续性,保证振动更加流畅地输出。
进一步地,在输出当前振动时,可输出当前振动片段对应的媒体片段。例如在输出当前振动时,可输出第0-1秒的视频。这样,能够保证当前振动和媒体片段是同步输出。本申请实施例中,振动/媒体片段的输出可以理解为振动/媒体片段的播放。若振动文件包含多个振动片段,那么每播放至一个媒体片段,便可对应输出与该媒体片段对应的振动。通过每个振动与媒体片段的同步输出,可以使得振动文件所记录的连续振动和媒体数据所表示的媒体(如音频/视频)在各个时间点尽可能同步,从而达到更佳的同步效果。
本申请实施例提供的振动处理方法,可从媒体数据的振动文件中获取当前振动片段,并获取到当前振动片段的编码信息。该振动文件包含一个或多个振动片段,且一个振动片段与媒体数据中的一个媒体片段对应。可见,振动文件中的振动片段与媒体数据中的媒体片段之间存在对应关系,该对应关系可保证振动片段与媒体片段之间是契合的。当前振动片段的编码信息可用于标识该当前振动片段在振动文件中的位置,基于当前振动片段的编码信息,可控制输出当前振动,且在输出当前振动时,可输出当前振动片段对应的媒体片段。可见,基于当前振动片段的编码信息可控制当前振动片段对应振动的输出,并且当前振动与对应媒体片段之间是同步输出的。进一步地,若振动文件包含多个振动片段,对于振动的输出是分段进行的,且对于振动文件中的每个振动片段,其所对应的振动均能够在编码信息的指示下和对应的媒体片段同步输出;另外,针对在振动文件中的位置不同的振动片段,对应振动的输出也可基于编码信息进行灵活控制。通过每个分段的振动与媒体片段的输出同步,能够保证整体振动与媒体的同步,进而为对象提供更加沉浸式的体验。
请参见图4,是本申请实施例提供的另一种振动处理方法的流程示意图。该振动处理方法可以由计算机设备(如图1所示系统中的终端设备101)来执行,该振动处理方法可以包括以下步骤S401-S402。
S401,从媒体数据的振动文件中获取当前振动片段,及当前振动片段的编码信息。
在一个实施例中,对于振动文件包含的多个振动片段的获取方式,可包括以下步骤1-步骤3。
步骤1、获取媒体数据的振动文件。
该振动文件是一个记录连续振动的文件。连续振动是指在一定时长内不间断的振动。基于为媒体数据所设置的振动,可获取到媒体数据的一个或多个振动文件。示例性地,1分钟的音频对应有3个连续振动,且在音频不同时段内输出,那么可获取到该媒体数据的3个振动文件。为便于描述,本申请实施例均是以媒体数据的一个振动文件为例进行说明的。
步骤2、从媒体数据中确定出振动文件的一个或多个同步时间戳。
振动文件可记录连续振动在各个时间戳的振动状态(如振动强度、振动频率等)。此处确定出的同步时间戳可以是振动文件记录连续振动的开始时间戳,也可以是振动文件记录连续振动的开始时间戳至结束时间戳之间的时间戳。每经过一个同步时间戳可对输出的当前振动和媒体数据进行一次同步校准,这样,通过一个或多个同步时间戳可以保证振动和媒体播放之间尽可能同步。
在一个实施例中,从媒体数据中确定出振动文件的一个或多个同步时间戳可以包括以下步骤2.1-步骤2.3。
步骤2.1:根据媒体数据的振动起始时间戳,将振动文件与媒体数据进行对齐处理。
媒体数据的振动起始时间戳是指一个连续振动相对于媒体数据开始输出的时间戳。在媒体数据输出至该振动起始时间戳,可开始输出连续振动。举例来说,媒体数据为音频数据,音频播放至第10秒时需启动一个连续振动,那么该音频的第10秒即振动起始时间戳,此时连续振动的开始时间戳可以是相对自身振动开始的时间戳,即第0秒,也可以是相对音频开始振动的时间戳,即第10秒。本申请实施例中,振动开始时间戳可记为T0,在振动开始时间戳T0可同时开始媒体(如音频)与振动的播放以确定同步开始。
对齐处理后的振动文件记录的一个振动时间戳与媒体数据中的一个播放时间戳相对应。振动文件中的每个振动时间戳均对应媒体数据中的一个播放时间戳。示意性地,音频与振动文件对齐后,音频的第10秒对应振动文件记录的第0秒,音频的第11秒对应振动文件记录的第1秒,音频的第12秒对应振动文件记录的第2秒,……,以此类推,直至对应至该振动文件记录的结束时间戳。
通过对齐处理能够建立媒体数据的播放时间戳与振动的振动时间戳之间的对应关系,进而便于后续对同步时间戳的确定。另外,通过对齐处理,在振动起始时间戳可同时开始媒体数据以及振动的输出,以保证两者的启动是同步的,进一步,基于所确定出的同步时间戳可实现媒体数据和振动在相应时间戳的再次同步播放。
步骤2.2:对媒体数据进行同步点识别处理,从媒体数据中确定出同步参考时间戳。
步骤2.3:基于播放时间戳与振动时间戳之间的对应关系,从振动文件中确定出与同步参考时间戳对应的振动时间戳,并将确定出的振动时间戳作为从振动文件中确定出的同步时间戳。
确定出的同步参考时间戳可以包括媒体数据中的一个或多个播放时间戳。在确定出同步参考时间戳之后,基于振动时间戳与播放时间戳之间的对应关系,可从振动文件记录的各个振动时间戳中确定出该同步参考时间戳对应的振动时间戳,并将其作为同步时间戳。确定出的同步时间戳可以包括振动文件记录的一个或多个振动时间戳。举例来说,媒体数据为10秒(s)的音频数据(第0秒-10秒),振动文件记录有2秒的振动(第0-2秒),且振动相对于音频开始输出的时间戳为音频的第4秒。若确定出的同步参考时间戳包括音频的第5秒和第5.5秒,那么基于播放时间戳与振动时间戳之间的对应关系,同步时间戳包括振动的第1s和第1.5s。在另一种方式中,同步时间戳也可以包括音频的第5s和第5.5s。
上述确定同步时间戳的方式,通过对齐媒体数据与振动文件可建立两者在时间戳上的对应关系,在对媒体数据进行同步点识别处理之后,可基于所建立的对应关系确定出同步时间戳。这样,从媒体数据中确定同步时间戳,能够在一定程度上按照媒体数据的不同特性来确定出更合适的同步时间戳,进而保证同步效果。
基于媒体数据的不同类型以及业务场景的不同,同步点识别处理的逻辑也有相应的区别。其中,业务场景包括但不限于:音频同步、视频同步、游戏场景同步以及其他同步(如时间同步)等等。下面对各个业务场景下的同步参考时间戳的确定进行详细介绍,如下(一)-(三)所示。
(一)音频/视频同步场景。
媒体数据包括音频数据或者视频数据。对媒体数据进行同步点识别处理,从媒体数据中确定出同步参考时间戳,包括以下①-②所描述内容:①从媒体数据中确定出与振动文件相对应的参考媒体数据;②获取参考媒体数据中相邻两帧之间的数据差异,并在数据差异达到差异阈值时,将相邻两帧中的前一帧对应的播放时间戳作为一个同步参考时间戳。
具体地,首先可基于媒体数据与振动文件之间的对齐关系,从媒体数据中确定出振动文件对应的参考媒体数据,该参考媒体数据可能是媒体数据的一部分,也可能是整个媒体数据。举例来说,第0-15秒的视频,在视频的第5-6秒设有一个连续振动,那么该参考媒体数据即为第5-6秒的视频数据。参考媒体数据的播放时长与振动文件对应的振动时长相等,以表示在该参考媒体数据播放的过程中存在持续时长的振动。
然后,可获取到两帧之间的数据差异,基于数据差异与差异阈值之间的关系来确定同步参考时间戳。其中,参考媒体数据中相邻两帧之间的数据差异是指后一帧相对于前一帧而言的数据差异。其中,相邻两帧包括相邻的第i帧和第i+1帧,第i帧的时间点早于第i+1帧的时间点,其中,i为正整数。两帧的数据差异是指第i+1帧的数据相对于第i帧的数据的差异。在数据差异达到差异阈值时,将前一帧对应的播放时间戳作为一个同步参考时间戳,以便将该同步参考时间戳对应的振动时间戳作为同步时间戳,这样能够在达到较大变化之前实现进行振动与媒体帧之间的同步,从而使得对象感受到音频/视频和振动是同步进行的。
上述提及的数据差异达到差异阈值是指数据差异大于差异阈值,以表示第i+1帧相对于第i帧发生了较大变化。根据媒体数据的类型不同,数据差异以及差异阈值有所不同。若媒体数据包括音频数据,则数据差异达到差异阈值是指:相邻两帧之间的音频差值达到第一差异阈值。该音频差值可以是音频能量差值,也可以是音频功率差值,对应的,第一差异阈值可以是能量差异阈值或者功率差异阈值,本申请对此不做限制。在此方式下,所确定的同步参考时间戳是对象对音频的感知相对较弱的时间戳,将该同步参考时间戳对应的振动时间戳作为同步时间戳,可在该同步时间戳达到时再次进行音频播放和振动播放的同步,从而在即将到来的音频峰值之前提前同步,在同步时间戳之后能够使得对象感受到音频和振动是同步进行的,而不会存在太大的偏差。对于其他同步时间戳的选取也是同理,能够确保在音频峰值达到之前将音频和振动进行同步,尽可能减小偏差。由于同步时间戳后续将用于拆分振动文件,因此,同步时间戳也可称为振动的切分点或者振动切分节点。示意性地,请参见图5a所示的在音频同步场景下确定同步时间戳的示意图。每个同步时间戳(包括T1、T2、T3)均是在音频峰值达到之前的时间戳,这些时间戳也可以视为音频的变化点,在变化点之间让振动的播放和音频的播放保持同步,能够使得对象感知到音频和振动的同步,进而提供更好的播放体验。
若媒体数据包括视频数据,则数据差异达到差异阈值是指:相邻两帧之间的画面差异达到第二差异阈值。以视频为基准进行同步点的识别,是在视频画面发生较大变化前设置同步参考时间戳。数据差异为画面差异,差异阈值为第二差异阈值,画面差异达到第二差异阈值即表示后一帧的画面相对于前一帧的画面发生了比较大的变化。由于在变化较大的时间点设置的振感也会比较强,因此在画面发生较大变化之前提前进行了时间戳同步,能够使得对象能够感受到振动和画面同步进行,画面变化与振动的契合度更高,能够提供更好的观看体验。举例来说,在视频的第50毫秒(ms)设置为同步参考时间戳,那么与视频对齐的振动文件在该第50ms对应的振动时间戳的位置,可在该同步时间戳进行播放的再次同步,保证整体的同步输出。
(二)游戏场景同步。
媒体数据包括游戏数据,该游戏数据包括游戏中的一个或多个技能操作数据。对媒体数据进行同步点识别处理,从媒体数据中确定出同步参考时间戳,包括以下①-②所描述内容:①获取游戏数据中各个技能操作数据对应的操作时间戳;②当任一技能操作数据对应的操作时间戳为至少两个时,将任一技能操作数据对应的至少两个操作时间戳,作为同步参考时间戳。
在游戏同步场景下,振动的触发和游戏场景相关。举例来说,控制游戏中的虚拟形象释放一个技能,会伴随着音效播放、画面改变以及振动。在游戏场景下,音频、画面以及振动保持同步能够带来更好的游戏操控体验。
任一技能操作数据可用于描述在相应时间戳触发的技能操作。不同技能操作数据所描述的技能操作不同。任一技能操作数据对应的操作时间戳可包括一个或多个。举例来说,在竞技类游戏中,虚拟形象更换装备的操作可以细分为操作c1和操作c2,那么虚拟形象开始进行操作c1的时间戳可作为一个操作时间戳,虚拟形象开始进行操作c2的时间戳可作为另一个操作时间戳。在任一技能操作数据对应的操作时间戳包含至少两个时,可将该两个操作时间戳作为同步参考时间戳。进而根据该同步参考时间戳可从振动文件中确定出同步时间戳,以将该技能操作对应的振动文件拆分为与不同操作对应的振动片段,从而将按照振动片段进行振动与操作变化进行同步,以实现技能操作对应的音频、画面以及振动之间的同步,提升游戏场景中的触、听、视三感一致性,营造更佳的游戏氛围,提升操控体验。示意性地,如图5b所示在游戏场景下的同步,当游戏画面发生变化,如虚拟形象执行不同操作时,可将触发操作的操作时间戳T1和T2确定为同步时间戳,其中,在T2执行完操作后虚拟形象的方位也发生相应变化,进而根据同步时间戳将振动文件拆分为两个,并在这两个同步时间戳与游戏场景的变化进行同步。
可理解的是,若任一技能操作数据对应的操作时间戳为一个,该操作时间戳可以是对应触发振动的触发时间戳。在该触发时间戳可直接同步启动对应振动的输出,还可以同步启动操作技能对应的音频和/或视频,实现多维度感知的一致性。
(三)其他场景。
在一种实现方式中,对于媒体数据的同步点识别处理可基于一个固定的时长实现。对媒体数据进行同步点识别处理,从媒体数据中确定出同步参考时间戳,包括以下①-②所描述的内容:①获取参考时长;②按照参考时长对媒体数据进行同步点识别处理,得到相应的同步参考时间戳。
该参考时长是一个固定的时长,例如200毫秒(ms)。在一种可行的方式下,可以按照音频帧/视频帧的帧长来设置该参考时长。示意性的,一个音频帧的帧长为100ms,那么该参考时长可设置为该音频帧的帧长的倍数,如300ms。通过与帧长成倍数的设置,能够使得振动尽可能贴合不同帧的输出,从而让振动与媒体帧进行同步,振动的效果与媒体帧的变化契合,实现更好的同步效果,并能够带来更佳的体验。在另一种可行的方式下,该参考时长也可随机设置,例如随机设置为150ms。
该参考时长可作为振动片段的振动时长,参考时长内的振动是持续时间较短的振动,这样能够尽可能减小振动和媒体(如音频/视频)之间的同步偏差。按照参考时长对媒体数据进行同步节点识别处理,具体可以每间隔参考时长确定出一个同步参考时间戳。例如,参考时长为500毫秒(ms),对于2秒(s)的音频每隔500ms可以设置一个同步参考时间戳,那么便可得到3个同步参考时间戳,分别为第500ms、第1s、第150ms。
作为一种可实现的方式,基于参考时长所进行的同步点识别处理,还可以与音频/视频/游戏同步等场景进行结合。示意性地,当在(一)和(二)这些业务场景下确定出的同步参考时间戳之间的时长大于时长阈值,可按照参考时长在同步参考时间戳之间确定出新的同步参考时间戳。其中,上述提及的时长阈值是一个对象能感知到振动和媒体之间不同步的门限值,超过该时长阈值且同步参考时间戳之间的时长越大,对象能更明显感知到对振动和媒体之间的不同步。通过参考时长进一步拆分出新的同步参考时间戳,可缩短同步参考时间戳之间的时长的大小,增加更多的同步参考时间戳,可将振动文件拆分得更加细致,基于分段更细的振动与媒体片段之间的同步,能够进一步提升同步效果。
可理解的是,在以上同步业务场景下均可在到达对应的同步时间戳时,对齐媒体数据和振动文件记录的时间戳,将分段的振动与媒体片段进行同步,从而保证振动与媒体的同步输出。
步骤3、根据各同步时间戳对振动文件进行拆分处理,得到振动文件的多个振动片段。
若确定出一个同步时间戳,那么根据该同步时间戳可将该振动文件拆分为两个振动片段。若确定出多个同步时间戳,那么根据各个同步时间戳可将振动文件拆分为两个或两个以上的振动片段。示意性地,在游戏场景下,确定出的同步时间戳包括两个操作时间戳,基于两个同步时间戳可将振动文件拆分为两个振动片段,每个振动片段输出的振动与一个操作技能对应。后续在该同步时间戳可将振动和游戏场景的变化进行同步,从而带来更佳的游戏体验。拆分处理得到的各个振动片段对应振动时长可相等或不等,示意性地,3个振动片段对应振动时长分别为100ms(毫秒)、200ms以及200ms。在一种可实现的方式,同步时间戳是基于参考时长对媒体数据进行同步节点识别确定的。采用该同步时间戳对振动文件进行拆分后,在实际播放中,可在间隔相等的时间戳进行振动和媒体的同步,基于各个振动片段输出的振动的时长是等长的。
综上,基于步骤1-步骤3所介绍的振动文件的多个振动片段的获取方式,可从媒体数据中确定出振动文件的同步时间戳,并基于各同步时间戳对振动文件进行拆分处理,通过拆分振动文件能够将振动文件所记录的连续振动拆分为持续时间更短的连续振动,实现对连续振动的分段。基于多个振动片段的振动属于分段振动的效果,在这些同步时间戳保持振动片段对应振动与相应媒体片段之间的同步,能够实现整体振动与媒体(如音频/视频)之间相应的同步。
获取到媒体数据的振动文件之后,在一种可行的实现方式中,可按照上述步骤1.2和步骤1.3所描述的内容,对振动文件进行拆分处理得到多个振动片段。在另一种可行的实现方式中,可以按照该振动文件所记录的连续振动的类型来确定是否执行上述步骤2和步骤3,即是否拆分振动文件,具体包括以下(1)-(3)所描述内容。
(1)确定振动文件中记录的连续振动的类型。
按照连续振动的振动时长的长短,连续振动的类型可包括第一类型和第二类型。第一类型的连续振动是指对应振动时长大于或等于预设阈值的连续振动;第二类型的连续振动是指对应振动时长小于预设阈值的连续振动。举例来说,预设阈值为200ms(毫秒),若连续振动的振动时长为400ms,那么该连续振动的类型为第一类型,可认为该连续振动是持续时间较长的振动,第一类型的连续振动可简称为持续振动。若连续振动的振动时长为100ms,那么该连续振动的类型为第二类型,可认为该连续振动是持续时间较短的振动,第二类型的连续振动可简称为简短振动。
换而言之,可基于该连续振动的振动时长确定媒体数据的振动文件中记录的连续振动的类型:若连续振动的振动时长大于或等于预设阈值,则可确定该连续振动的振动类型为第一类型,若连续振动的振动时长小于预设阈值,则可确定该连续振动的振动类型为第二类型。
(2)若连续振动的类型为第一类型,则对振动文件进行拆分处理,以使振动文件包含多个振动片段。
具体地,如果连续振动的类型为第一类型,表明连续振动的振动时长大于或等于预设阈值,该连续振动是持续时间较长的振动。为保证连续振动和媒体数据之间的输出在各个时间点尽可能同步,减小对象对振动和媒体(如音频/视频)之间输出不同步的感知,可对振动文件进行拆分处理,从而将连续振动拆分为持续时间更短的振动片段。通过每个振动片段与对应媒体片段在振动开始时间戳开始播放,能够尽可能地保证连续振动与媒体(如音频/视频)之间的同步。可理解的是,对振动文件拆分得越细致,振动文件包含的振动片段更多,连续振动和媒体(如音频/视频)之间同步输出的效果越好。对于振动文件的拆分可参见上述步骤2-步骤3所介绍的内容,在此不做赘述。
(3)若连续振动的类型为第二类型,则振动文件包括一个振动片段,当振动文件包括一个振动片段时,编码信息包含触发输出连续振动的触发时间戳。
具体地,如果连续振动的类型为第二类型,表明连续振动的振动时长大于或等于预设阈值,该连续振动是持续时间较短的振动。由于振动的持续时间较短,对象对振动和媒体数据之间存在的不同步感知较弱。因此,可不对振动文件进行拆分处理,该振动文件包含一个振动片段,该振动片段对应的振动为连续振动。在此情况下,可直接对该振动文件包含的振动片段进行编码处理,得到该振动片段的编码信息。该编码信息包含触发输出连续振动的触发时间戳。当将媒体数据播放至该触发时间戳时,可同时输出振动。举例来说,媒体数据为2秒的音频数据(第0秒-2秒),且在音频的第1.2秒-1.3秒对应有一个连续振动,那么该触发时间戳可设置为第1.2秒,且音频播放至该第1.2秒可同时输出连续振动,在输出振动过程中,该第1.2秒-1.3秒的音频也在输出,从而实现振动和音频之间的同步。
基于上述(1)-(3)所介绍的按照连续振动的类型确定对振动文件的处理方式,可针对连续振动的类型,选择对振动文件进行拆分或者不拆分,从而能够集中更多资源对振动持续时间较长的振动进行处理。在同时处理多个振动文件的情况下,基于不同类型的连续振动对振动文件采取对应处理,能够提升处理效率,且能够保证振动与媒体的同步效果。
在整个处理流程中,对振动的处理可包括振动效果编辑阶段、振动效果编码阶段以及振动效果输出阶段。在振动效果编辑阶段可根据对媒体数据(如音视频数据)进行同步节点识别得到的同步时间戳,继而基于同步时间戳对振动文件进行拆分,实现对连续振动的分段;在振动效果编码阶段可对包含分段后的连续振动的振动文件进行编码处理,得到每个振动片段的编码信息。在振动效果输出阶段可根据编码信息进行振动的输出控制,实现振动输出的连续性以及与媒体输出的同步。
在一个实施例中,当前振动片段的编码信息包括片段数量字段(Fragment_toal),该片段数量字段用于指示振动文件包含的一个或多个振动片段对应的片段总数量。片段数量字段的取值与振动文件包括的振动片段的总数量等同,例如片段数量字段取值为K,那么该振动文件包含K个振动片段,K为正整数。
基于不同取值可指示振动文件是否被拆分,以及振动文件所记录的连续振动的振动效果。当片段数量字段的取值大于1时,振动文件被拆分为多个振动片段。该连续振动对应一个拆分为多段进行振动的分段振动效果。示例性地,该片段数量字段的取值为2,表示振动文件被拆分为2个振动片段,连续振动对应分段振动效果。当片段数量字段的取值等于1时,振动文件未被拆分。连续振动对应一个独立振动效果,即在相应触发时间戳启动振动,并在持续时长达到时结束振动即可。
在一个实施例中,振动文件包含的一个或多个振动片段按序排列,且任一振动片段对应的振动按照对应的排序输出。当前振动片段的编码信息包括片段序号字段(Fragment_num),该片段序号字段用于指示当前振动片段在振动文件中的序号,序号用于指示当前振动片段对应振动的输出顺序。其中,当前振动片段在振动文件中的序号可以是从1开始取值的整数,也可以是其他字符串。示例性地,当前振动片段的片段序号字段取值为1,即表示当前振动片段是振动文件中排序在第一个的振动片段,在输出连续振动的过程中,首先输出该振动片段对应振动。输出顺序可表示当前振动片段在振动文件中所处的位置。
在一种可行的实现方式中,片段序号字段(Fragment_num)与片段数量字段(Fragment_toal)的取值都是整形数据。若当前振动片段的片段序号字段的取值,等于当前振动片段的片段数量字段的取值,则表示当前振动片段为按序排列的一个或多个振动片段中的最后一个。示意性地,当前振动片段的Fragment_toal取值为3,当前振动片段的Fragment_num 也取值为3,那么表示该当前振动片段是振动文件中按序排列的各个振动片段中的最后一个振动片段,且当前振动片段对应的振动为连续振动中最后一段振动。通过上述片段序号字段可单独指示出当前振动片段在振动文件中的位置,也能够与片段总量字段结合对位置进行更为准确的指示,基于当前振动片段所处的位置以及编码信息所记录的其他参数,可输出当前振动片段对应的振动。
作为一个可行的实现方式,当前振动片段的编码信息包括片段标识字段(Fragment_sn),该片段标识字段用于指示当前振动片段的标识序号。该标识序号可以是一个数字或者一串字符,具备唯一性且可用于指示振动文件所记录的连续振动具备分段振动效果。示意性地,Fragment_sn的取值为23939482304823,当前振动片段的标识序号即为“23939482304823”。标识序号与媒体数据对应的应用程序相关联,一个应用程序对应一个标识序号。媒体数据对应的应用程序是指提供媒体数据的应用程序,该应用程序包括但不限于:音频应用程序、视频应用程序、游戏应用程序、直播应用程序等等。本申请不做限制。该标识序号在同一应用程序中保持唯一,对于振动文件包含的不同振动片段,在该媒体数据对应的应用程序中可采用相同的标识序号。通过片段标识字段的取值,可便于区分不同应用程序的媒体数据对应振动的振动效果,为分段振动效果提供进一步指示。
在一个实施例中,当前振动片段的编码信息包含以下一个或多个字段:片段数量字段、片段序号字段以及片段标识字段。通过以上字段可标识当前振动片段在振动文件中的位置。示意性地,通过片段数量字段、片段序号字段以及片段标识字段可标识以下内容:当前振动片段在振动文件中的位置,振动文件被拆分为多个振动片段。除了以上字段,编码信息包含相对开始时间字段(RelativeTime),相对开始时间字段用于记录当前振动片段相对于对应媒体片段的振动开始时间戳。该振动开始时间戳可以是触发输出当前振动片段对应振动的时间戳。在媒体数据播放至该振动开始时间戳,媒体片段开始输出。振动开始时间戳的取值为整形数据,单位可以为毫秒(ms)。举例来说,媒体数据表示20秒的音频(音频的播放开始时间点为第0秒,播放结束时间点为第20s),音频在第10秒至第15秒这一段对应有一个连续振动(0-5秒)。当前振动片段对应的音频片段为该音频在第10秒至第11秒的片段。因此,该当前振动片段相对于媒体片段的振动开始时间戳可以为音频的第10秒,也即连续振动的第0秒。基于相对开始时间字段的记录,可控制基于当前振动片段开始振动,实现振动片段和媒体片段的启动同步。
S402,当该当前振动片段对应的媒体片段播放到振动开始时间戳时,按照媒体片段的播放时长及当前振动片段的编码信息中记录的振动参数,输出与播放时长等长的当前振动。
在当前振动片段对应的媒体片段播放到振动开始时间戳时,可触发媒体片段对应的振动同步开始输出。因此,可控制输出该当前振动片段对应的振动。具体可解析该当前振动片段的编码信息中的有关字段,并按照字段的取值所指示的内容输出振动。
编码信息中记录的振动参数可以包括以下①至⑥中的一种或多种。
①位置字段Position,用于指示振动的输出方式。若该位置字段取值为第一预设数值(如“0”),则表示使用默认马达振动。除了马达振动之外,还可以是基于其他硬件的振动,例如电机振动。
②事件类型字段Type,用于指示事件类型。该事件类型字段取值为第一预设值(如“continuous”),表示当前振动片段对应一个持续振动。在该事件类型字段取值为第二预设值(如“transient”),表示当前振动片段对应一个简短振动。
③持续时间字段Duration,可用于指示当前振动片段的振动的持续时长(或称为振动时长)。该持续时长可以与对应媒体片段的播放时长等长。此字段属于持续振动类型参数,取值为整形数据,单位可以为毫秒(ms)。例如Duration取值为200ms表示振动的持续时长为200ms。
④振动强度字段Intensity,用于指示当前振动片段的振动强度。取值范围为[0,100]。0为平台支持的最小值, 100为平台支持的最大值。
⑤振动频率Frequency,取值范围为[0,100]。0为平台支持的最小值, 100为平台支持的最大值。
⑥曲线字段Curve,该曲线字段属于持续振动类型参数,在振动实现上基于该曲线字段可保证平滑过渡效果。该曲线字段Curve可包括以下设置:在起始点的振动强度和振动频率、在结束点的振动强度和振动频率以及在中间点的振动强度和振动频率。其中,起始点的取值与相对开始时间字段RelativeTime的取值相同,结束时间点可基于持续时间字段Duration与相对开始时间字段RelativeTime确定。例如{"Time": 0,"Intensity": 0, "Frequency": 25},其中Time为起始点。Time取值为RelativeTime的取值,Intensity取值为0保证振动维持原本设置的在振动开始时间戳的振动强度。{"Time": 200,"Intensity":0, "Frequency": 50},其中,Time为结束点。Time取值为Duration的取值,Intensity取值为0可保持在振动结束时间戳的振动强度,可避免影响下一段振动的效果。
通过对编码信息中所包含的字段、振动参数等进行解析,可按照解析出的信息进行振动。通过在振动开始时间戳启动振动以及输出媒体片段,可保证当前振动和媒体片段的输出同时开始;通过将保持输出的振动的持续时长与播放时长等长,可有效保证当前振动与媒体数据的输出同时结束,避免由于实际振动结束得过早或过晚结束而导致分段的振动之间不连续,继而避免出现振动卡顿或者断断续续的情况,保证连续振动的连续性和流畅度。
在一个实施例中,基于当前振动片段输出的当前振动包含振动开始阶段,振动过程中和振动结束阶段。振动文件中任一振动片段对应的振动均包含上述阶段,当前振动片段对应振动进行至以上任一阶段,可对应不同处理方式,包含以下(1)-(3)所示的内容。
(1)当前振动片段的振动开始阶段用于:使输出的当前振动与媒体片段开始同步。
在振动开始阶段可使输出的当前振动和媒体片段开始同步。具体可以基于当前振动片段的编码信息中的相对开始时间字段所指示的振动开始时间戳实现,即在对应振动开始时间戳同步触发输出当前振动以及媒体片段。
(2)当前振动片段的振动过程中用于:按照当前振动片段的编码信息记录的振动参数进行振动输出。
在振动过程中,可按照编码信息包含的振动强度字段、振动频率字段、曲线字段等振动参数的指示进行振动输出。
(3)当前振动片段的振动结束阶段用于:使输出的当前振动与播放时长等长。
为使得输出的当前振动的振动时长和对应媒体片段的播放时长等长,可将当前振动的振动结束时间戳与该播放结束时间戳对应,从而使得当前振动与媒体片段的播放同步结束。该振动结束时间戳是输出当前振动的实际结束时间戳,由于振动依托于硬件设备进行,因此可能会存在过早或过完结束的情况,通过在媒体片段的播放结束时间戳到达时,结束输出当前振动或者将当前振动持续至该播放结束时间戳,能够保证输出与播放时长等长的当前振动,实现较好的同步效果。
在一个实施例中,当前振动片段在振动文件中的位置包括以下任一种:振动开始段,振动中间段和振动结束段。振动文件中的多个振动片段可按序排列,振动开始段是指振动文件中按序排列的多个振动片段中的第一个振动片段,振动中间段是指振动文件中按序排列的多个振动片段中的非首个也非最后一个振动片段。当该当前振动片段为振动中间段时,该振动文件包含至少三个振动片段。至少三个振动片段是指三个或三个以上的振动片段,也就是说,在振动文件包含3个及以上的振动片段时,才存在振动中间段。若当前振动片段为该振动中间段,那么在当前振动片段对应振动之后还存在未输出的振动片段对应的振动,在当前振动片段之前的振动片段对应振动已被输出。振动结束段是指振动文件中按序排列的多个振动片段中的最后一个振动片段。当振动文件中包含两个振动片段时,当前振动片段可以为振动开始段或者振动中间段。示意性地,若振动文件对应的连续振动被分段为2段振动,振动文件包含2个振动片段,第一个振动片段为振动开始段,第二个振动片段为振动结束段。
可理解的是,针对振动文件中的任一个振动片段,对应输出的振动均可包括振动开始阶段、振动过程中以及振动结束阶段。在当前振动片段处于振动开始阶段以及振动结束阶段的情况下,可基于当前振动片段在振动文件中的位置,采用相应策略来保证振动的连续性。在输出振动的过程中,则可按照相应的振动参数(如振动强度、振动频率、振动时长)进行振动。
作为一种可实现的方式,当该当前振动片段处于振动开始阶段,且当前振动片段为振动中间段或振动结束段时,表明当前振动片段在振动文件包含的多个按序排列的振动片段中为非首个振动片段,在当前振动片段之前存在已经输出的振动片段对应的振动。为保证相邻的振动片段对应的振动之间的连续性,还可以包括以下①-②所示的内容。
①获取当前振动片段的前一振动片段对应的振动结束状态。
前一振动片段是指输出顺序排列在当前振动片段之前的振动片段。振动结束状态用于指示:前一振动片段对应的振动是否正常结束。在一种实现方式中,可基于前一振动片段的振动结束时间戳是否准时到达该前一振动片段对应媒体片段的播放结束时间戳,来确定前一振动片段对应的振动是否正常结束,如果前一振动片段的振动结束时间戳早于或晚于该前一振动片段对应媒体片段的播放结束时间戳,均可表示前一振动片段对应的振动未正常结束。如果前一振动片段的振动结束时间戳与该前一振动片段对应媒体片段的播放结束时间戳相同,则表示前一振动片段对应的振动正常结束。在另一种实现方式中,可基于振动的振动状态(如振动强度、振动频率等)是否正常来确定该前一振动片段对应的振动是否正常结束。示意性地,若在达到前一振动片段对应媒体片段的播放结束时间戳时,振动强度还大于预设强度阈值,那么表明该前一振动片段对应的振动异常结束。本申请实施例中,前一振动片段对应的振动也可称为前序振动,当前振动片段对应的振动也可称为当前振动。
根据前一振动片段的振动结束状态的指示,可确定是否对前一振动片段的振动参数进行平滑振动处理。如下②所介绍的内容。
②若振动结束状态指示前一振动片段对应的振动异常结束,则基于前一振动片段的振动参数进行平滑振动处理,并在平滑振动完成后,在当前振动片段对应的媒体片段播放到振动开始时间戳时,控制输出当前振动片段对应的振动。
在一种可实现方式中,如果前一振动片段的振动结束时间戳早于或晚于该前一振动片段对应的媒体片段的播放时间戳,那么该前一振动片段的振动结束状态可指示该前一振动片段异常结束振动。由于前一振动片段的异常结束可能导致振动之间不连续,为保持振动之间的流畅性,可基于前一振动片段的振动参数(例如振动强度字段、振动频率字段、曲线字段)进行平滑振动处理。具体地,可将当前硬件状态(如前一振动片段在振动结束时间戳的振动状态)平滑过渡至目标硬件状态(即当前振动片段在振动开始时间戳的振动状态),以确保对象感受到的振动体验是连续、流畅的。在进行平滑振动处理过程中,可基于编码信息中记录的曲线字段实现,根据该曲线字段在相应持续时长内对振动强度和振动频率进行变化,可保证振动的持续时长内振动强度和振动频率的变化更加平滑。
可理解的是,若前一振动片段的振动结束状态指示前一振动片段正常结束振动,那么可按照当前振动片段的编码信息所记录的振动开始时间戳正常进行振动。
通过上述①-②的描述,基于当前振动片段的前一振动片段是否正常结束来确定对两个振动片段之间的处理方式,并在前一振动片段未正常结束时进行平滑振动处理,从而实现两个振动片段之间的衔接的流畅度,保证振动的连续性,提升振动与媒体之间的同步效果以及契合度。
作为另一种可实现的方式,当该当前振动片段处于振动结束阶段时,按照媒体片段的播放时长及当前振动片段的编码信息中记录的振动参数,输出与播放时长等长的当前振动,包括以下③-⑤所示的几种情况。
③若当前振动片段的振动结束时间戳早于当前振动片段对应媒体片段的播放结束时间戳,则保持当前振动片段在振动结束时间戳时的振动效果,直至到达播放结束时间戳。
当前振动片段的振动结束时间戳是指基于当前振动片段输出的振动的实际结束时间。在不做任何干预下,基于硬件设备(如马达硬件)所进行的振动可能存在比播放结束时间戳(可作为振动的预设结束时间戳)过早或者过晚结束的情况。在当前振动片段的振动时间戳早于当前振动片段对应媒体片段的播放时间戳时,表示基于当前振动片段输出的振动提前结束。由于振动提前结束而后一振动片段也还未达到振动开始时间戳,在直观感受上会出现振动的断断续续的情况,从而造成不太好的体验。因此,保持马达硬件工作以及后续振动的连续性尤为必要。作为一种可行的实现方式,在振动提前结束的情况下,可继续保持当前振动片段在振动结束时间戳的振动效果直至达到媒体片段的播放结束时间戳,例如在该振动时间戳至播放结束时间戳之间的时间段,保持振动在该振动结束时间戳振动强度和振动频率不变,这样便可在当前振动过早结束的情况下继续进行振动,避免振动提前结束所造成的断断续续的现象。
对于振动文件中不同位置的振动片段,若对应振动提前结束,均可按照上述方式保证振动的连续性。而如果在到达播放结束时间戳时,基于振动片段输出的振动都还未停止,那么可基于当前振动片段的不同位置采取不同的处理策略进行振动输出。如下④和⑤所示。
④当该当前振动片段为振动开始段或振动中间段时,若当前振动片段的振动结束时间戳晚于当前振动片段对应媒体片段的播放结束时间戳,则在当前振动片段到达播放结束时间戳时,停止输出当前振动,并输出当前振动片段的后一振动片段对应的振动。
在当前振动片段为振动开始段或振动中间段时,如果当前振动片段的振动结束时间戳晚于当前振动片段对应媒体片段的播放结束时间戳,说明该当前振动片段到达振动的预设结束时间戳也还未结束振动。若不进行干预,会造成整体振动的延迟,影响后续振动,也会使得振动与媒体数据之间不同步被对象感知到。针对达到播放结束时间戳还未完成振动的情况,可在该当前振动片段达到播放结束时间戳时,停止输出当前振动。并接着输出当前振动片段的后一振动片段,以直接开始下一段振动。其中,后一振动片段是指振动文件中排序在当前振动片段之后的振动片段。
可理解的是,在当前振动片段的振动结束时间戳刚好达到对应媒体片段的播放结束时间戳时,可按照当前振动片段的后一振动片段的振动开始时间戳,直接输出该后一振动片段,从而输出下一段振动。
⑤当该当前振动片段为振动结束段时,若当前振动片段的振动结束时间戳晚于当前振动片段对应媒体片段的播放结束时间戳,则结束振动。
在当前振动片段为振动结束段时,表明基于当前振动片段输出的是连续振动的最后一段振动。在当前振动片段到达播放结束时间戳也还未结束振动,可直接结束振动。至此,振动文件所记录的连续振动已经完成。可见,无论是当前振动片段的振动结束时间戳早于或者晚于播放结束时间戳,均能够通过上述处理将振动结束时间戳校准至播放结束时间戳,以及保证后一振动片段在振动开始时间戳准时开始振动,从而保证当前振动片段对应振动和媒体片段的播放之间的同步。
上述方式中,基于对振动文件包含的振动片段将连续振动分段进行输出,并通过上述处理保证每个振动片段在振动开始时间戳准时开始,以及每个振动片段的振动结束时间戳与媒体片段的播放结束时间戳对齐,进而使得每个振动片段对应的振动时长与媒体片段的播放时长等同,达到振动与媒体数据播放的同步效果。
本申请实施例提供的振动处理方法,可从媒体数据的振动文件中获取当前振动片段,并获取到当前振动片段的编码信息。该振动文件包含一个或多个振动片段,且一个振动片段与媒体数据中的一个媒体片段对应。可见,振动文件中的振动片段与媒体数据中的媒体片段之间存在对应关系,该对应关系可保证振动片段与媒体片段之间是契合的。当前振动片段的编码信息可用于标识该当前振动片段在振动文件中的位置,基于当前振动片段的编码信息中相对开始时间字段所记录的振动开始时间戳,按照媒体片段的播放时长和编码信息中的振动参数,输出与媒体片段等长的当前振动。可见,基于当前振动片段的编码信息可控制当前振动与媒体片段在同步开始输出,以及同步结束输出,从而实现当前振动与媒体片段之间的输出同步。在输出每个振动片段对应振动,均可保证其与对应媒体片段的播放时长等长,从而保证每个分段的振动与媒体片段的输出同步,实现整体振动与媒体的同步,提供更加沉浸式的体验。
为便于理解,针对本申请实施例所介绍的振动和媒体数据同步输出的控制逻辑,可结合图5c提供的振动同步控制逻辑,提供如下示例进行阐述。
1、首先可读取振动编码。
此处读取振动编码可以是指获取当前振动片段的编码信息。通过读取编码信息可解析编码信息中所包含的相关字段,包括但不限于:片段数量字段、片段标识序号字段、片段序号字段、相对开始时间字段、振动时长字段、振动强度字段等等。示例性地,获取到的当前振动片段的编码信息如下图5d中所示。该编码信息是按照拆分后的振动编码规则对当前振动片段进行编码得到的。如图5d所示,其中,"Fragment_toal"、"Fragment_sn"、"Fragment_num"等字段可用于标识当前振动片段在振动文件中的位置。通过上述字段进行标识,能够得知振动文件是否被拆分,以及在拆分为多个振动片段的情况下,当前振动片段的输出顺序。按照当前振动片段在振动文件中的位置,以及编码参数所包含的振动参数等信息,能够采用相应策略来输出当前振动片段对应的振动。其中,曲线字段Curve可用于保证当前振动片段与其他振动片段之间振动的平滑过渡,基于Curve字段所包含的设置可对振动强度和振动频率进行平滑。不同振动片段的曲线字段可设置得不同,以在不同段的振动具备相应的平滑效果。
基于对上述编码信息所包含的字段的解析,可为播放控制做准备。即在后续控制振动输出以及媒体播放时可基于解析出的字段的取值所指示的内容来执行。
2、基于编码信息控制输出当前振动。
基于编码信息可分析出振动文件中包含一个振动片段还是多个振动片段。具体可基于片段数量字段Fragment_toal得出,该Fragment_toal可指示振动片段的片段总数量,即连续振动的分段数量。若该连续振动的分段数量为1,那么在同步播放过程中,可按照同步策略控制输出振动。即振动文件包含单独的振动片段,对应一个独立的振动,此类振动效果不需要和前序振动的振动效果保持一致,也不存在后续的振动,因此可按照编码信息中记录的触发时间戳开始振动,并在到达该振动片段对应的媒体片段的播放时间戳时结束振动,以尽可能保证振动时长和该振动片段对应的媒体片段的播放时长一致,即能够达到相对较好的振动体验。振动结束后也无需考虑如何与后续的振动效果平滑对接来保证振动连续性。
若该连续振动的分段数量大于1,每个振动片段具有一个分段序号,通过振动片段序号字段Fragment_sn指示,该分段序号即是振动片段在振动文件中的序号。针对不同分段序号的振动片段,具有相应的处理策略:①若分段序号指示当前振动片段为振动文件中的第一个振动片段(即振动开始段),那么可对应媒体片段播放至振动开始时间戳时开始输出振动,以使振动和媒体(如视频)之间的同步开始播放。由于振动文件中包含多个振动片段,在第一个振动片段之后还存在后续振动片段,因此,需在该第一个振动片段的振动结束阶段进行平滑振动处理(也可称为平滑控制),即根据振动片段对应振动是否正常结束,来校准振动结束时间戳。从而保证振动的持续时长与媒体片段的播放时长等同。②若分段序号指示当前振动片段为振动文件中的第i个振动片段,i为大于1且小于片段总数量的数值,(即振动中间段),那么可接续前一振动片段进行振动的平滑过渡(即开始平滑控制),并且当前振动片段还需根据自身的振动是否正常结束,来校准振动结束时间戳(即结束平滑控制)。
若分段序号指示当前振动片段为振动文件中的最后一个振动片段(即振动结尾段),那么同样可接续前一振动片段进行振动的平滑过渡。而由于是连续振动的最后一段振动,可不需做平滑处理来校准振动结束时间戳,在到达振动结束时间戳时直接结束振动即可。作为一种可行的实现方式,无论振动结束时间戳早于或晚于播放结束时间戳,均无需关注。作为另一种可行的实现方式,也可在振动结束时间戳早于或晚于播放结束时间戳,按照上述方式进行校准,从而使得当前振动与媒体片段的结束同步。
在基于当前振动片段的编码信息输出当前振动之后,可继续读取下一个振动片段的编码信息,进而重复以上过程来进行振动输出,直到振动文件中所有振动片段的编码信息读取完毕。
可见,上述示例的振动处理方案,可基于获取到当前振动片段的编码信息,控制输出当前振动。且在输出当前振动时,可输出当前振动片段对应的媒体片段,使得当前振动与对应媒体片段是同步输出的,保证振动输出与媒体播放的同步效果。若振动片段包含多个,在当前振动的输出过程中,还可基于当前振动片段在振动文件中所处的位置进行相应的平滑处理,保证振动的连续性以及流畅性。
接下来对本申请实施例涉及的振动处理装置进行相关阐述。
请参见图6,图6是本申请实施例提供的一种振动处理装置的结构示意图,该振动处理装置可以设置于本申请实施例提供的计算机设备中,示意性地,计算机设备可以是上述方法实施例中提及的终端设备。图6所示的振动处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),该振动处理装置可以用于执行图2以及图4所示的方法实施例中的部分或全部步骤。该振动处理装置可以包括如下单元。
获取单元601,用于从媒体数据的振动文件中获取当前振动片段,及当前振动片段的编码信息;振动文件包括一个或多个振动片段,且任一振动片段与媒体数据的一个媒体片段相对应;当前振动片段的编码信息用于标识当前振动片段在振动文件中的位置;
控制单元602,用于基于当前振动片段的编码信息,控制输出当前振动;其中,在输出当前振动时,输出与当前振动片段对应的媒体片段。
在一个实施例中,编码信息包括:片段数量字段,片段数量字段用于指示振动文件包含的一个或多个振动片段对应的片段总数量;当片段数量字段的取值大于1时,振动文件被拆分为多个振动片段,当片段数量字段的取值等于1时,振动文件未被拆分。
在一个实施例中,振动文件包含的一个或多个振动片段按序排列,且任一振动片段对应的振动按照对应的排序输出;编码信息包括片段序号字段,片段序号字段用于指示当前振动片段在振动文件中的序号,序号用于指示当前振动片段对应振动的输出顺序;若当前振动片段的片段序号字段的取值,等于当前振动片段的片段数量字段的取值,则表示当前振动片段为按序排列的一个或多个振动片段中的最后一个。
在一个实施例中,编码信息包括:片段标识字段,片段标识字段用于指示当前振动片段的标识序号;标识序号与媒体数据对应的应用程序相关联,一个应用程序对应一个标识序号。
在一个实施例中,编码信息包含相对开始时间字段,相对开始时间字段用于记录当前振动片段相对于对应媒体片段的振动开始时间戳;控制单元,具体用于:当该当前振动片段对应的媒体片段播放到振动开始时间戳时,按照媒体片段的播放时长及当前振动片段的编码信息中记录的振动参数,输出与播放时长等长的当前振动。
在一个实施例中,基于当前振动片段输出的当前振动包含振动开始阶段,振动过程中和振动结束阶段;当前振动片段的振动开始阶段用于:使输出的当前振动与媒体片段开始同步;当前振动片段的振动过程中用于:按照当前振动片段的编码信息记录的振动参数进行振动输出;当前振动片段的振动结束阶段用于:使输出的当前振动与播放时长等长。
在一个实施例中,当前振动片段在振动文件中的位置包括以下任一种:振动开始段,振动中间段和振动结束段;其中,当该当前振动片段为振动中间段时,振动文件包含至少三个振动片段。
在一个实施例中,当该当前振动片段处于振动开始阶段,且当前振动片段为振动中间段或振动结束段时;
获取单元601,还用于:获取当前振动片段的前一振动片段对应的振动结束状态;振动结束状态用于指示:前一振动片段对应的振动是否正常结束;
控制单元602,还用于若振动结束状态指示前一振动片段对应的振动异常结束,则基于前一振动片段的振动参数进行平滑振动处理,并在平滑振动完成后,在当前振动片段对应的媒体片段播放到振动开始时间戳时,控制输出当前振动片段对应的振动。
在一个实施例中,当该当前振动片段处于振动结束阶段时;控制单元602,具体用于:
若当前振动片段的振动结束时间戳早于当前振动片段对应媒体片段的播放结束时间戳,则保持当前振动片段在振动结束时间戳时的振动效果,直至到达播放结束时间戳;
当该当前振动片段为振动开始段或振动中间段时,若当前振动片段的振动结束时间戳晚于当前振动片段对应媒体片段的播放结束时间戳,则在当前振动片段到达播放结束时间戳时,停止输出当前振动,并输出当前振动片段的后一振动片段对应的振动;
当该当前振动片段为振动结束段时,若当前振动片段的振动结束时间戳晚于当前振动片段对应媒体片段的播放结束时间戳,则结束振动。
在一个实施例中,获取单元601,用于获取媒体数据的振动文件,振动文件是一个记录连续振动的文件;处理单元603,用于:从媒体数据中确定出振动文件的一个或多个同步时间戳;根据各同步时间戳对振动文件进行拆分处理,得到振动文件的多个振动片段。
在一个实施例中,处理单元603,具体用于:根据媒体数据的振动起始时间戳,将振动文件与媒体数据进行对齐处理;对齐处理后的振动文件记录的一个振动时间戳与媒体数据中的一个播放时间戳相对应;对媒体数据进行同步点识别处理,从媒体数据中确定出同步参考时间戳;基于播放时间戳与振动时间戳之间的对应关系,从振动文件中确定出与同步参考时间戳对应的振动时间戳,并将确定出的振动时间戳作为从振动文件中确定出的同步时间戳。
在一个实施例中,媒体数据包括音频数据或者视频数据时;处理单元603,具体用于:从媒体数据中确定出与振动文件相对应的参考媒体数据;获取参考媒体数据中相邻两帧之间的数据差异,并在数据差异达到差异阈值时,将相邻两帧中的前一帧对应的播放时间戳作为一个同步参考时间戳;其中,若媒体数据包括音频数据,则数据差异达到差异阈值是指:相邻两帧之间的音频差值达到第一差异阈值;若媒体数据包括视频数据,则数据差异达到差异阈值是指:相邻两帧之间的画面差异达到第二差异阈值。
在一个实施例中,媒体数据为游戏数据时,游戏数据包括游戏中的一个或多个技能操作数据;处理单元603,具体用于:获取游戏数据中各个技能操作数据对应的操作时间戳;当任一技能操作数据对应的操作时间戳为至少两个时,将任一技能操作数据对应的至少两个操作时间戳,作为同步参考时间戳。
在一个实施例中,处理单元603,具体用于:获取参考时长;按照参考时长对媒体数据进行同步点识别处理,得到相应的同步参考时间戳。
在一个实施例中,处理单元603,还用于:确定振动文件中记录的连续振动的类型;若连续振动的类型为第一类型,则对振动文件进行拆分处理,以使振动文件包含多个振动片段;第一类型的连续振动是指对应振动时长大于或等于预设阈值的连续振动;其中,若连续振动的类型为第二类型,则振动文件包括一个振动片段,第二类型的连续振动是指对应振动时长小于预设阈值的连续振动;当振动文件包括一个振动片段时,编码信息包含触发输出连续振动的触发时间戳。
在本申请实施例中,可从媒体数据的振动文件中获取当前振动片段,并获取到当前振动片段的编码信息。该振动文件包含一个或多个振动片段,且一个振动片段与媒体数据中的一个媒体片段对应。可见,振动文件中的振动片段与媒体数据中的媒体片段之间存在对应关系,该对应关系可保证振动片段与媒体片段之间是契合的。当前振动片段的编码信息可用于标识该当前振动片段在振动文件中的位置,基于当前振动片段的编码信息,可控制输出当前振动,且在输出当前振动时,可输出当前振动片段对应的媒体片段。可见,基于当前振动片段的编码信息可控制当前振动片段对应振动的输出,并且当前振动与对应媒体片段之间是同步输出的。若振动文件包含多个振动片段,对于振动的输出是分段进行的,且对于振动文件中的每个振动片段,其所对应的振动均能够在编码信息的指示下和对应的媒体片段同步输出;另外,针对在振动文件中的位置不同的振动片段,对应振动的输出也可基于编码信息进行灵活控制。通过每个分段的振动与媒体片段的输出同步,能够保证整体振动与媒体的同步,进而为对象提供更加沉浸式的体验。
接下来对本申请实施例提供的计算机设备进行相关阐述。
本申请实施例还提供了一种计算机设备的结构示意图,该计算机设备的结构示意图可参见图7;该计算机设备可以包括:处理器701、输入设备702,输出设备703和存储器704。上述处理器701、输入设备702、输出设备703和存储器704通过总线连接。存储器704用于存储计算机程序,计算机程序包括程序指令,处理器701用于执行存储器704存储的程序指令。
在一个实施例中,该计算机设备可以是如图1所示系统中的终端设备或者服务器;在此实施例中,处理器701通过运行存储器704中的可执行程序代码,执行如下操作:
从媒体数据的振动文件中获取当前振动片段,及当前振动片段的编码信息;振动文件包括一个或多个振动片段,且任一振动片段与媒体数据的一个媒体片段相对应;当前振动片段的编码信息用于标识当前振动片段在振动文件中的位置;
基于当前振动片段的编码信息,控制输出当前振动;其中,在输出当前振动时,输出与当前振动片段对应的媒体片段。
在一个实施例中,编码信息包括:片段数量字段,片段数量字段用于指示振动文件包含的一个或多个振动片段对应的片段总数量;当片段数量字段的取值大于1时,振动文件被拆分为多个振动片段,当片段数量字段的取值等于1时,振动文件未被拆分。
在一个实施例中,振动文件包含的一个或多个振动片段按序排列,且任一振动片段对应的振动按照对应的排序输出;编码信息包括片段序号字段,片段序号字段用于指示当前振动片段在振动文件中的序号,序号用于指示当前振动片段对应振动的输出顺序;若当前振动片段的片段序号字段的取值,等于当前振动片段的片段数量字段的取值,则表示当前振动片段为按序排列的一个或多个振动片段中的最后一个。
在一个实施例中,编码信息包括:片段标识字段,片段标识字段用于指示当前振动片段的标识序号;标识序号与媒体数据对应的应用程序相关联,一个应用程序对应一个标识序号。
在一个实施例中,编码信息包含相对开始时间字段,相对开始时间字段用于记录当前振动片段相对于对应媒体片段的振动开始时间戳;控制单元,具体用于:当该当前振动片段对应的媒体片段播放到振动开始时间戳时,按照媒体片段的播放时长及当前振动片段的编码信息中记录的振动参数,输出与播放时长等长的当前振动。
在一个实施例中,基于当前振动片段输出的当前振动包含振动开始阶段,振动过程中和振动结束阶段;当前振动片段的振动开始阶段用于:使输出的当前振动与媒体片段开始同步;当前振动片段的振动过程中用于:按照当前振动片段的编码信息记录的振动参数进行振动输出;当前振动片段的振动结束阶段用于:使输出的当前振动与播放时长等长。
在一个实施例中,当前振动片段在振动文件中的位置包括以下任一种:振动开始段,振动中间段和振动结束段;其中,当该当前振动片段为振动中间段时,振动文件包含至少三个振动片段。
在一个实施例中,当该当前振动片段处于振动开始阶段,且当前振动片段为振动中间段或振动结束段时;
处理器701,还用于:获取当前振动片段的前一振动片段对应的振动结束状态;振动结束状态用于指示:前一振动片段对应的振动是否正常结束;
处理器701,还用于:若振动结束状态指示前一振动片段对应的振动异常结束,则基于前一振动片段的振动参数进行平滑振动处理,并在平滑振动完成后,在当前振动片段对应的媒体片段播放到振动开始时间戳时,控制输出当前振动片段对应的振动。
在一个实施例中,当该当前振动片段处于振动结束阶段时;处理器701,具体用于:
若当前振动片段的振动结束时间戳早于当前振动片段对应媒体片段的播放结束时间戳,则保持当前振动片段在振动结束时间戳时的振动效果,直至到达播放结束时间戳;
当该当前振动片段为振动开始段或振动中间段时,若当前振动片段的振动结束时间戳晚于当前振动片段对应媒体片段的播放结束时间戳,则在当前振动片段到达播放结束时间戳时,停止输出当前振动,并输出当前振动片段的后一振动片段对应的振动;
当该当前振动片段为振动结束段时,若当前振动片段的振动结束时间戳晚于当前振动片段对应媒体片段的播放结束时间戳,则结束振动。
在一个实施例中,处理器701,用于获取媒体数据的振动文件,振动文件是一个记录连续振动的文件;处理器701,用于:从媒体数据中确定出振动文件的一个或多个同步时间戳;根据各同步时间戳对振动文件进行拆分处理,得到振动文件的多个振动片段。
在一个实施例中,处理器701,具体用于:根据媒体数据的振动起始时间戳,将振动文件与媒体数据进行对齐处理;对齐处理后的振动文件记录的一个振动时间戳与媒体数据中的一个播放时间戳相对应;对媒体数据进行同步点识别处理,从媒体数据中确定出同步参考时间戳;基于播放时间戳与振动时间戳之间的对应关系,从振动文件中确定出与同步参考时间戳对应的振动时间戳,并将确定出的振动时间戳作为从振动文件中确定出的同步时间戳。
在一个实施例中,媒体数据包括音频数据或者视频数据时;处理器701,具体用于:从媒体数据中确定出与振动文件相对应的参考媒体数据;获取参考媒体数据中相邻两帧之间的数据差异,并在数据差异达到差异阈值时,将相邻两帧中的前一帧对应的播放时间戳作为一个同步参考时间戳;其中,若媒体数据包括音频数据,则数据差异达到差异阈值是指:相邻两帧之间的音频差值达到第一差异阈值;若媒体数据包括视频数据,则数据差异达到差异阈值是指:相邻两帧之间的画面差异达到第二差异阈值。
在一个实施例中,媒体数据为游戏数据时,游戏数据包括游戏中的一个或多个技能操作数据;处理器701,具体用于:获取游戏数据中各个技能操作数据对应的操作时间戳;当任一技能操作数据对应的操作时间戳为至少两个时,将任一技能操作数据对应的至少两个操作时间戳,作为同步参考时间戳。
在一个实施例中,处理器701,具体用于:获取参考时长;按照参考时长对媒体数据进行同步点识别处理,得到相应的同步参考时间戳。
在一个实施例中,处理器701,还用于:确定振动文件中记录的连续振动的类型;若连续振动的类型为第一类型,则对振动文件进行拆分处理,以使振动文件包含多个振动片段;第一类型的连续振动是指对应振动时长大于或等于预设阈值的连续振动;若连续振动的类型为第二类型,则振动文件包括一个振动片段,第二类型的连续振动是指对应振动时长小于预设阈值的连续振动;其中,当振动文件包括一个振动片段时,编码信息包含触发输出连续振动的触发时间戳。
在本申请实施例中,可从媒体数据的振动文件中获取当前振动片段,并获取到当前振动片段的编码信息。该振动文件包含一个或多个振动片段,且一个振动片段与媒体数据中的一个媒体片段对应。可见,振动文件中的振动片段与媒体数据中的媒体片段之间存在对应关系,该对应关系可保证振动片段与媒体片段之间是契合的。当前振动片段的编码信息可用于标识该当前振动片段在振动文件中的位置,基于当前振动片段的编码信息,可控制输出当前振动,且在输出当前振动时,可输出当前振动片段对应的媒体片段。可见,基于当前振动片段的编码信息可控制当前振动片段对应振动的输出,并且当前振动与对应媒体片段之间是同步输出的。若振动文件包含多个振动片段,对于振动的输出是分段进行的,且对于振动文件中的每个振动片段,其所对应的振动均能够在编码信息的指示下和对应的媒体片段同步输出;另外,针对在振动文件中的位置不同的振动片段,对应振动的输出也可基于编码信息进行灵活控制。通过每个分段的振动与媒体片段的输出同步,能够保证整体振动与媒体的同步,进而为对象提供更加沉浸式的体验。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有计算机程序,且该计算机程序包括程序指令,当处理器执行上述程序指令时,能够执行前文图2和图4所对应实施例中的方法,因此,这里将不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备可以执行前文图2和图4所对应实施例中的方法,因此,这里将不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于本申请所涵盖的范围。

Claims (17)

1.一种振动处理方法,其特征在于,包括:
从媒体数据的振动文件中获取当前振动片段,及所述当前振动片段的编码信息;所述振动文件包括一个或多个振动片段,且任一振动片段与所述媒体数据的一个媒体片段相对应;所述当前振动片段的编码信息用于标识所述当前振动片段在所述振动文件中的位置,所述当前振动片段在所述振动文件中的位置包括以下任一种:振动开始段、振动中间段和振动结束段;
基于所述当前振动片段的编码信息,控制输出当前振动,所述当前振动包含振动开始阶段、振动过程中和振动结束阶段;其中,在输出所述当前振动时,输出与所述当前振动片段对应的媒体片段;
当所述当前振动片段处于所述振动开始阶段,且所述当前振动片段为振动中间段或振动结束段时,获取所述当前振动片段的前一振动片段对应的振动结束状态,所述振动结束状态用于指示所述前一振动片段对应的振动是否正常结束;
若所述振动结束状态指示所述前一振动片段对应的振动异常结束,则基于所述前一振动片段的振动参数进行平滑振动处理,并在平滑振动完成后,在所述当前振动片段对应的媒体片段播放到所述媒体片段的振动开始时间戳时,控制输出所述当前振动片段对应的振动。
2.如权利要求1所述的方法,其特征在于,所述编码信息包括:片段数量字段,所述片段数量字段用于指示所述振动文件包含的一个或多个振动片段对应的片段总数量;
当所述片段数量字段的取值大于1时,所述振动文件被拆分为多个振动片段,当所述片段数量字段的取值等于1时,所述振动文件未被拆分。
3.如权利要求2所述的方法,其特征在于,所述振动文件包含的一个或多个振动片段按序排列,且任一振动片段对应的振动按照对应的排序输出;
所述编码信息包括片段序号字段,所述片段序号字段用于指示所述当前振动片段在所述振动文件中的序号,所述序号用于指示所述当前振动片段对应振动的输出顺序;
若所述当前振动片段的片段序号字段的取值,等于所述当前振动片段的片段数量字段的取值,则表示所述当前振动片段为按序排列的一个或多个振动片段中的最后一个。
4.如权利要求1所述的方法,其特征在于,所述编码信息包括:片段标识字段,所述片段标识字段用于指示所述当前振动片段的标识序号;
所述标识序号与所述媒体数据对应的应用程序相关联,一个应用程序对应一个标识序号。
5.如权利要求1-4任一项所述的方法,其特征在于,所述编码信息包含相对开始时间字段,所述相对开始时间字段用于记录所述当前振动片段相对于对应媒体片段的振动开始时间戳;所述基于所述当前振动片段的编码信息,控制输出当前振动,包括:
当所述当前振动片段对应的媒体片段播放到所述振动开始时间戳时,按照所述媒体片段的播放时长及所述当前振动片段的编码信息中记录的振动参数,输出与所述播放时长等长的当前振动。
6.如权利要求5所述的方法,其特征在于,所述当前振动片段的振动开始阶段用于:使输出的当前振动与所述媒体片段开始同步;
所述当前振动片段的振动过程中用于:按照所述当前振动片段的编码信息记录的振动参数进行振动输出;
所述当前振动片段的振动结束阶段用于:使输出的当前振动与所述播放时长等长。
7.如权利要求6所述的方法,其特征在于,当所述当前振动片段为所述振动中间段时,所述振动文件包含至少三个振动片段。
8.如权利要求7所述的方法,其特征在于,当所述当前振动片段处于振动结束阶段时;所述按照所述媒体片段的播放时长及所述当前振动片段的编码信息中记录的振动参数,输出与所述播放时长等长的当前振动,包括:
若所述当前振动片段的振动结束时间戳早于所述当前振动片段对应媒体片段的播放结束时间戳,则保持所述当前振动片段在所述振动结束时间戳时的振动效果,直至到达所述播放结束时间戳;
当所述当前振动片段为振动开始段或振动中间段时,若所述当前振动片段的振动结束时间戳晚于所述当前振动片段对应媒体片段的播放结束时间戳,则在所述当前振动片段到达所述播放结束时间戳时,停止输出所述当前振动,并输出所述当前振动片段的后一振动片段对应的振动;
当所述当前振动片段为振动结束段时,若所述当前振动片段的振动结束时间戳晚于所述当前振动片段对应媒体片段的播放结束时间戳,则结束振动。
9.如权利要求1所述的方法,其特征在于,所述方法包括:
获取所述媒体数据的振动文件,所述振动文件是一个记录连续振动的文件;
从所述媒体数据中确定出所述振动文件的一个或多个同步时间戳;
根据各同步时间戳对所述振动文件进行拆分处理,得到所述振动文件的多个振动片段。
10.如权利要求9所述的方法,其特征在于,所述从所述媒体数据中确定出所述振动文件的一个或多个同步时间戳,包括:
根据所述媒体数据的振动起始时间戳,将所述振动文件与所述媒体数据进行对齐处理;对齐处理后的振动文件记录的一个振动时间戳与所述媒体数据中的一个播放时间戳相对应;
对所述媒体数据进行同步点识别处理,从所述媒体数据中确定出同步参考时间戳;
基于播放时间戳与振动时间戳之间的对应关系,从所述振动文件中确定出与所述同步参考时间戳对应的振动时间戳,并将确定出的振动时间戳作为从所述振动文件中确定出的同步时间戳。
11.如权利要求10所述的方法,其特征在于,所述媒体数据包括音频数据或者视频数据时;所述对所述媒体数据进行同步点识别处理,从所述媒体数据中确定出同步参考时间戳,包括:
从所述媒体数据中确定出与所述振动文件相对应的参考媒体数据;
获取所述参考媒体数据中相邻两帧之间的数据差异,并在所述数据差异达到差异阈值时,将所述相邻两帧中的前一帧对应的播放时间戳作为一个同步参考时间戳;
其中,若所述媒体数据包括所述音频数据,则所述数据差异达到所述差异阈值是指:相邻两帧之间的音频差值达到第一差异阈值;若所述媒体数据包括所述视频数据,则所述数据差异达到差异阈值是指:相邻两帧之间的画面差异达到第二差异阈值。
12.如权利要求10所述的方法,其特征在于,所述媒体数据为游戏数据时,所述游戏数据包括游戏中的一个或多个技能操作数据;所述对所述媒体数据进行同步点识别处理,从所述媒体数据中确定出同步参考时间戳,包括:
获取所述游戏数据中各个技能操作数据对应的操作时间戳;
当任一技能操作数据对应的操作时间戳为至少两个时,将所述任一技能操作数据对应的至少两个操作时间戳,作为同步参考时间戳。
13.如权利要求10所述的方法,其特征在于,所述对所述媒体数据进行同步点识别处理,从所述媒体数据中确定出同步参考时间戳,包括:
获取参考时长;
按照所述参考时长对所述媒体数据进行同步点识别处理,得到相应的同步参考时间戳。
14.如权利要求9所述的方法,其特征在于,所述方法还包括:
确定所述振动文件中记录的连续振动的类型;
若所述连续振动的类型为第一类型,则对所述振动文件进行拆分处理,以使所述振动文件包含多个振动片段;所述第一类型的连续振动是指对应振动时长大于或等于预设阈值的连续振动;
若所述连续振动的类型为第二类型,则所述振动文件包括一个振动片段,所述第二类型的连续振动是指对应振动时长小于预设阈值的连续振动;其中,当所述振动文件包括一个振动片段时,所述编码信息包含触发输出所述连续振动的触发时间戳。
15.一种振动处理装置,其特征在于,包括:
获取单元,用于从媒体数据的振动文件中获取当前振动片段,及所述当前振动片段的编码信息;所述振动文件包括一个或多个振动片段,且任一振动片段与所述媒体数据的一个媒体片段相对应;所述当前振动片段的编码信息用于标识所述当前振动片段在所述振动文件中的位置,所述当前振动片段在所述振动文件中的位置包括以下任一种:振动开始段、振动中间段和振动结束段;
控制单元,用于基于所述当前振动片段的编码信息,控制输出当前振动,所述当前振动包含振动开始阶段、振动过程中和振动结束阶段;其中,在输出所述当前振动时,输出与所述当前振动片段对应的媒体片段;
当所述当前振动片段处于所述振动开始阶段,且所述当前振动片段为振动中间段或振动结束段时,所述获取单元还用于:获取所述当前振动片段的前一振动片段对应的振动结束状态,所述振动结束状态用于指示所述前一振动片段对应的振动是否正常结束;
若所述振动结束状态指示所述前一振动片段对应的振动异常结束,则基于所述前一振动片段的振动参数进行平滑振动处理,并在平滑振动完成后,在所述当前振动片段对应的媒体片段播放到所述媒体片段的振动开始时间戳时,控制输出所述当前振动片段对应的振动。
16.一种计算机设备,其特征在于,包括:
处理器,适用于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,执行如权利要求1-14任一项所述的振动处理方法。
17.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时,执行如权利要求1-14任一项所述的振动处理方法。
CN202310380081.1A 2023-04-11 2023-04-11 一种振动处理方法及相关设备 Active CN116095380B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310380081.1A CN116095380B (zh) 2023-04-11 2023-04-11 一种振动处理方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310380081.1A CN116095380B (zh) 2023-04-11 2023-04-11 一种振动处理方法及相关设备

Publications (2)

Publication Number Publication Date
CN116095380A CN116095380A (zh) 2023-05-09
CN116095380B true CN116095380B (zh) 2023-06-30

Family

ID=86199588

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310380081.1A Active CN116095380B (zh) 2023-04-11 2023-04-11 一种振动处理方法及相关设备

Country Status (1)

Country Link
CN (1) CN116095380B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117149160B (zh) * 2023-08-23 2024-04-02 浙江十勇士网络科技有限公司 一种手机游戏资源打包方法、系统与存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101486581B1 (ko) * 2008-07-01 2015-02-04 엘지전자 주식회사 휴대 단말기 및 그 구동 방법
CN107613356A (zh) * 2017-08-30 2018-01-19 瑞声科技(新加坡)有限公司 媒体和震动同步播放方法及装置、电子设备以及存储介质
CN111261185A (zh) * 2020-01-10 2020-06-09 腾讯音乐娱乐科技(深圳)有限公司 播放音频的方法、装置、系统、设备及存储介质
CN111552377A (zh) * 2020-03-30 2020-08-18 瑞声科技(新加坡)有限公司 振动信号的生成方法、装置、设备及存储介质
JP2021175146A (ja) * 2020-04-30 2021-11-01 パイオニア株式会社 振動信号出力装置
CN112416116B (zh) * 2020-06-01 2022-11-11 上海哔哩哔哩科技有限公司 计算机设备的震动控制方法和系统

Also Published As

Publication number Publication date
CN116095380A (zh) 2023-05-09

Similar Documents

Publication Publication Date Title
CN109089154B (zh) 一种视频提取方法、装置、设备及介质
CN109089127B (zh) 一种视频拼接方法、装置、设备及介质
CN108495152B (zh) 一种视频直播方法、装置、电子设备及介质
CN105187896B (zh) 多分段的媒体文件播放方法和系统
CN112188225B (zh) 用于直播回放的弹幕下发方法和直播视频弹幕回放方法
CN116095380B (zh) 一种振动处理方法及相关设备
CN113518247A (zh) 视频播放方法、相关设备及计算机可读存储介质
CN111418215B (zh) 媒体客户端、方法、非暂时性数据存储装置
CN109905749B (zh) 视频播放方法和装置、存储介质及电子装置
CN112383790B (zh) 直播的录屏方法、装置、电子设备及存储介质
TWI620438B (zh) 校正直播節目中互動時間的方法、裝置與電腦可讀取儲存裝置
CN111383656B (zh) 声波纹直播方法、装置、服务器、客户端设备及存储介质
EP3748978A1 (en) Screen recording method, client, and terminal device
CN108260024B (zh) 直播数据处理方法、装置、计算机设备和存储介质
CN110139128A (zh) 一种信息处理方法、拦截器、电子设备及存储介质
CN108156498A (zh) 一种音视频同步的方法及装置
CN108616768B (zh) 多媒体资源的同步播放方法、装置、存储位置及电子装置
US20230156172A1 (en) Synchronizing secondary audiovisual content based on frame transitions in streaming content
CN112533058A (zh) 视频处理方法、装置、设备及计算机可读存储介质
US9978423B2 (en) Modified playback rate for portions of video content
CN112653896B (zh) 带看助手的房源信息回放方法、装置、电子设备和介质
US20220417619A1 (en) Processing and playing control over interactive video
CN113938617A (zh) 一种多路视频显示方法、设备、网络摄像机及存储介质
CN109999490B (zh) 一种降低联网云应用延迟的方法及系统
CN114760485A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40086441

Country of ref document: HK