基于iOS设备的VR视频的解码方法、装置及终端设备转让专利

申请号 : CN201611086076.6

文献号 : CN106507115B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 易仁

申请人 : 上海音绮文化发展有限公司

摘要 :

本发明实施例公开了一种基于iOS设备的VR视频的播放方法、装置及终端设备,该方法包括:获取基于RTMP协议的VR视频流数据;从所述VR视频数据中提取画面帧数据,所述画面帧数据符合AVFrame数据结构;调用所述iOS设备内硬件解码组件的应用程序接口,创建硬解码会话;通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,输出适用于iOS设备的视频播放数据。通过硬解码方式来解码基于RTMP协议的视频数据,避免了HLS协议的视频数据的切片周期过长的问题,也避免了通过CPU来软解码视频数据所造成的解码效率低、耗电和发热情况严重的问题,无需对现有iOS设备的硬件做调整,从软件层面即可提高iOS设备对VR视频的播放能力,具有很强的应用前景。

权利要求 :

1.一种基于iOS设备的VR视频的解码方法,其特征在于,包括:获取基于RTMP协议的VR视频数据;

从所述VR视频数据中提取画面帧数据,所述画面帧数据符合AVFrame数据结构;

调用所述iOS设备内硬件解码组件的应用程序接口,创建硬解码会话;

根据所述硬解码会话,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,输出适用于iOS设备的视频播放数据;

其中,从所述VR视频数据中提取画面帧数据,具体包括:根据播放器解析协议,将所述VR视频数据转换为H.264数据流,所述H.264数据流包括画面帧数据以及描述数据;

其中,所述创建硬解码会话,具体包括:在所述H.264数据流内提取出扫描数据;

获取所述扫描数据内的序列参数集和图像参数集;

根据所提取到的序列参数集和图像参数集创建视频格式描述信息;

根据视频格式描述信息创建硬解码会话,所述硬解码会话所输出的图像格式为NV12。

2.如权利要求1所述的方法,其特征在于,从所述VR视频数据中提取画面帧数据,具体包括:在所述H.264数据流内提取出画面帧数据。

3.如权利要求1所述的方法,其特征在于,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,具体包括:将各画面帧数据输入至所述硬件解码组件,通过所述硬件解码组件对各画面帧数据进行硬解码。

4.如权利要求1所述的方法,其特征在于,根据所述硬解码会话,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码之后,所述方法还包括:注销所述硬解码会话。

5.如权利要求1所述的方法,其特征在于,根据所述硬解码会话,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码之后,所述方法还包括:对硬解码的视频数据进行双眼渲染处理,以播放所述VR视频数据。

6.一种基于iOS设备的VR视频的解码装置,其特征在于,包括:数据获取模块,用于获取基于RTMP协议的VR视频数据;

数据转换模块,用于从所述VR视频数据中提取画面帧数据,所述画面帧数据符合AVFrame数据结构;

会话创建模块,用于调用所述iOS设备内硬件解码组件的应用程序接口,创建硬解码会话;

数据硬解模块,用于根据所述硬解码会话,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,输出适用于iOS设备的视频播放数据;

其中,根据播放器解析协议,将所述VR视频数据转换为H.264数据流,所述H.264数据流包括画面帧数据以及描述数据;

其中,所述会话创建模块,具体用于:在所述H.264数据流内提取出扫描数据;

获取所述扫描数据内的序列参数集和图像参数集;

根据所提取到的序列参数集和图像参数集创建视频格式描述信息;

根据视频格式描述信息创建硬解码会话,所述硬解码会话所输出的图像格式为NV12。

7.如权利要求6所述的装置,其特征在于,所述数据转换模块,具体包括:在所述H.264数据流内提取出画面帧数据。

8.如权利要求6所述的装置,其特征在于,所述数据硬解模块,具体用于:对各画面帧数据进行硬解码。

9.如权利要求6所述的装置,其特征在于,所述装置还包括会话注销模块,用于:注销所述硬解码会话。

10.如权利要求6所述的装置,其特征在于,所述装置还包括视频渲染模块,用于:对硬解码的视频数据进行双眼渲染处理,以播放所述VR视频数据。

11.一种终端设备,其特征在于,包括:播放器;

如权利要求6至10中任一项所述的解码装置;

请求模块,用于请求待播放的VR视频数据,并将所得到的VR视频数据传输至所述解码装置和播放器。

说明书 :

基于iOS设备的VR视频的解码方法、装置及终端设备

技术领域

[0001] 本发明涉及视频解码技术领域,特别涉及一种基于iOS设备的VR视频的播放方法、装置及终端设备。

背景技术

[0002] VR(Virtual Reality)视频一般通过由一组(2个或以上)的普通摄像机通过特定的方式组合而成的全景摄像机拍摄而成。全景视频在拍摄完成后,会将多路普通摄像机拍摄所得视频帧拼接成一个2D的VR视频帧来存储,使得VR视频帧的视频容量相对于普通摄像机所拍视频要大的多。
[0003] 当前,人们常使用iOS设备(例如常规的iPhone手机、iPad平板电脑)来播放VR视频,当前的iOS设备均是基于HLS(HTTP Live Streaming)作为传输协议,这种HLS协议会对视频进行切片传输,每次切片的间隔均是10秒,由于VR视频的视频容量较大,每次切片传输的耗时较长,使得iOS设备来播放VR视频时有严重延迟,严重影响用户观看。

发明内容

[0004] 本发明实施例的目的是提供一种基于iOS设备的VR视频的解码方法、装置及终端设备,用于解决上述问题。
[0005] 为解决上述技术问题,本发明实施例提供一种基于iOS设备的VR视频的解码方法,包括:
[0006] 获取基于RTMP协议的VR视频数据;
[0007] 从所述VR视频数据中提取画面帧数据,所述画面帧数据符合AVFrame数据结构;
[0008] 调用所述iOS设备内硬件解码组件的应用程序接口,创建硬解码会话;
[0009] 根据所述硬解码会话,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,输出适用于iOS设备的视频播放数据。
[0010] 在本发明一实施例中,从所述VR视频数据中提取画面帧数据,具体包括:
[0011] 根据播放器解析协议,将所述VR视频数据转换为H.264数据流,所述H.264数据流包括画面帧数据以及描述数据;
[0012] 在所述H.264数据流内提取出画面帧数据。
[0013] 在本发明一实施例中,创建硬解码会话,具体包括:
[0014] 在所述H.264数据流内提取出扫描数据;
[0015] 获取所述扫描数据内的序列参数集和图像参数集;
[0016] 根据所提取到的序列参数集和图像参数集创建视频格式描述信息;
[0017] 根据视频格式描述信息创建硬解码会话,所述硬解码会话所输出的图像格式为NV12。
[0018] 在本发明一实施例中,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,具体包括:
[0019] 将各画面帧数据输入至所述硬件解码组件,通过所述硬件解码组件对各画面帧数据进行硬解码。
[0020] 在本发明一实施例中,根据所述硬解码会话,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码之后,所述方法还包括:
[0021] 注销所述硬解码会话。
[0022] 在本发明一实施例中,根据所述硬解码会话,通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码之后,所述方法还包括:
[0023] 对硬解码的视频数据进行双眼渲染处理,以播放所述VR视频数据。
[0024] 为解决上述技术问题,本发明实施例提供一种基于iOS设备的VR视频的解码装置,包括:
[0025] 数据获取模块,用于获取基于RTMP协议的VR视频数据;
[0026] 数据转换模块,用于从所述VR视频数据中提取画面帧数据,所述画面帧数据符合AVFrame数据结构;
[0027] 会话创建模块,用于调用所述iOS设备内硬件解码组件的应用程序接口,创建硬解码会话;
[0028] 数据硬解模块,用于通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,输出适用于iOS设备的视频播放数据。
[0029] 在本发明一实施例中,所述数据转换模块,具体包括:
[0030] 根据播放器解析协议,将所述VR视频数据转换为H.264数据流,所述H.264数据流包括画面帧数据以及描述数据;
[0031] 在所述H.264数据流内提取出画面帧数据。
[0032] 在本发明一实施例中,所述会话创建模块,具体用于:
[0033] 在所述H.264数据流内提取出扫描数据;
[0034] 获取所述扫描数据内的序列参数集和图像参数集;
[0035] 根据所提取到的序列参数集和图像参数集创建视频格式描述信息;
[0036] 根据视频格式描述信息创建硬解码会话,所述硬解码会话所输出的图像格式为NV12。
[0037] 在本发明一实施例中,所述数据硬解模块,具体用于:
[0038] 对各画面帧数据进行硬解码。
[0039] 在本发明一实施例中,所述装置还包括会话注销模块,用于:
[0040] 注销所述硬解码会话。
[0041] 在本发明一实施例中,所述装置还包括视频渲染模块,用于:
[0042] 对硬解码的视频数据进行双眼渲染处理,以播放所述VR视频数据。
[0043] 为解决上述技术问题,本发明实施例提供一种终端设备,包括:
[0044] 播放器;
[0045] 如前述发明内容所述的解码装置;
[0046] 请求模块,用于请求待播放的VR视频数据,并将所得到的VR视频数据传输至所述解码装置和播放器。
[0047] 由以上本发明实施例提供的技术方案可见,本发明实施例所提供的基于iOS设备的VR视频的播放方法、装置及终端设备,通过硬解码方式来解码基于RTMP协议的视频数据,避免了HLS协议的视频数据的切片周期过长的问题,也避免了通过CPU来软解码视频数据所造成的解码效率低、耗电和发热情况严重的问题,无需对现有iOS设备的硬件做调整,从软件层面即可提高iOS设备对VR视频的播放能力,具有很强的应用前景。

附图说明

[0048] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0049] 图1为本发明实施例中基于iOS设备的VR视频的解码方法和装置所适用的系统的架构图。
[0050] 图2为本发明实施例中基于iOS设备的VR视频的解码装置所适用的终端设备的模块图。
[0051] 图3为本发明实施例中基于iOS设备的VR视频的解码方法的流程图。
[0052] 图4为本发明实施例中基于iOS设备的VR视频的解码方法内从所述VR视频数据中提取画面帧数据的具体流程图。
[0053] 图5为本发明实施例中基于iOS设备的VR视频的解码方法内创建硬解码会话的具体流程图。
[0054] 图6为本发明另一实施例中基于iOS设备的VR视频的解码方法的流程图。
[0055] 图7为本发明实施例中基于iOS设备的VR视频的解码装置的模块图。
[0056] 图8为本发明另一实施例中基于iOS设备的VR视频的解码装置的模块图。

具体实施方式

[0057] 为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0058] 图1为本发明实施例中基于iOS设备的VR视频的解码方法和装置所适用的系统的架构图。结合图1所示,该系统包括可终端设备100以及云端服务器200。终端设备100即为该解码方法所适用的iOS设备,其可以是iPhone手机、iPad平板电脑等;云端服务器200可以是业内常规的视频网站的服务器或云存储网站的服务器等,云端服务器200与终端设备100建立通信,待解码的VR视频存储于云端服务器200内,终端设备100可以从云端服务器200获取VR视频数据,进行解码并播放。当然,VR数据还可以离线存储于终端设备100内,在此不做赘述。
[0059] 图2为本发明实施例中基于iOS设备的VR视频的解码装置所适用的终端设备的模块图。结合图2所示,该终端设备100即为iOS设备,其包括解码装置10、播放器20以及请求模块30,请求模块30可以与云端服务器200建立通信并从云端服务器200请求待播放的VR视频数据,请求模块300将所接收到的VR视频数据发送至播放器20,播放器20与解码装置10配合来硬解码该VR视频数据并进行播放。其中,解码装置10可以是业内常规的图像处理器GPU或视频处理单元VPU。
[0060] 当然,终端设备100还会包括摄像头、存储器、处理器、供电模块等元器件,在此不做赘述。
[0061] 图3为本发明实施例中基于iOS设备的VR视频的解码方法的流程图。该iOS设备即为前述终端设备100,该解码方法的执行主体即为前述解码装置10,该解码方法具体包括如下的步骤S101至S103。
[0062] 步骤S101、获取基于RTMP协议的VR视频数据。
[0063] VR视频数据可以存储于云端服务器200,也可以离线存储与终端设备100内,并且该VR视频数据流是基于RTMP(Real Time Messaging Protocol,实时消息传输协议)协议的,RTMP协议是基于TCP的,包括RTMP基本协议及RTMPT、TTMPS等多种变种,可以用于和支持基于RTMP协议的流媒体、交互服务器之间进行音视频和数据通信,在此不做赘述。
[0064] 步骤S102、从所述VR视频数据中提取画面帧数据,所述画面帧数据符合AVFrame数据结构。
[0065] 待解码的VR数据在写入播放器后,可以提取出符合AVFrame数据结构的画面帧数据。AVFrame数据结构也是预先定义好的数据结构,与常见的软解方式不同,数据解码通过GPU实现。
[0066] 图4为本发明实施例中基于iOS设备的VR视频的解码方法内S102的具体流程图,该步骤S102具体包括步骤S121至S122,具体如下。
[0067] 步骤S121、根据播放器解析协议,将所述VR视频数据转换为H.264数据流,所述H.264数据流包括画面帧数据以及描述数据。
[0068] 在iOS设备100内播放器接收到待解码的VR视频时,通过该播放器所自带的解码协议,将VR视频转换为H.264数据流,H.264是一种视频编码标准,能够很好的适应IP和无线网络,具有很强的抗误码和抗丢包性能。
[0069] 所转换得到的H.264数据流内包括画面帧数据以及描述数据,画面帧数据符合AVFrame数据结构。描述数据是描述每个画面帧数据的二进制数据流,具体可以描述这些画面帧数据所代表画面的RGB参数、分辨率等。
[0070] 步骤S122、在所述H.264数据流内提取出画面帧数据。
[0071] 在经过转换得到的H.264数据流内得到画面帧数据,以被后续处理。由于H.264数据流的结构为业内常见技术,可以很简单的提取出画面帧数据和描述数据。
[0072] 步骤S103、调用所述iOS设备内硬件解码组件的应用程序接口,创建硬解码会话。
[0073] 硬件解码组件即为前述解码装置10,例如可以是业内常规的图像处理器GPU或视频处理单元VPU。在iOS系统层面,设置了解码装置10的应用程序接口API,可以通过该应用程序接口API创建解码会话session,通过该解码会话session来控制所述硬件解码组件来对前述步骤中的画面帧数据进行硬解码。
[0074] 图5为本发明实施例中基于iOS设备的VR视频的解码方法内步骤S103的具体流程图,该步骤S103具体包括步骤S131至S134,具体如下。
[0075] 步骤S131、在所述H.264数据流内提取出扫描数据。
[0076] 所转换得到的H.264数据流内包括描述数据,在经过转换得到的H.264数据流内得到画面帧数据,以被后续处理。由于H.264数据流的结构为业内常见技术,可以很简单的提取出描述数据。
[0077] 步骤S132、获取所述扫描数据内的序列参数集和图像参数集。
[0078] 描述数据内包括序列参数集SPS(Sequence Parameter Set)和图像参数集PS(Picture Parameter Set),序列参数集包括了图像序列中所有信息,是描述数据的基础之一,图像参数集包括一个图像的所有切片信息,同样是描述数据的基础之一。在描述数据内确定出序列参数集和图像参数集为业内常规技术手段,在此不做赘述。
[0079] 步骤S133、根据所提取到的序列参数集和图像参数集创建视频格式描述信息。
[0080] 在本发明实施例中,可以利用根据所提取到的序列参数集和图像参数集来调用目前业内已知的创建函数,以创建视频格式描述信息。
[0081] 步骤S134、根据视频格式描述信息创建硬解码会话,所述硬解码会话所输出的图像格式为NV12。
[0082] 所输出的图像格式即为kCVPixelBufferPixelFormatTypeKey属性值,将该属性值设定为NV12,由于iOS设备内现有硬件解码组件支持NV12,便于后续对所输出的图像进行硬件解码。
[0083] 在本发明实施例中,该完成硬解码操作后,可以将该解码会话销毁,以降低处理资源的消耗。
[0084] 步骤S104、通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,输出适用于iOS设备的视频播放数据。
[0085] 调用解码装置10对前述步骤中获得画面帧数据进行硬解码,以得到可以iOS设备可以播放的画面数据。
[0086] 在本发明实施例中,将每个画面帧数据输入至解码装置10,以作为样本实例sample buffer。样本实例不断被画面帧数据刷新,样本实例可以通过用CMBlockBufferCreateWithMemeoryBlock从H.264数据创建一个CMBlockBufferRef实例,然后用CMSampleBufferCreateReady创建CMSampleBufferRef实例,以作为样本实例。
[0087] 经过硬解码后,输出的图像会包含当前画面帧的YUV(图像颜色编码)数据,具体格式为CVPixelBufferRef(同苹果自带AVPlayer输出格式相同),输出的图像可以直接生成iOS播放器20支持的OpenGL的texture。
[0088] 图6为本发明另一实施例中基于iOS设备的VR视频的解码方法的流程图,与前述实施例相比,该方法还包括位于步骤S104之后的如下步骤S105,具体如下。
[0089] 步骤S105、对硬解码的视频数据进行双眼渲染处理,以播放所述VR视频数据。
[0090] 在接收到硬解码后的图像后,将其转换为可播放的纹理数据,再通过配置单双眼的策略,计算图像尺寸来进行渲染,最后调动iOS设备内GLKit组件来进行播放,实现VR视频数据的播放。
[0091] 综上,本发明实施例所提供的基于iOS设备的VR视频的播放方法,通过硬解码方式来解码基于RTMP协议的视频数据,避免了HLS协议的视频数据的切片周期过长的问题,也避免了通过CPU来软解码视频数据所造成的解码效率低、耗电和发热情况严重的问题,无需对现有iOS设备的硬件做调整,从软件层面即可提高iOS设备对VR视频的播放能力,具有很强的应用前景。
[0092] 图7为本发明实施例中基于iOS设备的VR视频的解码装置的模块图,所述装置可包括:
[0093] 数据获取模块11,用于获取基于RTMP协议的VR视频数据;
[0094] 数据转换模块12,用于从所述VR视频数据中提取画面帧数据,所述画面帧数据符合AVFrame数据结构;
[0095] 会话创建模块13,用于调用所述iOS设备内硬件解码组件的应用程序接口,创建硬解码会话;
[0096] 数据硬解模块14,用于通过所述iOS设备内硬件解码组件对所述画面帧数据进行硬解码,输出适用于iOS设备的视频播放数据。
[0097] 在本发明一实施例中,所述数据转换模块12,具体包括:
[0098] 根据播放器解析协议,将所述VR视频数据转换为H.264数据流,所述H.264数据流包括画面帧数据以及描述数据;
[0099] 在所述H.264数据流内提取出画面帧数据。
[0100] 在本发明一实施例中,所述会话创建模块13,具体用于:
[0101] 在所述H.264数据流内提取出扫描数据;
[0102] 获取所述扫描数据内的序列参数集和图像参数集;
[0103] 根据所提取到的序列参数集和图像参数集创建视频格式描述信息;
[0104] 根据视频格式描述信息创建硬解码会话,所述硬解码会话所输出的图像格式为NV12。
[0105] 在本发明一实施例中,所述数据硬解模块14,具体用于:
[0106] 将各画面帧数据输入至所述硬件解码组件,通过所述硬件解码组件对各画面帧数据进行硬解码。
[0107] 在本发明一实施例中,所述装置还可包括会话注销模块,用于:
[0108] 注销所述硬解码会话。
[0109] 图8为本发明另一实施例中基于iOS设备的VR视频的解码装置的模块图,在上述图7所示的实施例的基础上,所述装置还可包括视频渲染模块,用于:
[0110] 对硬解码的视频数据进行双眼渲染处理,以播放所述VR视频数据。
[0111] 综上,本发明实施例所提供的基于iOS设备的VR视频的播放装置,通过硬解码方式来解码基于RTMP协议的视频数据,避免了HLS协议的视频数据的切片周期过长的问题,也避免了通过CPU来软解码视频数据所造成的解码效率低、耗电和发热情况严重的问题,无需对现有iOS设备的硬件做调整,从软件层面即可提高iOS设备对VR视频的播放能力,具有很强的应用前景。
[0112] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0113] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0114] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
[0115] 以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。