封装标注信息的方法、装置及计算机存储介质与流程

文档序号:30157048发布日期:2022-05-26 07:51阅读:106来源:国知局
1.本技术实施例涉及多媒体
技术领域
:,特别涉及一种封装标注信息的方法、装置及计算机存储介质。
背景技术
::2.在多媒体
技术领域
:,通常需要对视频进行标注。比如在训练算法模型时,需要预先对视频中的视频帧进行标注,然后将标注后的视频帧作为训练样本来训练算法模型。在标注视频帧之后,如何封装标注信息在一定程度上会影响后续标注信息的使用。3.相关技术中,在将源视频文件中的码流解码得到视频帧后,对视频帧进行标注,然后将解码后的视频帧封装为媒体数据包,将各视频帧的标注信息封装为标注数据包。之后将媒体数据包和标注数据包写入基于私有协议定义的浓缩视频文件,从而实现对标注信息的封装。但是这种封装标注信息的方式由于浓缩文件的易丢失性进而导致标注信息容易丢失。技术实现要素:4.本技术实施例提供了一种封装标注信息的方法、装置及计算机存储介质,可以降低标注信息的丢失风险。所述技术方案如下:5.一方面,提供了一种封装标注信息的方法,所述方法包括:6.获取源视频文件,所述源视频文件包括视频帧的码流以及针对所述码流的描述信息,所述描述信息用于携带所述视频帧的标注信息;7.基于所述码流显示所述视频帧;8.响应于针对所述视频帧的标注指令,获取所述与所述标注指令对应的标注信息,将与所述标注指令对应的标注信息写入所述描述信息,得到更新后的源视频文件。9.可选地,所述源视频文件的描述信息中没有携带所述视频帧的历史标注信息;10.所述获取所述与所述标注指令对应的标注信息,将与所述标注指令对应的标注信息写入所述描述信息,包括:11.在所述描述信息中添加与所述标注指令对应的标注信息。12.可选地,所述源视频文件的描述信息中携带有所述视频帧的历史标注信息;13.所述获取所述与所述标注指令对应的标注信息,将与所述标注指令对应的标注信息写入所述描述信息,包括:14.在保留所述描述信息中的历史标注信息的情况下,在所述描述信息中继续添加与所述标注指令对应的标注信息。15.可选地,所述基于所述码流显示所述视频帧之后,所述方法还包括:16.基于所述历史标注信息显示所述视频帧的历史标注;17.其中,所述标注指令包括针对所述历史标注的修改指令、针对所述历史标注的删除指令、标注新增指令中的一者或多者。18.可选地,所述获取源视频文件之后,所述方法还包括:19.确定所述源视频文件中的所述描述信息的起始偏移位置;20.所述将与所述标注指令对应的标注信息写入所述描述信息,包括:21.基于所述起始偏移位置,将所述与所述标注指令对应的标注信息写入所述描述信息,得到更新后的描述信息;22.基于更新后的描述信息的长度,更新所述源视频文件中记录的其他数据的起始偏移位置。23.可选地,所述源视频文件为节目流ps格式封装的源视频文件,所述源视频文件包括ps包,所述ps包中包括多个视频帧的码流以及节目流映射psm,所述psm用于存储所述多个视频的码流的描述信息。24.可选地,所述psm包括与所述多个视频帧分别对应的描述信息字段,所述描述信息字段中包括一个或多个描述符字段,每个描述符字段用于存储一次标注操作对应的标注信息。25.可选地,所述描述信息字段包括标注指示字段,所述标注指示字段指示在所述标注指示字段后的内容为相应视频的标注信息。26.可选地,所述描述信息字段包括标注类型字段,所述标注类型字段指示相应视频帧的标注信息对应的标注类型。27.另一方面,提供了一种封装标注信息的装置,所述装置包括:28.获取模块,用于获取源视频文件,所述源视频文件包括视频帧的码流以及针对所述码流的描述信息,所述描述信息用于携带所述视频帧的标注信息;29.显示模块,用于基于所述码流显示所述视频帧;30.封装模块,用于响应于针对所述视频帧的标注指令,获取所述与所述标注指令对应的标注信息,将与所述标注指令对应的标注信息写入所述描述信息,得到更新后的源视频文件。31.可选地,所述源视频文件的描述信息中没有携带所述视频帧的历史标注信息;32.所述封装模块用于:33.在所述描述信息中添加与所述标注指令对应的标注信息。34.可选地,所述源视频文件的描述信息中携带有所述视频帧的历史标注信息;35.所述封装模块用于:36.在保留所述描述信息中的历史标注信息的情况下,在所述描述信息中继续添加与所述标注指令对应的标注信息。37.可选地,所述显示模块还用于:38.基于所述码流显示所述视频帧之后,基于所述历史标注信息显示所述视频帧的历史标注;39.其中,所述标注指令包括针对所述历史标注的修改指令、针对所述历史标注的删除指令、标注新增指令中的一者或多者。40.可选地,所述获取模块还用于:41.确定所述源视频文件中的所述描述信息的起始偏移位置;42.所述封装模块用于:43.基于所述起始偏移位置,将所述与所述标注指令对应的标注信息写入所述描述信息,得到更新后的描述信息;44.基于更新后的描述信息的长度,更新所述源视频文件中记录的其他数据的起始偏移位置。45.可选地,所述源视频文件为节目流ps格式封装的源视频文件,所述源视频文件包括ps包,所述ps包中包括多个视频帧的码流以及节目流映射psm,所述psm用于存储所述多个视频的码流的描述信息。46.可选地,所述psm包括与所述多个视频帧分别对应的描述信息字段,所述描述信息字段中包括一个或多个描述符字段,每个描述符字段用于存储一次标注操作对应的标注信息。47.可选地,所述描述信息字段包括标注指示字段,所述标注指示字段指示在所述标注指示字段后的内容为相应视频的标注信息。48.可选地,所述描述信息字段包括标注类型字段,所述标注类型字段指示相应视频帧的标注信息对应的标注类型。49.另一方面,提供了一种封装标注信息的装置,所述装置包括:50.处理器;51.用于存储处理器可执行指令的存储器;52.其中,所述处理器被配置为执行上述提供的封装标注信息的方法中的任一步骤。53.另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述提供的封装标注信息的方法中的任一步骤。54.另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述提供的封装标注信息的方法中的任一步骤。55.在本技术实施例中,在源视频文件中扩展出用于携带视频帧的标注信息的描述信息,如此,在对视频帧进行标注后,便可将此次标注的标注信息写入该描述信息,从而实现将标注信息封装在源视频文件中。该技术方案至少可以实现以下几个技术效果:56.(1)由于标注信息是封装在源视频文件中的,因此,只要源视频文件保管妥善,封装在该源视频文件中的标注信息便不会丢失。考虑到源视频文件不易丢失性,因此通过本技术实施例提供的技术方案可以避免标注信息的丢失。57.(2)在源视频文件中扩展用于携带视频帧的标注信息的描述信息,这样可以基于源视频文件对应的标准语法来扩展该描述信息。从而在保证源视频文件的封装层语法标准和视频帧正常播放的前提下,实现标注信息的无侵入性封装。无需基于私有协议的定义来单独封装标注信息,提高了本技术实施例提供的技术方案的便利性。58.(3)由于将标注信息封装在源视频文件中,因此无需在独立于源视频文件之外单独封装一个标注数据包,这样也可以减少封装后的标注信息的占用空间。附图说明59.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。60.图1是本技术实施例提供的一种标注系统的架构示意图。61.图2是本技术实施例提供的一种ps格式封装的源视频文件的数据格式示意图。62.图3是本技术实施例提供的一种psm的语法规则示意图。63.图4是本技术实施例提供的一种封装标注信息的方法流程图。64.图5是本技术实施例提供的一种封装标注信息的装置示意图。65.图6是本技术实施例提供的一种终端的结构示意图。66.图7是本技术实施例提供的一种服务器的结构示意图。具体实施方式67.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。68.在对本技术实施例进行详细解释说明之前,先对本技术实施例的应用场景进行解释说明。69.目前,基于多媒体数据的ai(artificialintelligence,ai)技术迅猛发展,基于ai技术的ai应用也随之越来越多,大量的ai应用正在快速融入我们的工作和生活中。比如人脸考勤、无人驾驶、无人超市等ai应用。视频数据作为多媒体数据占比最高的数据形式,将作为未来ai技术中数据素材的主力军。并且,目前ai应用离不开算法的模型训练,而算法的模型训练又离不开标注的训练样本,标注的训练样本包括图片数据和标注信息,因此,如何对源视频文件进行标注、以及对标注后的标注信息如何封装,进而保存和解析是ai技术能否顺利应用的前提。70.本技术实施例提供的封装标注信息的方法就应用于上述ai技术中训练算法的模型的场景中。可选地,本技术实施例提供的封装标注信息的方法也可以应用在其他需要对视频帧进行标注的场景中。在此就不再一一举例说明。71.为了实现本技术实施例提供的封装标注信息的方法,本技术实施例提供了一种标注系统。基于该标注系统可以实现本技术实施例的技术方案。下面对本技术实施例提供的标注系统进行解释说明。72.图1是本技术实施例提供的一种标注系统的架构示意图。如图1所示,该标注系统100包括解析模块101、标注模块102以及封装模块103。73.其中,解析模块101用于将源视频文件进行解封装和解码等操作,以得到各个视频帧和/或历史标注信息,并将各个视频帧和/或历史标注信息发送给标注模块102。74.标注模块102用于在标注界面显示各个视频帧,还用于在标注界面基于历史标注信息显示历史标注。用户可以在标注界面进行人工标注。在用户进行人工标注之后,标注模块便可响应于用户基于标注界面触发的标注指令,获取此次标注指令对应的标注信息。然后标注模块102将此次标注指令对应的标注信息发送至封装模块103。75.封装模块103用于将标注信息封装到源视频文件中,从而实现对源视频文件的更新。76.本技术实施例中的涉及的标注信息可以由各算法进行自定义。也即是,本技术实施例并不限定标注信息的具体内容,在应用本技术实施例时,可以基于算法定义标注信息来实现本技术实施例提供的方法。在一种可能的实现方式中,标注信息可以包括标注人员、标注时间、标注序号等信息。以便于更详细的标注轨迹追溯。其中,标注轨迹指示针对一帧视频帧的各次标注的相关信息。77.需要说明的是,图1所示的标注系统可以集中式地部署在一个终端中,也可以集中式地部署在一个服务器中,可选地,该标注系统中的各个模块还可以分布式部署在不同的设备上,本技术实施例对此不做限定。78.此外,图1中标注系统各个模块为软件模块,各个模块的命名是基于软件模块的功能命名的。在应用本技术实施例时,可以基于需求进行不同的命名,比如,可以将解析模块命名为第一模块,将标注模块命名为第二模块,将封装模块命名为第三模块等。本技术实施例并不限定上述各个模块的命名。79.在本技术实施例中,为了避免标注信息丢失,可以对源视频文件中的字段进行扩展,以使源视频文件能够携带视频帧的标注信息。目前,源视频文件的封装格式有多种类型,比如,有ps(programstream,节目流)格式封装的源视频文件,有mp4(mediaportable4,第四代便携式多媒体)格式封装的源视频文件,还有诸如avi(audiovideointerleaved,即音频视频交错)、rmvb(real-mediavariablebitrate,真实多媒体可变比特率)等格式封装的源视频文件。对于任一类型封装格式的源视频文件,均可以在源视频文件中扩展出能够携带视频帧的标注信息的字段。80.在一种可能的实现方式中,为了避免对源视频文件的原有格式的改动,可以对源视频文件中已有的字段进行扩展,从而实现将标注信息无侵入式地封装在源视频文件中。可选地,也可以在源视频文件中新增字段来携带标注信息,本技术实施例对此不做限定,只需保证扩展后的源视频文件中能够携带视频帧的标注信息即可。81.下面以源视频文件为ps格式封装的源视频文件为例来说明如何在源视频文件中携带视频帧的标注信息。82.在源视频文件为ps格式封装的源视频文件的情况下,源视频文件包括ps包,ps包中包括多个视频帧的码流以及psm(programstreammap,节目流映射)。该psm用于存储多个视频的码流的描述信息。也即是,对于ps格式封装的源视频文件,将源视频文件中的psm扩展,以使psm能够用于携带视频帧的标注信息。83.图2是本技术实施例提供的一种ps格式封装的源视频文件的数据格式示意图。如图2所示,该源视频文件包括多个ps包。每个ps包中包括psh(psheader,ps包的包头)、psm以及多个pes(packetizedelementarystream,包基本流)。其中,psh用于携带系统时间等信息。psm用于携带各个pes之间相互关系的描述等信息。pes为码流的基本单位,用于携带各个视频帧的码流。84.此外,各个pes携带的码流对应一个i帧和数个b/p帧,比如第一个pes用于携带i帧的码流,后面的pes依次用于携带数个b/p帧的码流。其中,i帧是内部编码帧(也称为关键帧),p帧是前向预测帧(也称为前向参考帧),b帧是双向内插帧(也称为双向参考帧)。简单地讲,i帧是一个完整的画面,而p帧和b帧记录的是相对于i帧的变化。如果没有i帧,p帧和b帧就无法解码。85.对于图2所示的源视频文件,在一种可能的实现方式中,psm包括与多个视频帧分别对应的描述信息字段,该描述信息字段中包括一个或多个描述符字段,对每个描述符字段进行扩展,以使每个描述符字段用于存储一次标注操作对应的标注信息。从而实现将标注信息封装在源视频文件的已有字段中。86.图3是本技术实施例提供的一种psm的语法规则示意图。该语法规则是rfc-13818(requestforcomments-13818,是一系列以编号排定的文件)文档中定义的psm的语法规则。图3中实线方框所示即为上述描述信息字段。实线方框中第一个循环(对应图3中的实线方框中第一行代码)指示每一个视频帧的描述信息字段。因此,在psm中包括与每个视频帧分别对应的描述信息字段。虚线框中的第二个循环字段(对应图3中的虚线框中倒数第二行代码)对应一帧视频帧的各个描述符(descriptor)字段,每个描述符字段用于存储一次标注操作对应的标注信息。如此,psm中针对每一帧视频帧的任何一次标注均可以进行记录,从而实现记录标注轨迹。标注轨迹指示针对一帧视频帧的各次标注的相关信息。87.需要说明的是,图3中的psm的语法规则中的其他代码的相关解释和标注协议中定义的相同代码的解释完全相同,在此就不再赘述。88.此外,可选地,还可以在描述信息字段中扩展出标注指示字段,该标注指示字段指示在标注指示字段后的内容为相应视频的标注信息。也即是,在另一种可能的实现方式中,该描述信息字段还可以包括标注指示字段。以便在后续解析ps包时能够快速定位到哪些字段用来指示标注信息。89.如图3所示,可以将图3实线方框中的“stream_type”字段进行扩展,以使该字段指示上述标注指示字段。需要说明的是,该“stream_type”字段在ps标注协议中用于指示流的类型,取值区间为0x80-0xff,不同取值可以代表不同的流的类型。在本技术实施例中,可以选取预留值0xbd作为上述标注指示字段。也即是,当“stream_type”字段的取值为0xbd时,表明该“stream_type”字段后的内容为相应视频的标注信息。90.图3是以psm中的原有字段“stream_type”为例来说明,如何实现上述标注指示字段。可选地,也可以在psm中新增字段来实现上述标注指示字段,在此不再详细说明。91.此外,可选地,还可以在描述信息字段中扩展一个标注类型字段。该标注类型字段指示相应视频帧的标注信息对应的标注类型。也即是,在一种可能的实现方式中,该描述信息字段包括标注类型字段。以便于后续在解析ps包时能够基于该标注类型字段对标注信息进行筛选。92.如此,标注类型可以动物、人物、建筑物、道路等等。如此,通过该标注类型字段可以快速确定视频帧的标注信息中记录的是何种类型的标注。以便于管理人员进行其他相关操作。93.如图3所示,可以将图3实线方框中的“elementary_stream_id”字段进行扩展,以使该字段指示上述标注类型字段。该“elementary_stream_id”字段的不同取值对应的不同的标注类型。比如,该“elementary_stream_id”字段取值为0xbd时指示一种标注类型,该“elementary_stream_id”字段取值为0xbf时指示另一种标注类型。94.此外,在图3所示的psm中,描述符(descriptor)字段中还包括descriptor_tag字段和descriptor_length字段(图3中并未示出)。其中,descriptor_tag字段的取值区间为0x40-0xff,这里表示该标注信息对应帧在视频帧序列中的序号(从0x40开始),0x40表示第0帧,0x41表示第1帧,以此类推。描述符(descriptor)字段中的descriptor_length字段为接下来标注信息的数据长度。95.另外,图3中的elementary_stream_info_length字段为一帧视频帧所有描述符(descriptor)字段的总长度。此外,图3中的elementary_stream_map_length字段为所有视频帧的全部描述符(descriptor)字段的总长度。关于这两个字段就不做过多解释了。96.对于图3所示的扩展的语法规则,每增加一个标注信息则增加一个描述符(descriptor)字段,并且elementary_stream_map_length字段的值对应更新。97.需要说明的是,对于ps格式封装的源视频文件,图3是以每个视频帧为单位分别记录该视频帧的所有标注信息。可选地,也可以不以视频帧对单位,直接在源视频文件中携带所有视频帧的所有标注信息,只需在每个标注信息中添加对应的视频帧标识以及时间戳等信息即可。98.此外,图3仅仅是以ps格式封装的源视频文件为例进行说明如何对源视频文件进行扩展,以使源视频文件包括用于携带标注信息的描述信息,从而实现源视频文件能够携带标注信息。在应用本技术实施例时,也可以采用其他方式对源视频文件进行扩展,以使扩展后的源视频文件能够携带标注信息。比如,可以在源视频文件中新增字段,以使新增字段能够携带标注信息。在此就不再对各种可能的扩展方式一一举例说明。99.基于上述图1所示的标注系统,本技术实施例便可实现一种封装标注信息的方法。下面对该方法进行详细解释说明。此外,基于图1所示的标注系统可知,该方法的执行主体并不限定。为了便于后续说明,下述实施例以标注系统集中式地部署在终端上为例进行说明。100.图4是本技术实施例提供的一种封装标注信息的方法流程图。如图4所示,该方法包括如下几个步骤。101.步骤401:终端获取源视频文件,源视频文件包括视频帧的码流以及针对码流的描述信息,该描述信息用于携带视频帧的标注信息。102.基于上述对源视频文件进行扩展的相关内容可知,本技术实施例扩展的后的源视频文件包括描述信息,该描述信息用于携带视频帧的标注信息,因此,在对视频进行标注时,可以直接获取源视频文件,以便于后续基于当前的标注过程对源视频文件进行更新。103.步骤402:终端基于码流显示该视频帧。104.需要说明的是,码流中通常包括多个视频帧的码流,因此,在步骤402中,终端可以基于码流显示各个视频帧。其中,基于码流显示各个视频帧具体是指:对码流进行解码,以得到各个视频帧,然后显示各个视频帧。本技术实施例对解码过程不再详细说明。105.此外,在基于码流显示视频帧之前,需要先对源视频文件进行解析,以得到码流和描述信息。106.比如,在图3所示的扩展方式中,在解析过程中如果识别到pes结构,则识别到各个视频帧的码流,然后基于步骤402进行解封装和解码处理,得到yuv(一种图像编码方式)格式的视频帧,然后基于yuv格式的视频帧进行图片编码,以实现图片展示。该图片可以为jpeg(jointphotographicexpertsgroup,联合图像专家组)格式。107.此外,在图3所示的扩展方式中,在解析过程中如果识别到psm结构,还可以基于图3的语法规则解析出该视频帧的历史标注信息。其中,历史标注信息是指当前时间之前对视频帧进行标注所产生的标注信息。这种情况下,在步骤4020中基于码流显示视频帧之后,还可以基于历史标注信息显示视频帧的历史标注。历史标注是指当前时间之前对视频帧进行的标注。108.需要说明的是,由于当前时间之前用户可能某次标注过程中添加了一个标注,在另一次标注过程中删除了一个标注。这种情况下,上述历史标注是指当前时间之前对视频帧进行标注操作后的标注结果。109.另外,对于码流中的任一视频帧,该视频帧对应的描述信息中可能已经携带有历史标注信息,也可以没有携带有历史标注信息。因此,在上述显示历史标注的实现方式中,在解析完源视频文件后,对于任一视频帧,如果该视频帧对应有历史标注信息,则同时显示该视频帧和历史标注,以便于后续基于历史标注继续进行标注操作,从而实现对历史标注的更新。如果该视频帧没有对应的历史标注信息,则仅仅显示该视频帧即可。110.比如,对于图3所示的扩展方式,在描述信息字段中根据帧号(以gop为周期,从0x40开始,0x40表示第0帧,0x41表示第1帧,以此类推)搜索每个视频帧的历史标注信息。对于任一视频帧,若没有找到则该视频帧的历史标注信息,则表明接下来的标注过程为第一次标注,仅发送jpeg图片到图1所示的标注模块,以便于后续进行首次标注。若找到则该视频帧存在历史标注信息,这时将历史标注信息连同jpeg图片一起发送到图1所示的标注模块,以便于后续进行迭代标注。111.上述实施例是以存在历史标注信息时,基于历史标注信息显示历史标注为例进行说明。可选地,在存在历史标注信息时,也可以不显示历史标注。是否显示历史标注取决于算法中是否需要对历史标注进行更新,因此本技术实施例对此不做限定。112.此外,在图3所示的扩展方式中,在解析过程中如果识别到psm结构,还可以解析出psm结构在整个ps包中的起始偏移位置,解析出的起始偏移位置的相关作用将在后续实施例中解释说明,在此先不展开阐述。113.步骤403:终端响应于针对视频帧的标注指令,获取与标注指令对应的标注信息,将与标注指令对应的标注信息写入描述信息,得到更新后的源视频文件。114.基于步骤402可知,终端可能只显示了视频帧,也可能同时显示了视频帧和历史标注。因此,在本技术实施例中,标注指令包括针对历史标注的修改指令、针对历史标注的删除指令、标注新增指令中的一者或多者。115.其中,在终端只显示了视频帧的情况下,标注指令只有标注新增指令这一者。在终端同时显示了视频帧和历史标注的情况下,如果用户需要对历史标注进行修改,则标注指令为针对历史标注的修改指令。如果用户需要删除历史标注,则标注指令为针对历史标注的删除指令。如果用户需要在视频帧中新增其他标注,则标注指令为标注新增指令。116.步骤403中,终端响应于针对视频帧的标注指令,获取与标注指令对应的标注信息的实现方式可以为:终端显示界面上显示标注确认控件,当用户触发该标注确认控件时,终端便可检测到该标注指令,从而获取用户在标注过程中触发的各种操作,然后生成标注信息。117.在一种可能的实现方式中,源视频文件中携带的标注信息为所有标注过程中生成的标注信息,以便于后续对标注轨迹进行追溯。因此,在获取到标注信息后,在源视频文件的描述信息中没有携带视频帧的历史标注信息的情况下,上述将与标注指令对应的标注信息写入描述信息的实现过程可以为:在描述信息中添加与标注指令对应的标注信息。在源视频文件的描述信息中携带有视频帧的历史标注信息的情况下,上述将与标注指令对应的标注信息写入描述信息的实现过程为:在保留描述信息中的历史标注信息的情况下,在描述信息中继续添加与标注指令对应的标注信息。118.基于图1所示的系统可知,该步骤可以由图1中的标注模块来实现。此时,在上述实现方式中,若为第一次标注,标注模块则仅展示该视频帧,用户采用常规的方法进行标注。比如,用户在视频帧上画出一个长方形框并标注该框的内容为“人”,标注完成点击“确定”空间后会将该视频帧的标注信息转化为图3要求的语法结构并发送到打包模块,以便于打包模块对源视频文件进行更新。该标注信息包括标注人员、标注时间、帧序号、长方形框四个角的顺时针坐标、“人”类别等。119.若不是第一次标注,标注模块则基于历史标注信息将历史标注在视频帧上全部绘制出来,用户可以选择添加新的标注或删除历史某些标注或修改历史某些标注,标注完成点击“确定”控件后会将此次标注过程中产生的所有标注信息转化为图3要求的语法结构并发送到打包模块,以便于打包模块对源视频文件进行更新。120.需要说明的是,在上述实现方式中,用户在标注过程中对每一个视频帧都可以选择标注和不标注,每标注一次就更新一次标注信息。如此,源视频文件中携带的标注信息为每次标注操作的叠加记录,即标注次数越多,则标注信息长度越大,不是最终标注结果。比如用户第一次标注:添加a信息,第二次标注:删除a信息,则标注信息不是0条而是2条,分别为添加a信息和删除a信息,用于追溯标注轨迹。121.上述实现方式是以源视频文件携带的标注信息为所有标注过程中生成的标注信息为例进行说明。可选地,源视频文件中携带的标注信息也可以仅仅为当前时间最近一次有标注过程中生成的标注信息,如此在获取到标注信息后,只需要将获取的标注信息替换描述信息中标注信息即可。在这种实现方式中,源视频文件中携带的标注信息仅仅代表最终标注结果,不能实现对标注轨迹的追溯。在此不再详细说明。122.此外,由于源视频文件中还包括其他数据包,为了避免由于更新描述信息导致其他数据包无法正常访问。在本技术实施例中,在将与标注指令对应的标注信息写入描述信息后,还需基于描述信息的起始偏移位置的变化对其他数据的起始偏移位置进行更新,以便后续能够基于更新后的起始偏移位置访问到其他数据。123.因此,在一种可能的实现方式中,在步骤401中获取源视频文件之后,终端还可以确定源视频文件中的描述信息的起始偏移位置。此时,在步骤403中,将与标注指令对应的标注信息写入描述信息的实现过程为:基于起始偏移位置,将与标注指令对应的标注信息写入描述信息,得到更新后的描述信息;基于更新后的描述信息的长度,更新源视频文件中记录的其他数据的起始偏移位置。124.比如,对于图3所示的语法规则,解析模块在解析源视频文件时,如果遇到psm结构,先记录psm结构的起始偏移位置。在基于此次标注过程中的标注信息更新psm结构后,先更新该psm结构的起始偏移位置,然后在基于更新后的psm结构的起始偏移位置,对其他数据诸如psh、pes等的起始偏移位置均进行更新。如此,对每个视频帧的标注后,实际上是对该视频帧对应的psm结构的内容进行更新,ps包中其他数据内容不做修改,仅做起始偏移位置的顺延即可。125.需要说明的是,上述步骤401至步骤403可以应用于任何格式封装的源视频文件。由于ps封装格式的源视频文件的容错性强、扩展性强且支持文件和流式两种数据形态,因此为了进一步清楚本技术的技术方案,下面以ps格式封装的源视频文件对上述步骤401至步骤403进一步进行解释说明。126.基于图1所示的系统,具体标注方案包括如下几个步骤。127.1、将ps格式封装的源视频文件送入解析模块,解析模块在遇到psm结构时,记录当前psm结构的起始偏移位置和psm结构中的历史标注信息。128.2、解析模块对帧数据进行解封装和解码操作,将解析出的完整的yuv帧数据及对应的历史标注信息送入标注模块进行标注。129.3、标注模块将yuv帧数据展示到标注界面进行人工标注,用户可选择在某次历史标注上进行更新(包括追加和删减),或对该视频帧进行重新标注,返回的标注信息送入封装模块。130.4、封装模块将标注信息写入psm结构,并对源视频文件中记录的各个数据的起始偏移位置进行更新,从而完成一个视频帧的标注工作。131.综上所述,本技术实施例提供的封装标注信息的技术方案具有以下的特点和优势。132.1、基于源视频文件封装层的标准语法进行扩展,在保证封装层语法标准和媒体数据正常播放的前提下实现标注信息的无侵入性封装。其中,由于标注信息封装在psm结构的扩展字段中,故对源视频文件的语法标准性无侵入感。133.2、支持源视频文件的重复标注。对于任一视频帧的重复标注只需要重复执行上述步骤401至步骤403即可。134.3、支持标注轨迹的追溯。由于每视频帧的各次标注操作的标注信息都可以包含标注人员、标注时间、标注次数和标注内容,故标注轨迹也是可以追溯的。135.4、简单的标注工序,仅需要涉及解析模块、标注模块和封装模块。136.5、标注信息在源视频文件中追加,不会产生翻倍的空间消耗,理论上只会增加标注信息的数据量。137.6、只要源视频文件保管妥善,基于该文件的所有历史标注信息都不会丢失。因此,只要源视频文件是完整的,则标注信息就永远不会丢失,解决了标注信息单独存储的丢失风险。138.7、简单的视频帧与标注信息的匹配关系。基于图3所示的语法规则可以实现该技术效果。139.8、支持标注信息的更新,包括追加和删减。基于历史标注的更新可以实现该技术效果。140.上述所有可选技术方案,均可按照任意结合形成本技术的可选实施例,本技术实施例对此不再一一赘述。141.图5是本技术实施例提供的一种封装标注信息的装置示意图。该装置可以由软件、硬件或者两者的结合实现。如图5所示,该封装标注信息的装置500包括如下几个模块。142.获取模块501,用于获取源视频文件,源视频文件包括视频帧的码流以及针对码流的描述信息,描述信息用于携带视频帧的标注信息;143.显示模块502,用于基于码流显示视频帧;144.封装模块503,用于响应于针对视频帧的标注指令,获取与标注指令对应的标注信息,将与标注指令对应的标注信息写入描述信息,得到更新后的源视频文件。145.可选地,源视频文件的描述信息中没有携带视频帧的历史标注信息;146.封装模块用于:147.在描述信息中添加与标注指令对应的标注信息。148.可选地,源视频文件的描述信息中携带有视频帧的历史标注信息;149.封装模块用于:150.在保留描述信息中的历史标注信息的情况下,在描述信息中继续添加与标注指令对应的标注信息。151.可选地,显示模块还用于:152.基于码流显示视频帧之后,基于历史标注信息显示视频帧的历史标注;153.其中,标注指令包括针对历史标注的修改指令、针对历史标注的删除指令、标注新增指令中的一者或多者。154.可选地,获取模块还用于:155.确定源视频文件中的描述信息的起始偏移位置;156.封装模块用于:157.基于起始偏移位置,将与标注指令对应的标注信息写入描述信息,得到更新后的描述信息;158.基于更新后的描述信息的长度,更新源视频文件中记录的其他数据的起始偏移位置。159.可选地,源视频文件为节目流ps格式封装的源视频文件,源视频文件包括ps包,ps包中包括多个视频帧的码流以及节目流映射psm,psm用于存储多个视频的码流的描述信息。160.可选地,psm包括与多个视频帧分别对应的描述信息字段,描述信息字段中包括一个或多个描述符字段,每个描述符字段用于存储一次标注操作对应的标注信息。161.可选地,描述信息字段包括标注指示字段,标注指示字段指示在标注指示字段后的内容为相应视频的标注信息。162.可选地,描述信息字段包括标注类型字段,标注类型字段指示相应视频帧的标注信息对应的标注类型。163.在本技术实施例中,在源视频文件中扩展出用于携带视频帧的标注信息的描述信息,如此,在对视频帧进行标注后,便可将此次标注的标注信息写入该描述信息,从而实现将标注信息封装在源视频文件中。该技术方案至少可以实现以下几个技术效果:164.(1)由于标注信息是封装在源视频文件中的,因此,只要源视频文件保管妥善,封装在该源视频文件中的标注信息便不会丢失。考虑到源视频文件不易丢失性,因此通过本技术实施例提供的技术方案可以避免标注信息的丢失。165.(2)在源视频文件中扩展用于携带视频帧的标注信息的描述信息,这样可以基于源视频文件对应的标准语法来扩展该描述信息。从而在保证源视频文件的封装层语法标准和视频帧正常播放的前提下,实现标注信息的无侵入性封装。无需基于私有协议的定义来单独封装标注信息,提高了本技术实施例提供的技术方案的便利性。166.(3)由于将标注信息封装在源视频文件中,因此无需在独立于源视频文件之外单独封装一个标注数据包,这样也可以减少封装后的标注信息的占用空间。167.需要说明的是:上述实施例提供的封装标注信息的装置在封装标注信息时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的封装标注信息的装置与封装标注信息的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。168.图6是本技术实施例提供的一种终端600的结构示意图。图1所示的系统中任一模块均可以通过图6所示的终端来实现。该终端600可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。169.通常,终端600包括有:处理器601和存储器602。170.处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。171.存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本技术中方法实施例提供的封装标注信息的方法。172.在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、显示屏605、摄像头组件606、音频电路607、定位组件608和电源609中的至少一种。173.外围设备接口603可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。174.射频电路604用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本技术对此不加以限定。175.显示屏605用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在另一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。176.摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。177.音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。178.定位组件608用于定位终端600的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件608可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。179.电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。180.在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。181.加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。182.陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3d动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。183.压力传感器613可以设置在终端600的侧边框和/或显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在显示屏605的下层时,由处理器601根据用户对显示屏605的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。184.指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商logo时,指纹传感器614可以与物理按键或厂商logo集成在一起。185.光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制显示屏605的显示亮度。具体地,当环境光强度较高时,调高显示屏605的显示亮度;当环境光强度较低时,调低显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。186.接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制显示屏605从息屏状态切换为亮屏状态。187.本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。188.本技术实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行上实施例提供的封装标注信息的方法。189.本技术实施例还提供了一种包含指令的计算机程序产品,当其在终端上运行时,使得终端执行上述实施例提供的封装标注信息的方法。190.图7是本技术实施例提供的一种服务器的结构示意图。图1所示的系统中任一模块均可以通过图7所示的服务器来实现。该服务器可以是后台服务器集群中的服务器。具体来讲:191.服务器700包括中央处理单元(cpu)701、包括随机存取存储器(ram)702和只读存储器(rom)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。192.基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。193.大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,大容量存储设备707可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。194.不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。195.根据本技术的各种实施例,服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。196.上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由cpu执行。所述一个或者一个以上程序包含用于进行本技术实施例提供的封装标注信息的方法。197.本技术实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述实施例提供的封装标注信息的方法。198.本技术实施例还提供了一种包含指令的计算机程序产品,当其在服务器上运行时,使得服务器执行上述实施例提供的封装标注信息的方法。199.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。200.以上所述仅为本技术实施例的较佳实施例,并不用以限制本技术实施例,凡在本技术实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1