CN114173185B - 一种基于IPv6的360度视频自适应传输方法 - Google Patents

一种基于IPv6的360度视频自适应传输方法 Download PDF

Info

Publication number
CN114173185B
CN114173185B CN202111474120.1A CN202111474120A CN114173185B CN 114173185 B CN114173185 B CN 114173185B CN 202111474120 A CN202111474120 A CN 202111474120A CN 114173185 B CN114173185 B CN 114173185B
Authority
CN
China
Prior art keywords
degree video
file
reinforcement learning
video
learning model
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
CN202111474120.1A
Other languages
English (en)
Other versions
CN114173185A (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.)
Northeastern University China
Original Assignee
Northeastern University China
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 Northeastern University China filed Critical Northeastern University China
Priority to CN202111474120.1A priority Critical patent/CN114173185B/zh
Publication of CN114173185A publication Critical patent/CN114173185A/zh
Application granted granted Critical
Publication of CN114173185B publication Critical patent/CN114173185B/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/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • 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/437Interfacing the upstream path of the transmission network, e.g. for transmitting client requests to a VOD server
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开一种基于IPv6的360度视频自适应传输方法,方法首先根据码率调节算法的性能,选择最优码率调节算法作为系统的码率调节算法;接着对360度视频进行预处理并生成清单文件,再利用Shell脚本处理得到包含媒体片段的JSON文件,并在服务器端进行视频资源的部署;然后对强化学习模型进行预处理,并将经过训练的强化学习模型转换为TensorFlow‑Lite所需以“tflite”为扩展名的文件;最后基于移动设备的基础架构设计应用程序以及360度视频播放器;并将视频播放器码率调节部分使用预处理阶段得到的模型在移动设备上进行推导实现。本发明充分利用预测的带宽和视口,通过策略梯度更新其QoE奖励值,直到最后的码率决策得到最大奖励反馈,相对于现有的自适应传输方案有明显的改进。

Description

一种基于IPv6的360度视频自适应传输方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于IPv6的360度视频自适应传输方法。
背景技术
伴随着5G时代的的到来,以及IPv6在国家层面得到愈发重视,VR(virtualreality,虚拟现实)会越来越成为一项顺势发展的热门技术,VR技术中的最独特之处在于360度视频,它体现了VR技术三大基本特征(即三“I”:immersion-interactionimagination)中的“immersion”,即通过展现360度的视频为观看者提供沉浸式的体验。360度视频是虚拟现实最重要的组成部分之一,配合头戴式显示器可以让用户得到沉浸的影音体验。360度视频作为虚拟现实中一种强大的演示媒体,具有不可替代的重要作用。要实现虚拟现实的终极目标也许还需要更多时间的沉淀和发展,但是360度视频已经逐渐成为各大视频提供商和网络运营商重点发展业务。360度视频是指能够根据用户观看角度进行渲染的视频,它包含各个角度的视频资源,在拍摄时通常由多个处在不同方向的相机拍摄拼接而成,在播放时用户可以自行选择自己感兴趣的区域。诸如360度视频这类全景媒体的技术架构主要由视频拼接与映射、视频编解码、存储与传输等技术构成。目前,已有众多研究提出了视频拼接算法,关于映射方法也有多种模型方案。此外,一些组织和标准正在制定针对全景媒体的编解码和传输的优化算法。同时,全景媒体技术面临很多巨大的挑战。首先,360度视频分辨率是一个技术瓶颈,相机组拼接带来的不同步、变形等因素将严重降低视频质量;其次,全景媒体庞大的数据传输与计算给传输带宽和终端的解码能力提出了巨大的挑战;此外,端到端的时延也是一个影响用户体验的关键参数。
目前在360度视频传输方面,有文献基于在视角移动过程中用户对视频质量变化敏感度会发生变化,也即容易理解的若视角移动越快用户对视频质量变化越不敏感这一现象,提出了一种新的包含“视角移动速度、场景光强变化、视频景深变化”三因素的视频质量度量标准,在传统的衡量图像重建质量的峰值信噪比中加入了这一新的质量确定因素,而后通过调查试验确定了三因素间的相互独立关系,确定在360度视频中的360JND(360°video JustNoticeable Difference)用于计算得到不同像素重要程度,便于在后续计算区域视频质量进行区域划分以及使用线性回归预测对应区域比特率,从而实现自适应比特率传输,与前种方法不同,它不是一个单纯基于视角驱动的360度视频传输方法,它基于事先用户调查的感兴趣区域的概念,有针对性的对感兴趣区域高质量传输,其他区域低质量传输,不具备较高的灵活性。还有通过并行传输编解码以及VSync技术来降低延时,实现了通过60GHz无线网络支持4k分辨率的远程渲染平台。以及基于更具交互能力的VR进行传输方案的研究,论证了在当前软硬件条件下,单纯依靠硬件进步,或者更快的网络传输对于VR这类全景媒体的传输并不会带来实质性的改善,找到了主流编解码方案中对服务器、本地手机双端都较为友好的H.264的视频编码方案,使用本地渲染前景交互,服务器端渲染后台环境的双端合作渲染,同时通过服务器预渲染视点相邻区域来进一步减少延迟,同时也采用了多核并行解码以得到良好的用户体验质量。还有同样基于感兴趣区域的概念,同时使用高效率视频编码(HEVC)和可扩展高效率视频编码(SHVC)来划分Tile实现感兴趣区域划分传输360度视频。还有的方法将MPEG-DASH SRD扩展到360度视频3D空间,同样对视频空间进行Tile划分,依据视野(FoV)进行视点跟踪,实现FoV感知适应,视点区域高质量传输,其他区域较低质量传输来克服360度视频的大流量带宽需求。也有仍在对视频空间进行Tile划分的基础上,进一步在区域重要性确定上采用深度强化学习基于客户端播放器收集的感知情况对接下来的视频帧重要性进行预测,实现自适应分配对应比特率。可以发现如今国内外关于360度视频传输大都基于对视频空间Tile划分,按一定方法确定对应区域重要性,并分配不同比特率传输,实现视频流的自适应。
在IPv6方面,有作者给出了一种通过借助开源隧道系统OpenVPN在尚未部署IPv6的移动网络上接入IPv6的方法,主要是将IPv6包封装在IPv4数据包中,通过隧道传输至接入IPv6接入服务器,解封装后转发至IPv6网络,进而实现在未部署IPv6的移动网络接入IPv6。有在IPv4/IPv6网络环境下对音视频流量吞吐性能进行研究,得出了就音视频吞吐性能而言,IPv6的吞吐量要高于IPv4,也从理论上侧面证实了IPv6的各种改进能对360度视频传输带来帮助。
发明内容
针对上述现有技术的不足,本发明提供一种基于IPv6的360度视频自适应传输方法。
为解决上述技术问题,本发明所采取的技术方案是:一种基于IPv6的360度视频自适应传输方法,包括如下步骤:
步骤1:根据码率调节算法的性能,选择码率调节算法Pensive作为系统的码率调节算法;
步骤2:使用FFmpeg对360度视频进行预处理并生成对应清单文件,再利用Shell脚本处理得到包含媒体片段文件大小的JSON文件,最后在服务器端进行视频资源的部署,过程如下:
步骤2.1:根据原始360度视频分辨率大小,采用FFmpeg生成至少六个不同分辨率的视频资源以及一个独立的音频资源;
步骤2.2:对于原始360度视频宽度大于2160的情况,多生成一个与原始360度视频分辨率以及比特率相同的视频资源;
步骤2.3:对步骤2.1或步骤2.2得到的媒体资源采用FFmpeg生成DASH(DynamicAdaptive Streaming over HTTP)传输协议所需的媒体片段以及清单;
步骤2.4:为了便于后续处理,在对每个360度视频处理时,将所生成的文件均置于输入文件同名目录下;
步骤2.5:利用Shell脚本设计用于服务器端传递媒体列表信息的JSON文件结构,并进行视频资源的部署。
步骤3:对强化学习模型进行预处理,并将经过训练的强化学习模型即ckpt文件转换为TensorFlow-Lite所需以“tflite”为扩展名的文件,过程如下:
步骤3.1:基于强化学习算法Pensieve中的开源代码,对A3C算法进行修改;
步骤3.2:将强化学习模型中的Actor网络的输入inputs命名为a_inputs,将其输出out命名为a_outputs;
步骤3.3:通过TensorFlow-Lite算法中的graph_def.node得到强化学习模型所有的网络节点,结合步骤3.2中对节点的命名,进行过滤筛选找到模型中对应输入输出节点;
步骤3.4:采用修改后的A3C算法对强化学习模型重新训练,找到新的强化学习模型的输入输出节点,并等待新的强化学习模型训练到收敛;
步骤3.5:使用write_graph方法保存模型的节点关系信息,生成对应‘graph.pb’文件;
步骤3.6:结合强化学习模型训练使用Saver.save保存的包含参数训练序列化变量的检查点checkpoint文件‘model_ep_xx.ckpt’,使用TensorFlow提供的‘freeze_graph.py’工具产生保存了参数序列化变量以及节点关系定义的冻结好的模型文件‘frozen.pb’,在工具‘freeze_graph.py’的调用过程中提供步骤3.4得到的输出节点名;
步骤3.7:得到‘frozen.pb’之后使用TensorFlow中的‘TfLiteConverter’生成最后的‘model.tflite’文件。
步骤4:基于移动设备的基础架构设计应用程序以及360度视频播放器;
所述应用程序包含主界面、播放界面以及设置界面三个功能模块。
所述主界面模块负责对服务器提供媒体数据的展示,为其他界面提供入口以及对应的同名代码文件。
所述播放界面模块:在主界面媒体列表项被点击之后,播放界面被打开以完成360度视频的播放。
所述设置界面模块:不仅使用布局文件配置界面,还使用XML文件‘setting_preference.xml’进行界面内容的填充。
所述360度视频播放器用于在视图模型间共享数据,形成中间持久化层。
步骤5:将视频播放器码率调节部分使用预处理阶段处理得到的模型在移动设备上进行推导实现。
采用上述技术方案所产生的有益效果在于:本发明提供的方法会充分利用预测的带宽和视口,然后通过策略梯度更新其QoE奖励值,直到最后的码率决策得到最大奖励反馈,从而使用户的观看体验达到最佳。通过实验验证了本发明设计的基于IPv6的360度视频自适应传输方法相较于传统方案性能显著提升,相对于目前的自适应传输方案也有明显的改进。
附图说明
图1为本发明实施例中基于IPv6的360度视频自适应传输方法的流程图;
图2为本发明实施例中tflite模型转换示意图;
图3为本发明实施例中数据持久化部分示意图;
图4为本发明实施例中主界面模块部分示意图;
图5为本发明实施例中播放界面模块部分示意图;
图6为本发明实施例中公源网相关域名的DNS查询结果图;
图7为本发明实施例中测试设备Ipv6支持情况示意图;
图8为本发明实施例中主界面相关测试示意图;
图9为本发明实施例中播放界面各组件测试示意图;
图10为本发明实施例中播放列表具体控制变化示意图;
图11为本发明实施例中比特率选择与吞吐量测试结果示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1所示,本实施例中基于IPv6的360度视频自适应传输方法如下所述。
步骤1:根据码率调节算法的性能,选择码率调节算法Pensive作为系统的码率调节算法;
除了上述码率调节算法Pensive,本实施例中参与性能对比的码率调节算法还包括Bola、MPC等码率调节算法。
步骤2:使用FFmpeg对360度视频进行预处理并生成对应清单文件,再利用Shell脚本处理得到包含媒体片段文件大小的JSON文件,最后在服务器端进行视频资源的部署,过程如下:
步骤2.1:根据原始360度视频分辨率大小,采用FFmpeg生成至少六个不同分辨率的视频资源以及一个独立的音频资源;
本实施例中,原始360度视频分辨率的大小默认为等于1080。
步骤2.2:对于原始360度视频宽度大于2160的情况,多生成一个与原始360度视频分辨率以及比特率相同的视频资源;
步骤2.3:对步骤2.1或步骤2.2得到的媒体资源采用FFmpeg生成DASH传输协议所需的媒体片段以及清单;
步骤2.4:为了便于后续处理,在对每个360度视频处理时,将所生成的文件均置于输入文件同名目录下;
步骤2.5:考虑对应360度视频资源的特性,以及后续模型所需数据的需求,利用Shell脚本设计用于服务器端传递媒体列表信息的JSON文件结构,并进行视频资源的部署。
步骤3:对强化学习模型进行预处理,并将经过训练的强化学习模型即ckpt文件转换为TensorFlow-Lite所需以“tflite”为扩展名的文件,转换过程如图2所示,具体过程如下:
步骤3.1:基于强化学习算法Pensieve中的开源代码,对A3C算法进行修改;
步骤3.2:将强化学习模型中的Actor网络的输入inputs命名为a_inputs,将其输出out命名为a_outputs,以便于后续找到模型的输入输出节点完成tflite模型生成;
步骤3.3:通过TensorFlow-Lite算法中的graph_def.node得到强化学习模型所有的网络节点,结合步骤3.2中对节点的命名,进行过滤筛选找到模型中对应输入输出节点;
步骤3.4:采用修改后的A3C算法对强化学习模型重新训练,找到新的强化学习模型的输入输出节点,并等待新的强化学习模型训练到收敛;
步骤3.5:使用write_graph方法保存模型的节点关系信息,生成对应‘graph.pb’文件;
步骤3.6:结合强化学习模型训练使用Saver.save保存的包含参数训练序列化变量的检查点checkpoint文件‘model_ep_xx.ckpt’,使用TensorFlow提供的‘freeze_graph.py’工具产生保存了参数序列化变量以及节点关系定义的冻结好的模型文件‘frozen.pb’,在工具‘freeze_graph.py’的调用过程中提供步骤3.4得到的输出节点名;
步骤3.7:得到‘frozen.pb’之后使用TensorFlow中的‘TfLiteConverter’生成最后的‘model.tflite’文件。
步骤4:基于移动设备的基础架构设计应用程序以及360度视频播放器;
所述360度视频播放器用于在视图模型间共享数据,形成中间持久化层。
图3为具体实施的数据持久化基础架构部分。定义唯一样例数据层接口SampleRepository,实现样例Sample基于SQL的数据持久化,为后续在ViewModel间共享数据创造条件。
在‘Samples.kt’中定义了应用程序所有独立的数据类,包含具体样例文件所有属性(name,uri,spherical_stereo_mode以及chunk_size_uri)的样例Sample、用于解析媒体列表JSON文件的包含具体样例Sample列表的Samples、用于解析对应媒体块大小的ChunkSize,以及使用Room组件中的@Entity注解定义的数据库数据类SampleDb。数据库定义的元素在原有Sample基础上增加了‘repo_type’,用以区分本地测试源(local)和线上部署源(online),使用唯一键值‘uri’即对应资源清单文件地址作为数据库主键(PrimaryKey)。
‘SampleDbDao.kt’实现对应SampleDb的数据访问对象(data access object,Dao),用于暴露具体的数据库访问方法,得益于架构组件Room的抽象,对于具体的数据库操作可直接在@Query注解中使用SQL语句进行查询。实现中定义了下表1的方法。在方法中使用了Kotlin的协程(Coroutines)特性,使用‘suspend’关键字使对应方法跟随调用方法在非UI线程进行操作,以避免阻塞主线程。
‘SampleDatabase.kt’使用Room的@Database注解按照SampleDb数据实体定义创建对应的数据库,考虑到数据可用性问题,在应用程序启动打开数据库时会使用下述数据访问对象清空数据库,以保证能得到可用的媒体数据。
表1 SampleDbDao方法
Figure BDA0003390979840000061
‘SampleRepository.kt’实现底层SQL数据库的数据接口抽象,给上层ViewModel提供数据库访问接口。一个具体的SampleRepository实例包含对应的源类型(repotype),以及数据访问对象实例,通过使用数据库访问对象实现了上层MainViewModel所需的对应类型数据库元素更新,以及PlayerViewModel所需的获取对应类型元素方法。
所述应用程序包含主界面、播放界面以及设置界面三个功能模块。
所述主界面模块负责对服务器提供媒体数据的展示,为其他界面提供入口以及对应的同名代码文件,组成部分如图4所示,主要包括MainActivity、MainViewModel以及SampleListAdapter。MainActivity承载整个程序主界面,视图模型MainViewModel用于保存活动数据,以及实现对数据的各种操作,SampleListAdapter即SampleList的适配器,对于每个RecyclerView对象都需要实现对应适配器,来定义将什么元素作为列表对象,如何绑定列表对象。
MainActivity作为程序的主界面,在启动程序时系统会使用其活动方法的定义对主界面进行创建、渲染。作为Android四大组件之一的活动组件,系统会首先调用MainActivity中的重写的‘onCreate()’方法。在‘onCreate()’方法中程序设置了活动对应的UI布局文件(activity_main.xml),调用‘initView()’方法完成整个活动的初始化。
‘initView()’主要实例化了布局文件中的相关对应组件,创建了该活动对应的视图模型MainViewModel,实例化SampleListAdapter对象,并将其与RecyclerView绑定,在活动中观察(xx.observe())了MainViewModel中LiveData对象,主要有用于保存从服务器获取JSON的‘sampleJson’、保存加载组件的显示状态的‘progressBar’、用于底部弹出报错的‘snackBar’以及存放当前源地址的‘sampleUrl’,之后只要它们的数据内容发生变化就能自动对观察所设定的方法进行调用。
完成‘initView()’方法之后,接着调用MainViewModel的‘getSampleUrl()’方法,取得设置设定的源地址(local/online),紧接着着调用MainViewModel的‘initRepository()’方法初始化数据接口SampleRepository。至此大致完成了直观内容的活动界面初始化,之后是由LiveData数据变动对对应观察方法的调用间接初始化。
由于对‘getSampleUrl()’方法的调用取得设置的源地址,造成‘sampleUri’的数据变化,系统将执行对应观察绑定方法,调用MainViewModel的‘loadSample()’方法获取设定源地址的媒体列表JSON数据,如果加载正常会使用Gson库解析JSON文件,并将解析结果传递给变量‘sampleJson’,如果加载失败错误会被捕获并修改‘snackBar’以及‘processBar’的值,类似的对应观察方法被调用显示对应提示来通知用户。和‘sampleUri’类似,在成功加载服务器媒体列表之后‘sampleJson’发生变化,执行对应观察方法,调用适配器SampleListAdapter为RecyclerView设定获取的元素,完成媒体列表的加载过程,同时还将调用MainViewModel的‘updateDatabase()’方法,使用之前已初始化的数据接口SampleRepository调用‘update()’方法在数据库中持久化媒体列表数据。至此完成了从打开应用到加载完成资源列表的主页面初始化过程。
所述播放界面模块:在主界面媒体列表项被点击之后,播放界面被打开以完成360度视频的播放。主要组成部分如图5所示,具体包括PlayerActivity、PlayerViewModel、PlayListSampleAdapter以及MyTrackSelection,除PlayListSampleAapter在‘SampleListAdapter.kt’中定义外,其他部分均对应具体的同名代码文件。和主界面类似,PlayerActivity承载整个播放界面,但具体显示主要是由ExoPlayer提供的PlayerView、PlayerControlView,以及其他如可配置隐藏显示的调试TextView、显示播放列表的RecyclerView、配置播放速度的整个布局等部件组成。视图模型PlayerViewModel用于保存活动数据,对数据进行各种操作,同MyTrackSelection交互完成基于RL的码率自适应。PlayListSampleAdapter即PlayListSample的适配器,同主界面的SampleListAdapter实现类似,在这部分不做过多描述。MyTrackSelection是对ExoPlayer框架的BaseTrackSelection抽象类的实现。
由于播放界面涉及方法较多,不便使用和主界面类似的模拟使用直接描述的方法,下面通过罗列方法,及其作用,对重点部分进行详细叙述的方式介绍整个播放界面实现。
在活动PlayerActivity中重写了以下生命周期控制的方法:
·onCreate():调用于PlayerActivity创建。初始化配置除播放器相关组件外的所有组件,并包括视图模型PlayerViewModel的创建绑定,所有视图模型LiveData的观察绑定,视图模型中数据访问接口的初始化,及所有样例的获取。
·onBackPressed():调用于系统接受到返回逻辑。用于传递正常活动退出信息。
在活动PlayerActivity中重写了除生命周期控制外以下ExoPlayer接口的对应方法:
·MediaSourceEventListener:
1.onLoadCompleted():调用于所有媒体文件下载完成时。通过该方法中的输入参数‘loadEventInfo’获得划分后媒体块的下载时间以及下载大小,以此可获得网络传输速率;
2.onLoadError():调用与媒体加载错误时。调用后续将提到的活动私有方法‘quitOnError()’。
·PlayerEventListener:
1.onSeekProcessed():调用于播放进度调整之后。调用视图模型对应方法调整当前缓存块的索引(调试目的);
2.onPlayerError():调用于遭遇播放错误时。调用后续将提到的活动私有方法‘quitOnError()’;
3.onTracksChanged():调用于播放媒体切换。用于在播放列表自动切换时,修改PlayerViewModel中当前播放项目索引,以实现播放列表显示变更。
·PlayerControlView.VisibilityListener:
1.onVisibilityChange():调用于PlayerContorlView显示状态变更时,设定播放列表和速度控制部件跟随PlayerControlView显隐。
·SeekBar.OnSeekBarChangeListener:
1.onProgressChanged():调用于速度控制SeekBar进度调整时。使用方法输入参数‘progress’完成对应比例的速度值计算,并更改PlayerViewModel中保存的播放速度,以实现播放速度变更。
为了进一步提升用户体验,播放界面各控制项按钮都通过设定‘tooltipText’属性,在长按时提供对应项目的文本提示,播放列表操作按钮使用‘performHapticFeedback’方法,在用户点击时提供对应振感提示。
所述设置界面模块:不仅使用布局文件配置界面,还使用XML文件‘setting_preference.xml’进行界面内容的填充。其中,常规布局文件为settings_activity.xml。
步骤5:将视频播放器码率调节部分使用预处理阶段处理得到的模型在移动设备上进行推导实现。
本实施例中,应用程序端测试使用运行某类原生ROM的Redmi K20 Pro设备,系统API Level为29(Android Q)。公网线上测试源部署在Google Cloud Platform(GCP)的云存储(Storage)中,通过Cloudflare(CF)的CNAME DNS解析绑定自定义域名,其结果如图6所示。在IPv6的支持方面,CF与GCP均有IPv6的支持,如图7所示。为保证通用性,应用程序没有对传输的网络协议做相关干涉,对IPv6的支持取决于移动设备接入网络对IPv6的支持情况。目前国内主流运营商都已实现对IPv6的支持,在参与测试的Redmi K20 Pro设备上,使用运营商网络得到如图8所示的IP地址信息。
本实施例中测试了移动应用程序端各模块的实现情况。经验证,系统各模块都运行正常。设置界面切换数据源主界面自动刷新进行媒体资源列表加载正常,主界面下拉刷新逻辑,错误处理逻辑正常。如图8所示。播放界面模块各控制组件表现均符合预期。如图9所示的播放列表、播放速度控制、控制功能锁相关组件。具体播放列表相关控制表现符合预期,如图10所示的播放列表初始化,加载所有媒体列表,移动、删除列表项目,对播放列表进行简单排序。在码率调节方面,在不同网络状况下(内网本地测试通过路由器进行速度限制)和ExoPlayer自带的基于带宽估计的吞吐量预测简单自适应码率进行对比测试。以及使用公网线上源在真实环境进行对比测试。一次在相近时间段使用公网线上源进行测试的比特率选择以及大致吞吐量结果如图11所示。可以看到算法对比特率的选择符合吞吐量大致曲线变化,程序能实现基本的码率自适应,强化学习码率调节算法较自带算法更保守而稳定,但可能出于视频划分粒度以及模型结果选择策略的影响,有时会表现出网络状况的感知不敏感,后续需要进一步改进对模型预测结果的处理。

Claims (6)

1.一种基于IPv6的360度视频自适应传输方法,其特征在于,包括如下步骤:
步骤1:根据码率调节算法的性能,选择码率调节算法Pensive作为系统的码率调节算法;
步骤2:使用FFmpeg对360度视频进行预处理并生成对应清单文件,再利用Shell脚本处理得到包含媒体片段文件大小的JSON文件,最后在服务器端进行视频资源的部署;
步骤2.1:根据原始360度视频分辨率大小,采用FFmpeg生成至少六个不同分辨率的视频资源以及一个独立的音频资源;
步骤2.2:对于原始360度视频宽度大于2160的情况,多生成一个与原始360度视频分辨率以及比特率相同的视频资源;
步骤2.3:对步骤2.1或步骤2.2得到的媒体资源采用FFmpeg生成DASH传输协议所需的媒体片段以及清单;
步骤2.4:为了便于后续处理,在对每个360度视频处理时,将所生成的文件均置于输入文件同名目录下;
步骤2.5:利用Shell脚本设计用于服务器端传递媒体列表信息的JSON文件结构,并进行视频资源的部署;
步骤3:对强化学习模型进行预处理,并将经过训练的强化学习模型即ckpt文件转换为TensorFlow-Lite所需以“tflite”为扩展名的文件;
步骤3.1:基于强化学习算法Pensieve中的开源代码,对A3C算法进行修改;
步骤3.2:将强化学习模型中的Actor网络的输入inputs命名为a_inputs,将其输出out命名为a_outputs;
步骤3.3:通过TensorFlow-Lite算法中的graph_def.node得到强化学习模型所有的网络节点,结合步骤3.2中对节点的命名,进行过滤筛选找到模型中对应输入输出节点;
步骤3.4:采用修改后的A3C算法对强化学习模型重新训练,找到新的强化学习模型的输入输出节点,并等待新的强化学习模型训练到收敛;
步骤3.5:使用write_graph方法保存模型的节点关系信息,生成对应‘graph.pb’文件;
步骤3.6:结合强化学习模型训练使用Saver.save保存的包含参数训练序列化变量的检查点checkpoint文件‘model_ep_xx.ckpt’,使用TensorFlow提供的‘freeze_graph.py’工具产生保存了参数序列化变量以及节点关系定义的冻结好的模型文件‘frozen.pb’,在工具‘freeze_graph.py’的调用过程中提供步骤3.4得到的输出节点名;
步骤3.7:得到‘frozen.pb’之后使用TensorFlow中的‘TfLiteConverter’生成最后的‘model.tflite’文件;
步骤4:基于移动设备的基础架构设计应用程序以及360度视频播放器;
步骤5:将视频播放器码率调节部分使用预处理阶段处理得到的模型在移动设备上进行推导实现。
2.根据权利要求1所述的基于IPv6的360度视频自适应传输方法,其特征在于,所述步骤4中的应用程序包含主界面、播放界面以及设置界面三个功能模块。
3.根据权利要求2所述的基于IPv6的360度视频自适应传输方法,其特征在于,所述主界面模块负责对服务器提供媒体数据的展示,为其他界面提供入口以及对应的同名代码文件。
4.根据权利要求2所述的基于IPv6的360度视频自适应传输方法,其特征在于,所述播放界面模块:在主界面媒体列表项被点击之后,播放界面被打开以完成360度视频的播放。
5.根据权利要求2所述的基于IPv6的360度视频自适应传输方法,其特征在于,所述设置界面模块:不仅使用布局文件配置界面,还使用XML文件‘setting_preference.xml’进行界面内容的填充。
6.根据权利要求1所述的基于IPv6的360度视频自适应传输方法,其特征在于,所述步骤4中360度视频播放器用于在视图模型间共享数据,形成中间持久化层。
CN202111474120.1A 2021-12-03 2021-12-03 一种基于IPv6的360度视频自适应传输方法 Active CN114173185B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111474120.1A CN114173185B (zh) 2021-12-03 2021-12-03 一种基于IPv6的360度视频自适应传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111474120.1A CN114173185B (zh) 2021-12-03 2021-12-03 一种基于IPv6的360度视频自适应传输方法

Publications (2)

Publication Number Publication Date
CN114173185A CN114173185A (zh) 2022-03-11
CN114173185B true CN114173185B (zh) 2022-12-13

Family

ID=80483498

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111474120.1A Active CN114173185B (zh) 2021-12-03 2021-12-03 一种基于IPv6的360度视频自适应传输方法

Country Status (1)

Country Link
CN (1) CN114173185B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101540652A (zh) * 2009-04-09 2009-09-23 上海交通大学 多视角视频码流的终端异构自匹配传输方法
CN101599843A (zh) * 2009-06-30 2009-12-09 东北大学 基于IPv6的组播服务质量控制方法
CN109982112A (zh) * 2017-12-27 2019-07-05 豪威科技股份有限公司 具有用于功率高效视频流式传输的自适应位速率控制的嵌入式多媒体系统
CN111818115A (zh) * 2019-04-12 2020-10-23 华为技术有限公司 一种处理方法、装置和系统
CN111867114A (zh) * 2019-04-28 2020-10-30 华为技术有限公司 一种确定调度优先级的方法及装置
CN111901642A (zh) * 2020-07-31 2020-11-06 成都云格致力科技有限公司 基于强化学习的实时视频码率自适应调控方法与系统
CN112565247A (zh) * 2020-12-03 2021-03-26 东北大学 基于IPv6的移动终端实时多媒体数据流传输系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014152047A2 (en) * 2013-03-15 2014-09-25 General Instrument Corporation Enhanced playlist definition and delivery for fast channel change with http adaptive streaming

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101540652A (zh) * 2009-04-09 2009-09-23 上海交通大学 多视角视频码流的终端异构自匹配传输方法
CN101599843A (zh) * 2009-06-30 2009-12-09 东北大学 基于IPv6的组播服务质量控制方法
CN109982112A (zh) * 2017-12-27 2019-07-05 豪威科技股份有限公司 具有用于功率高效视频流式传输的自适应位速率控制的嵌入式多媒体系统
CN111818115A (zh) * 2019-04-12 2020-10-23 华为技术有限公司 一种处理方法、装置和系统
CN111867114A (zh) * 2019-04-28 2020-10-30 华为技术有限公司 一种确定调度优先级的方法及装置
CN111901642A (zh) * 2020-07-31 2020-11-06 成都云格致力科技有限公司 基于强化学习的实时视频码率自适应调控方法与系统
CN112565247A (zh) * 2020-12-03 2021-03-26 东北大学 基于IPv6的移动终端实时多媒体数据流传输系统及方法

Also Published As

Publication number Publication date
CN114173185A (zh) 2022-03-11

Similar Documents

Publication Publication Date Title
US10616312B2 (en) Dynamic creation and execution of containerized applications in cloud computing
US10002115B1 (en) Hybrid rendering of a web page
KR20230173223A (ko) 게이밍 렌더링에서의 메모리 관리
CN103516762B (zh) 一种虚拟桌面的生成方法、设备及系统
WO2009111325A2 (en) Scalable, cross-platform method for multi-tile display systems
US11516628B2 (en) Media streaming with edge computing
MXPA04006407A (es) Resolucion de una topologia distribuida para canalizar datos.
KR102688854B1 (ko) 컴퓨팅 플랫폼에서의 기능 구현을 위한 컴퓨팅 리소스 추정
KR101198437B1 (ko) 컨텍스트 트리거형 배포 방법, 장치 및 컴퓨터 판독 가능한 저장매체
US9740791B1 (en) Browser as a service
CN110096245A (zh) 分布式跨平台用户界面和应用投影
US20210081227A1 (en) Generating a next best action recommendation using a machine learning process
KR102668137B1 (ko) 태스크들 및 작업 흐름들의 상태 비저장 병렬 프로세싱 방법 및 장치
US20170344539A1 (en) System and method for improved scalability of database exports
US11388067B2 (en) Systems and methods for network-based media processing (NBMP) for describing capabilities
WO2020257970A1 (en) Previewing application user interface for multiple locales
US20230050360A1 (en) Procedures for providing ar/mr applications to 5g devices by running ar/mr processing on 5g edge servers/cloud including dynamic scene updates
WO2020215833A1 (zh) 离线缓存方法、装置、终端及可读存储介质
JP2022522839A (ja) クラウドサービスのための方法、装置、および、コンピュータプログラム
JP2024102080A (ja) 再帰的データトラバースモデル
CN114173185B (zh) 一种基于IPv6的360度视频自适应传输方法
CN106257447B (zh) 云存储服务器的视频存储及检索方法、视频云存储系统
KR20230104602A (ko) 미디어 스트림들의 동적 사용자 디바이스 업스케일링
US20210154576A1 (en) Vector graphics-based live streaming of video games
KR20220146801A (ko) 싱글 스트림을 이용하여 관심 영역 고화질 영상을 제공하는 방법, 컴퓨터 장치, 및 컴퓨터 프로그램

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