本申请涉及流媒体技术领域,尤其涉及一种音视频存储方法、系统、终端和计算机可读存储介质。
背景技术:
目前市面上常用的云存储方案只是将本地存储的录制文件上传,文件可能是mp4或者ts封装,在这种媒体文件封装里面,每个文件都独立带有音视频编码参数,音视频编码数据和时间戳和索引数据,我们称之为“三合一”式存储方案,一个文件中同时只能有一种视频和音频的编码参数。虽然大多数ipcamera已经支持同时输出超过一种的分辨率的视频,但是通常在云端存储只能是其中一种分辨率。即便有些厂家在ipcamera设置界面允许用户选择上传哪一路分别率的码流,但是由于mp4或者ts格式封装的限制,这种切换并不能立刻生效,只能发生在下个文件开始时。其次,用户检索出来的数据是媒体文件的列表,播放时要在每个文件中独立去找到编码参数,编码数据和索引数据,读取文件时通常时采用非顺序的跳读方式。因此,现有采用“三合一”式存储媒体文件,导致在切换上传码率时不能立即生效,文件读取和检索效率低的问题。
技术实现要素:
本申请实施例通过提供一种音视频存储方法、系统、终端和计算机可读存储介质,旨在解决现有采用“三合一”式存储媒体文件,导致在切换上传码率时不能立即生效,文件读取和检索效率低的问题。
为实现上述目的,本申请一方面提供一种音视频存储方法,所述音视频存储方法包括以下步骤:
向云端发送音视频的编码参数,由所述云端返回每路码流的编码参数对应的编码参数编号;
获取音视频流数据,为每一帧音视频流数据设置所述编码参数编号和时间戳信息,并根据所述时间戳信息创建所述每一帧音视频流数据的索引信息;
向所述云端发送所述索引信息,由所述云端基于所述索引信息返回所述音视频流数据的存储位置和文件名;
根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端,由所述云端对所述音视频流数据进行存储。
可选地,所述为每一帧音视频流数据设置所述编码参数编号和时间戳信息的步骤包括:
将获取到的所述音视频流数据基于所述时间戳信息的先后顺序存储至一个队列中;
为所述队列中每一帧音视频流数据设置所述编码参数编号和所述时间戳信息。
可选地,所述向所述云端发送所述索引信息的步骤包括:
将待存储的音视频文件划分为多个音视频切片文件,并创建所述多个音视频切片文件分别对应的索引信息;
向所述云端发送所述多个音视频切片文件分别对应的索引信息。
可选地,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤包括:
接收所述云端发送的所述音视频切片文件的偏移量;
根据所述偏移量确定所述音视频流数据在所述云端对应文件中的存储位置,并将所述音视频流数据发送至所述云端对应文件中的存储位置。
可选地,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤之前,还包括:
当所述音视频流数据是上电后第一次上传时,在所述索引信息中设置一个标志位;
将携带所述标志位的索引信息发送至所述云端,由所述云端基于所述标志位进行数据校验。
可选地,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤,还包括:
根据所述存储位置和所述文件名将所述音视频流数据追加发送至所述云端已存在的文件中;或者,
根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端新建的文件中。
可选地,向所述云端发送所述索引信息的步骤之前,包括:
获取所述音视频流数据的累计数量;
当所述累计数量超过设定阈值时,执行向所述云端发送所述索引信息的步骤。
此外,为实现上述目的,本申请另一方面还提供一种音视频存储系统,所述系统包括:
第一发送模块,用于向云端发送音视频的编码参数,由所述云端返回每路码流的编码参数对应的编码参数编号;
获取模块,用于获取音视频流数据,为每一帧音视频流数据设置所述编码参数编号和时间戳信息,并根据所述时间戳信息创建所述每一帧音视频流数据的索引信息;
第二发送模块,用于向所述云端发送所述索引信息,由所述云端基于所述索引信息返回所述音视频流数据的存储位置和文件名;
第三发送模块,用于根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端,由所述云端对所述音视频流数据进行存储。
此外,为实现上述目的,本申请另一方面还提供一种终端,所述终端包括存储器、处理器及存储在存储器上并在处理器上运行的音视频存储程序,所述处理器执行所述音视频存储程序时实现如上所述音视频存储方法的步骤。
此外,为实现上述目的,本申请另一方面还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有音视频存储程序,所述音视频存储程序被处理器执行时实现如上所述音视频存储方法的步骤。
本实施例通过向云端发送音视频的编码参数,由云端返回每路码流的编码参数对应的编码参数编号;获取音视频流数据,为每一帧音视频流数据设置编码参数编号和时间戳信息,并根据时间戳信息创建每一帧音视频流数据的索引信息;向云端发送索引信息,由云端基于索引信息返回音视频流数据的存储位置和文件名;根据存储位置和文件名将音视频流数据上传至云端,由云端对音视频流数据进行存储。解决了现有采用“三合一”式存储媒体文件,导致在切换上传码率时不能立即生效,文件读取和检索效率低的问题,通过将传统“三合一”式存储拆分成三个独立部分存储,并在文件中建立相对应的映射关系,实现了流式录制,提高了云存储的读取效率和文件的检索效率。
附图说明
图1为本申请实施例方案涉及的硬件运行环境的终端结构示意图;
图2为本申请音视频存储方法第一实施例的流程示意图;
图3为本申请音视频存储方法第二实施例的流程示意图;
图4为本申请音视频存储方法第三实施例的流程示意图;
图5为本申请音视频存储方法中为每一帧音视频流数据设置所述编码参数编号和时间戳信息的流程示意图;
图6为本申请音视频存储方法中向所述云端发送所述索引信息的流程示意图;
图7为本申请音视频存储方法中根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的流程示意图;
图8为本申请音视频存储方法的操作流程示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请实施例的主要解决方案是:向云端发送音视频的编码参数,由所述云端返回每路码流的编码参数对应的编码参数编号;获取音视频流数据,为每一帧音视频流数据设置所述编码参数编号和时间戳信息,并根据所述时间戳信息创建所述每一帧音视频流数据的索引信息;向所述云端发送所述索引信息,由所述云端基于所述索引信息返回所述音视频流数据的存储位置和文件名;根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端,由所述云端对所述音视频流数据进行存储。
由于现有采用“三合一”式存储媒体文件,导致在切换上传码率时不能立即生效,只能发生在下个文件开始时。其次,用户检索出来的数据是媒体文件的列表,播放时要在每个文件中独立去找到编码参数,编码数据和索引数据,读取文件时通常时采用非顺序的跳读方式,导致文件读取和检索效率低的问题。本申请通过向云端发送音视频的编码参数,由云端返回每路码流的编码参数对应的编码参数编号;获取音视频流数据,为每一帧音视频流数据设置编码参数编号和时间戳信息,并根据时间戳信息创建每一帧音视频流数据的索引信息;向云端发送索引信息,由云端基于索引信息返回音视频流数据的存储位置和文件名;根据存储位置和文件名将音视频流数据上传至云端,由云端对音视频流数据进行存储。通过将传统“三合一”式存储拆分成三个独立部分存储,并在文件中建立相对应的映射关系,实现了流式录制,提高了云存储的读取效率和文件的检索效率。
如图1所示,图1为本申请实施例方案涉及的硬件运行环境的终端结构示意图。
如图1所示,该终端可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、传感器、音频电路、检测器等等。当然,所述终端还可配置陀螺仪、气压计、湿度计、温度传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及音视频存储程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中音视频存储程序,并执行以下操作:
向云端发送音视频的编码参数,由所述云端返回每路码流的编码参数对应的编码参数编号;
获取音视频流数据,为每一帧音视频流数据设置所述编码参数编号和时间戳信息,并根据所述时间戳信息创建所述每一帧音视频流数据的索引信息;
向所述云端发送所述索引信息,由所述云端基于所述索引信息返回所述音视频流数据的存储位置和文件名;
根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端,由所述云端对所述音视频流数据进行存储。
参考图2,图2为本申请音视频存储方法第一实施例的流程示意图。
本申请实施例提供了音视频存储方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
音视频存储方法包括:
步骤s10,向云端发送音视频的编码参数,由所述云端返回每路码流的编码参数对应的编码参数编号;
本实施例提供的方法的应用环境为应用在智能摄像头中,需要指出的是,本实施例提供的方法同样可以应用在智能手机或平板电脑等智能终端中,在此不做限制。
当智能摄像头启动时,首先向云端上报目前智能摄像头中所有的音视频的编码参数,该编码参数包括:码率(指视频或音频文件在单位时间内使用的数据流量)、帧率(用于测量画面显示帧数的量度)、采样率(每秒从连续信号中提取并组成离散信号的采样个数)、封装格式(即视频格式,如mp4、avi、mkv、flv、wma等)、画面比例(指视频画面宽和高的比例)以及分别率(指视频宽高的像素数值)等。其中,每个智能摄像头在云端只生成和维护一份媒体参数文件,大多数时候音视频编码参数是保持不变的,共用音视频编码参数可以节约存储容量,也有利于播放器连接参数发生变化后的两个流,采用覆盖记录的模式。
云端在接收到智能摄像头上报的音视频编码参数时,读取智能摄像头预存储在云端的媒体参数文件,并遍历读取摄像头上报的所有音视频的编码参数,判断该编码参数是否已存在媒体参数文件中;若不存在,则将摄像头上报的音视频的编码参数写入媒体参数文件中;若存在,则返回媒体参数文件中的音视频的编码参数编号。进一步判断当前是否存在未遍历的编码参数,若存在,则返回执行判断该编码参数是否已存在媒体参数文件中的步骤;若不存在,则返回智能摄像头每路码流的编码参数在云端的编码参数编号。
步骤s20,获取音视频流数据,为每一帧音视频流数据设置所述编码参数编号和时间戳信息,并根据所述时间戳信息创建所述每一帧音视频流数据的索引信息;
通过智能摄像头和麦克风获取音视频流数据,为每一帧音视频流数据设置编码参数编号和时间戳信息,并根据时间戳信息创建每一帧音视频流数据的索引信息;其中,时间戳信息为获取到音视频流数据的时间先后顺序。例如,对于视频中的每一帧视频,从当前帧的帧信息中获取当前帧的帧类型和时间戳,根据该时间戳确定当前帧的时间偏移量,将视频中位于当前帧之前的部分的数据确定为当前帧的数据偏移量,进一步将当前帧的帧类型、时间戳、时间偏移量以及数据偏移量组成当前帧的索引信息。由于每一帧包含的索引信息是不同的,即每一帧的索引信息都是独立存在的。
参考图5,所述为每一帧音视频流数据设置所述编码参数编号和时间戳信息的步骤包括:
步骤s21,将获取到的所述音视频流数据基于所述时间戳信息的先后顺序存储至一个队列中;
步骤s22,为所述队列中每一帧音视频流数据设置所述编码参数编号和所述时间戳信息。
摄像头将获取到的音视频流数据基于时间戳信息的先后顺序存储至一个队列中,为队列中每一帧音视频流数据设置编码参数编号和时间戳信息,用于后续音视频流回看时根据编码参数和时间戳来切换码率和顺序播放使用;其中,帧由不同的部分组成,通常帧由“帧头 数据信息”两部分组成,而编码参数编号和时间戳信息设置在每一帧的帧头位置。
步骤s30,向所述云端发送所述索引信息,由所述云端基于所述索引信息返回所述音视频流数据的存储位置和文件名;
智能摄像头中设置有一音视频数据的限定值,当音视频数据已累计超过该限定值,又或者是超过设定时间,则向云端发送索引信息,由云端基于索引信息返回音视频流数据的存储位置和文件名。云端在接收到索引信息后,获取该索引信息中的内容,如帧类型、时间戳、时间偏移量以及数据偏移量等等,基于该内容确定当前音视频的存储位置和文件名,如存储位置为c盘,文件名为文件a。
参考图6,所述向所述云端发送所述索引信息的步骤包括:
步骤s31,将待存储的音视频文件划分为多个音视频切片文件,并创建所述多个音视频切片文件分别对应的索引信息;
步骤s32,向所述云端发送所述多个音视频切片文件分别对应的索引信息。
为了加快音视频播放前的加载时间,可以将音视频以切片的方式存储至云端中,在音视频切片处理的情况下,当播放器在播放第n段音视频时,会预下载n 1这段音视频,使得播放更流畅,但播放器不会下载n 2这段音视频,从而给其他用户节省带宽,减轻视频服务器的压力。
智能摄像头将待存储的音视频文件划分为多个音视频切片文件,并创建多个音视频切片文件分别对应的索引信息,向云端发送多个音视频切片文件分别对应的索引信息。例如:智能摄像头按照指定时间间隔进行待存储的音视频文件的划分,如指定时间间隔为8秒,在音视频录制的过程中,每间隔8秒划分一次音视频。在进行音视频切片的划分时,每得到一个音视频切片,便可以设置该音视频切片的索引信息。
云端根据音视频切片文件的索引信息生成音视频流数据的上传位置和切片文件名,以及生成切片对应的索引文件,并将索引信息写入索引文件中。其中,该索引文件可包括:摄像头的编号、音视频文件的文件大小、文件名、录像开始时间、录像结束时间以及云存储地址等信息。该索引文件用于流媒体音视频记录关键帧的时间点和关键位置,在手机、电脑等设备播放音视频时,能够起到快速索引的作用。每当智能摄像头上传一份监控录像的切片文件到云端存储服务器时,需要把i帧信息写入切片文件对应的帧索引文件中。进一步由云端判断智能摄像头是否为上电后第一次上传音视频流数据,若是,则由服务器端对已上传到云端的摄像头音视频数据相关文件完成一致性校验,在完成一致性校验后,计算切片文件append偏移量,并向智能摄像头返回音视频流数据的上传位置、切片文件名和append偏移量;若不是第一次上传音视频流数据,则直接计算切片文件append偏移量,并向智能摄像头返回音视频流数据的上传位置、切片文件名和append偏移量。
步骤s40,根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端,由所述云端对所述音视频流数据进行存储。
智能摄像头在获取到云端返回的存储位置,切片文件名以及append偏移量等信息时,根据获取到的信息将音视频流数据上传至云端,并由云端进行存储。例如:当前获取到的存储位置为c盘,文件名为文件a,则将音视频流数据上传至云端c盘中的文件a中。进一步地,在知道数据的存储文件名后,还需要知道数据具体存储在文件中的位置,参考图7,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤包括:
步骤s41,接收所述云端发送的所述音视频切片文件的偏移量;
步骤s42,根据所述偏移量确定所述音视频流数据在所述云端对应文件中的存储位置,并将所述音视频流数据发送至所述云端对应文件中的存储位置。
智能摄像头在接收到云端返回的音视频切片文件的偏移量后,根据该偏移量确定音视频流数据在云端对应文件中的存储位置,并将音视频流数据发送至云端对应文件中的存储位置。其中,音视频切片文件的偏移量指从指定位置向前或向后移动的字节数,偏移量是用来从文件中找到所用内数据时用的,通常偏移量分三种,一个是从文件开头向后移动若干字节来寻找目标,第二个是从文件结尾向前移动若干字节找到目标,第三个是相对位置,是从文件当前位置向前或向后移动寻找。智能摄像头在将音视频流数据上传至文件时,需要知道偏移量,基于该偏移量确定将音视频流数据在文件中的存储位置,如文件a中以列表的形式存储有多个音视频文件,基于偏移量确定当前待存储的音视频文件的具体存储位置为文件列表的末端,则需要将当前的音视频流数据发送至文件a中的列表末端。
本实施例通过向云端发送音视频的编码参数,由云端返回每路码流的编码参数对应的编码参数编号;获取音视频流数据,为每一帧音视频流数据设置编码参数编号和时间戳信息,并根据时间戳信息创建每一帧音视频流数据的索引信息;当音视频流数据的累计数量超过设定阈值时,向云端发送索引信息,由云端基于索引信息返回音视频流数据的存储位置和文件名;根据存储位置和文件名将音视频流数据上传至云端,由云端对音视频流数据进行存储。通过将传统“三合一”式存储拆分成三个独立部分存储,并在文件中建立相对应的映射关系,让用户在切换上传码率时能立刻生效,不用等待到下个文件的开始,实现真正的流式录制;可以实现播放端的顺序读取播放,避免跳读,提高云存读取效率加快起播速度;将检索信息独立出来,单独给检索操作用,不用按视频分辨率区分,而且集中放置提高了检索效率,从而间接达到增强用户体验的目的。
进一步地,参考图3,提出本申请音视频存储方法第二实施例。
所述音视频存储方法第二实施例与所述音视频存储方法第一实施例的区别在于,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤之前,还包括:
步骤s43,当所述音视频流数据是上电后第一次上传时,在所述索引信息中设置一个标志位;
步骤s44,将携带所述标志位的索引信息发送至所述云端,由所述云端基于所述标志位进行数据校验。
由于本申请是将传统“三合一”式存储拆分成三个独立部分存储的,即将编码参数、编码数据以及索引数据进行独立存储,所以这三部分存储在断电后,可能存在不同步的现象。因此,当智能摄像头是上电后第一次上传音视频流数据时,会预先设置一个标志位,该标志位是当前智能摄像头的开机标志信息,进一步将该标志位放置在索引信息中,当向云端发送索引信息时,该标志位会被一起发送至云端。云端在获取到该标志位时,将智能摄像头存储的录制文件以及索引文件进行一致性校验,以保证存储在云端上的监控录像文件、索引文件以及参数map具有一致性。
本实施例通过标志位对各文件进行一致性校验,保证存储在云端上的监控录像文件、索引文件以及参数map具有一致性。
进一步地,参考图4,提出本申请音视频存储方法第三实施例。
所述音视频存储方法第三实施例与所述音视频存储方法第一实施例和第二实施例的区别在于,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤,还包括:
步骤s45,根据所述存储位置和所述文件名将所述音视频流数据追加发送至所述云端已存在的文件中;或者,
步骤s46,根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端新建的文件中。
智能摄像头在采集到当前的音视频流数据时,判断是否需要在云端新建存储文件,若当前采集到的音视频流数据是新的,则需要在云端新建存储文件,将当前采集到的音视频流数据上传至新的存储文件中。若采集到的音视频流数据是对已有的数据进行追加上传,则不需要在云端新建存储文件,智能摄像头通过调用云存储流媒体文件追加写接口,在已经上传的文件数据之后写进新的流数据,在上传成功后即可删除现有的数据,若出现上传失败的情况,可以从云存储拿到该文件当前需要追加的位置,重新进行追加写,只要追加写成功,便可以删除掉原有的流媒体文件或者数据。
在采用追加写方式时,用户可以实时地获取之前已经上传的数据,或者根据需要获取某一段的数据,而且获取数据的时候并不会影响正在追加上传的新数据。用户还可以灵活的根据自己的规则决定是新建流媒体文件上传还是在已有的流媒体文件上进行追加写,而不是固化的文件上传模式。其中,追加写的方式是根据每一个流媒体文件所需要的录制时长来追加的,当流媒体中包含的录制时长达到一定值时,会重新创建一个新的流媒体文件来上传新的音视频流数据。
本实施例通过判断采集到的音视频流数据是否为新数据,从而确定流数据的上传方式和存储文件,在采用追加写方式上传流数据时,直接在已上传的文件数据之后写进新的流数据,从而提升了流数据的上传效率。
为了更好的说明本申请实施例的方案,音视频存储方法包括以下步骤:
参考图8,当智能家居摄像头启动时,首先向云端上报目前智能家居摄像头所有音视频的编码参数;服务器端读取摄像头存储在云端的媒体参数文件,并遍历读取摄像头上报的所有音视频的编码参数,判断该编码参数是否已存在媒体参数文件中;若不存在,则将摄像头上报的音视频的编码参数写入媒体参数文件中;若存在,则返回媒体参数文件中的音视频的编码参数编号。进一步判断当前是否存在未遍历的编码参数,若存在,则返回执行判断该编码参数是否已存在媒体参数文件中的步骤;若不存在,则从服务器端返回给摄像头每路码流的编码参数在云端的参数编号。由摄像头采集音视频流数据,为每一帧音视频流数据放置编码参数编号以及时间戳信息,并根据时间戳信息为i帧音视频流数据创建索引信息。判断摄像头端音视频数据是否已累计超过限定值,若否,则返回执行摄像头采集音视频流数据的步骤;若是,则将待存储的音视频文件划分为多个音视频切片文件,并确定多个音视频切片文件分别对应的索引信息,将音视频切片文件的索引信息上传至服务器端。服务器端根据音视频切片文件的索引信息生成音视频流数据的上传位置和切片文件名,以及生成切片对应的索引文件,将索引信息写入索引文件中。进一步判断摄像头是否为上电后第一次上传音视频流数据,若是,则由服务器端对已上传到云端的摄像头音视频数据相关文件完成一致性校验;若否,则计算切片文件append偏移量。返回音视频流数据的上传位置、切片文件名和append偏移量给摄像头上传音视频流数据。摄像头接收到云端返回的数据后,根据append偏移量确定音视频流数据在文件中的存储位置,以追加上传方式将音视频流数据上传至云端对应文件的存储位置。
本实施例通过将传统“三合一”式存储拆分成三个独立部分存储,并在文件中建立相对应的映射关系,让用户在切换上传码率时能立刻生效,不用等待到下个文件的开始,实现真正的流式录制;可以实现播放端的顺序读取播放,避免跳读,提高云存读取效率加快起播速度;将检索信息独立出来,单独给检索操作用,不用按视频分辨率区分,而且集中放置提高了检索效率,从而间接达到增强用户体验的目的。
此外,本申请还提供一种音视频存储系统,所述系统包括:
第一发送模块,用于向云端发送音视频的编码参数,由所述云端返回每路码流的编码参数对应的编码参数编号;
获取模块,用于获取音视频流数据,为每一帧音视频流数据设置所述编码参数编号和时间戳信息,并根据所述时间戳信息创建所述每一帧音视频流数据的索引信息;
第二发送模块,用于向所述云端发送所述索引信息,由所述云端基于所述索引信息返回所述音视频流数据的存储位置和文件名;
第三发送模块,用于根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端,由所述云端对所述音视频流数据进行存储。
进一步地,所述获取模块包括:存储单元和设置单元;
所述存储单元,用于将获取到的所述音视频流数据基于所述时间戳信息的先后顺序存储至一个队列中;
所述设置单元,用于为所述队列中每一帧音视频流数据设置所述编码参数编号和所述时间戳信息。
进一步地,所述第二发送模块包括:划分单元和发送单元;
所述划分单元,用于将待存储的音视频文件划分为多个音视频切片文件,并创建所述多个音视频切片文件分别对应的索引信息;
所述发送单元,用于向所述云端发送所述多个音视频切片文件分别对应的索引信息。
进一步地,所述第三发送模块包括:接收单元和发送单元;
所述接收单元,用于接收所述云端发送的所述音视频切片文件的偏移量;
所述发送单元,用于根据所述偏移量确定所述音视频流数据在所述云端对应文件中的存储位置,并将所述音视频流数据发送至所述云端对应文件中的存储位置。
进一步地,所述第三发送模块还包括:设置单元和发送单元;
所述设置单元,用于当所述音视频流数据是上电后第一次上传时,在所述索引信息中设置一个标志位;
所述发送单元,用于将携带所述标志位的索引信息发送至所述云端,由所述云端基于所述标志位进行数据校验。
进一步地,所述发送单元,还用于根据所述存储位置和所述文件名将所述音视频流数据追加发送至所述云端已存在的文件中;或者,
所述发送单元,还用于根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端新建的文件中。
进一步地,所述第二发送模块还包括:获取单元和判断单元;
所述获取单元,用于获取所述音视频流数据的累计数量;
所述判断单元,用于判断当所述累计数量超过设定阈值时,执行向所述云端发送所述索引信息的步骤。
上述的音视频存储系统各个模块功能的实现与上述方法实施例中的过程相似,在此不再一一赘述。
此外,本申请还提供一种终端,所述终端包括存储器、处理器及存储在存储器上并在处理器上运行的音视频存储程序,所述终端通过向云端发送音视频的编码参数,由云端返回每路码流的编码参数对应的编码参数编号;获取音视频流数据,为每一帧音视频流数据设置编码参数编号和时间戳信息,并根据时间戳信息创建每一帧音视频流数据的索引信息;当音视频流数据的累计数量超过设定阈值时,向云端发送索引信息,由云端基于索引信息返回音视频流数据的存储位置和文件名;根据存储位置和文件名将音视频流数据上传至云端,由云端对音视频流数据进行存储。通过将传统“三合一”式存储拆分成三个独立部分存储,并在文件中建立相对应的映射关系,实现了流式录制,提高了云存储的读取效率和文件的检索效率。
此外,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有音视频存储程序,所述音视频存储程序被处理器执行时实现如上所述音视频存储方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本申请可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本申请的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
1.一种音视频存储方法,其特征在于,所述方法包括:
向云端发送音视频的编码参数,由所述云端返回每路码流的编码参数对应的编码参数编号;
获取音视频流数据,为每一帧音视频流数据设置所述编码参数编号和时间戳信息,并根据所述时间戳信息创建所述每一帧音视频流数据的索引信息;
向所述云端发送所述索引信息,由所述云端基于所述索引信息返回所述音视频流数据的存储位置和文件名;
根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端,由所述云端对所述音视频流数据进行存储。
2.根据权利要求1所述的音视频存储方法,其特征在于,所述为每一帧音视频流数据设置所述编码参数编号和时间戳信息的步骤包括:
将获取到的所述音视频流数据基于所述时间戳信息的先后顺序存储至一个队列中;
为所述队列中每一帧音视频流数据设置所述编码参数编号和所述时间戳信息。
3.根据权利要求1所述的音视频存储方法,其特征在于,所述向所述云端发送所述索引信息的步骤包括:
将待存储的音视频文件划分为多个音视频切片文件,并创建所述多个音视频切片文件分别对应的索引信息;
向所述云端发送所述多个音视频切片文件分别对应的索引信息。
4.根据权利要求1至3中任一项所述的音视频存储方法,其特征在于,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤包括:
接收所述云端发送的所述音视频切片文件的偏移量;
根据所述偏移量确定所述音视频流数据在所述云端对应文件中的存储位置,并将所述音视频流数据发送至所述云端对应文件中的存储位置。
5.根据权利要求1至3中任一项所述的音视频存储方法,其特征在于,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤之前,还包括:
当所述音视频流数据是上电后第一次上传时,在所述索引信息中设置一个标志位;
将携带所述标志位的索引信息发送至所述云端,由所述云端基于所述标志位进行数据校验。
6.根据权利要求1至3中任一项所述的音视频存储方法,其特征在于,所述根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端的步骤,还包括:
根据所述存储位置和所述文件名将所述音视频流数据追加发送至所述云端已存在的文件中;或者,
根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端新建的文件中。
7.根据权利要求1至3中任一项所述的音视频存储方法,其特征在于,向所述云端发送所述索引信息的步骤之前,包括:
获取所述音视频流数据的累计数量;
当所述累计数量超过设定阈值时,执行向所述云端发送所述索引信息的步骤。
8.一种音视频存储系统,其特征在于,所述系统包括:
第一发送模块,用于向云端发送音视频的编码参数,由所述云端返回每路码流的编码参数对应的编码参数编号;
获取模块,用于获取音视频流数据,为每一帧音视频流数据设置所述编码参数编号和时间戳信息,并根据所述时间戳信息创建所述每一帧音视频流数据的索引信息;
第二发送模块,用于向所述云端发送所述索引信息,由所述云端基于所述索引信息返回所述音视频流数据的存储位置和文件名;
第三发送模块,用于根据所述存储位置和所述文件名将所述音视频流数据发送至所述云端,由所述云端对所述音视频流数据进行存储。
9.一种终端,其特征在于,所述终端包括存储器、处理器及存储在存储器上并在所述处理器上运行的音视频存储程序,所述处理器执行所述音视频存储程序时实现如权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有音视频存储程序,所述音视频存储程序被处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。
技术总结