CN117793448A - 一种基于dlna的投屏方法和装置 - Google Patents
一种基于dlna的投屏方法和装置 Download PDFInfo
- Publication number
- CN117793448A CN117793448A CN202410159733.3A CN202410159733A CN117793448A CN 117793448 A CN117793448 A CN 117793448A CN 202410159733 A CN202410159733 A CN 202410159733A CN 117793448 A CN117793448 A CN 117793448A
- Authority
- CN
- China
- Prior art keywords
- data
- screen
- playing
- file
- http
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000005266 casting Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 2
- 230000002159 abnormal effect Effects 0.000 abstract description 7
- 238000013523 data management Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 description 12
- 230000005856 abnormality Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- BASFCYQUMIYNBI-UHFFFAOYSA-N platinum Chemical compound [Pt] BASFCYQUMIYNBI-UHFFFAOYSA-N 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229910052697 platinum Inorganic materials 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及计算机软件技术领域,提供了一种基于DLNA的投屏方法和装置。本发明通过自建的HTTP Server将下载中文件映射为HTTP地址,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布,避免将下载中文件本身的数据管理交给DMS,而是通过HTTP Server管理下载中文件,解决了原始的DLNA协议不支持直接添加网络流地址的问题。在此基础上,DMC通过HTTP Server连续地发起多个播放请求;根据DMS上发布的HTTP地址获取下载中文件的待投屏数据,通过HTTP Server使播放请求携带待投屏数据,并添加至DMR,通过DMR播放。本发明基于HTTP Server通过播放请求将实时下载的待投屏数据不断地添加至DMR,避免了DMR通过HTTP地址从DMS获取待播放数据,解决了下载中文件投屏存在播放异常的问题。
Description
技术领域
本发明涉及计算机软件技术领域,特别是涉及一种基于DLNA的投屏方法和装置。
背景技术
随着互联网技术的日益发展,越来越多用户需要提升观看音视频文件时的用户体验;其中,最常见的应用场景为投屏,即用户将智能手机等小屏播放设备上的音视频文件,投放至电视机等大屏设备播放。
数字生活网络联盟(Digital Living Network Alliance,简写为DLNA)是一个技术标准,该技术标准旨在实现家庭网络中数字媒体设备(例如,个人计算机、消费电器和移动设备)的互联互通,从而促进数字媒体和内容服务的无限制共享和增长。DLNA是一个制定解决方案和规范的平台,其选择的各种技术和协议都是当前广泛应用的技术和协议;它通过制定一系列的技术标准和规范,使得不同数字媒体设备可以在同一网络环境下相互识别、共享和传输数字媒体内容;DLNA技术参数主要包括网络接口和传输协议、媒体格式和编码、媒体传输和控制协议及设备类别和功能等方面。
DLNA技术在视频投屏播放领域有着广泛的应用。基于该技术,可以将不同设备上的视频源分享到其他设备进行播放。DLNA投屏技术的原理是将待播放的本地文件映射成一个超文本传输协议(Hypertext Transfer Protocol,简写为HTTP)地址,即网络流地址,然后将该HTTP地址提供给远端设备,以获取对应的网络视频流,远端设备通过获取并播放该网络视频流提供的在线音视频数据,实现投屏播放。其中,远端设备指能够在远离本地设备的位置运行,并提供服务或完成特定任务的设备,远端设备通常需要具备远程通信和数据处理能力,以便与本地设备或服务器进行数据交换和控制操作。
受网络状况或其他实际因素的限制,在线音视频数据的下载速度往往有限,虽然近年来下载速度已经得到较大的提升,但仍需要较短的时间才能完成下载。所以目前在投屏场景下,用户经常会存在播放下载中文件的需求。但基于DLNA投屏技术的原理,将未下载完成(下载中)的文件映射为HTTP地址后,远端设备无法根据该HTTP地址与非本地文件的网络视频流建立数据传输通道,在远端设备播放时,如遇到未下载完成的部分,则会存在播放异常,导致播放失败;以致于无法满足用户对于在线音视频数据的“点击即播放”和“拖动进度条即播放”等需求。
同时,由于原始的DLNA协议不支持直接添加网络流地址,即DLNA的数字媒体服务器(Digital Media Server,简写为DMS)侧只允许加入本地文件,由DMS完成HTTP地址的映射,造成网络流地址无法成为DLNA投屏源。
由于该技术只适用于本地完整文件的投屏播放,对于下载中文件、网络流地址无法投屏播放,因此需要通过一种新的技术方式扩大其适用场景,满足用户需求。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
本发明要解决的技术问题是提供一种基于DLNA的投屏方法和装置,其目的在于,在离线播放场景下,使用本地播放器基于网络流地址实现下载中文件的投屏,解决了现有技术中使用下载中文件进行投屏存在播放异常,以及原始的DLNA协议不支持直接添加网络流地址,导致的网络流地址无法成为DLNA投屏源的问题。
本发明采用如下技术方案:
第一方面,本发明提供了一种基于DLNA的投屏方法,包括:
当数字媒体控制器DMC发起添加资源请求时,创建对应的HTTP Server;通过所述HTTP Server将下载中文件映射为HTTP地址;
根据添加资源请求,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布;
当需要投屏播放所述下载中文件时,所述DMC通过所述HTTP Server连续地发起多个播放请求;
根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTPServer使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR,以便于通过所述DMR播放所述待投屏数据。
进一步地,所述根据添加资源请求,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布包括:
当所述DMC发起所述添加资源请求时,通过调用SetAVTransportURI方法,直接将所述HTTP地址添加至所述DMS,以实现在所述DMS上对外发布。
进一步地,所述根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTP Server使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR包括:
数据源模块根据所述HTTP地址,得到当前下载完成的待投屏数据,将所述待投屏数据写入所述HTTP Server的数据池模块;
所述HTTP Server从所述数据池模块获取所述待投屏数据,将所述待投屏数据添加到所述播放请求;
通过所述播放请求携带所述待投屏数据,将所述待投屏数据添加至DMR。
进一步地,所述播放请求携带所述下载中文件对应的播放时间点;所述数据源模块根据所述HTTP地址,得到当前下载完成的待投屏数据,将所述待投屏数据写入所述HTTPServer的数据池模块包括:
所述数据源模块根据所述播放时间点,在所述数据源模块中的BT下载模块设置下载优先片;
所述BT下载模块根据所述下载优先片,下载所述播放时间点对应的待投屏数据,得到当前下载完成的待投屏数据;
将所述当前下载完成的待投屏数据写入所述数据池模块。
进一步地,所述BT下载模块基于libtorrent库得到所述待投屏数据;所述数据源模块根据所述播放时间点,在所述数据源模块中的BT下载模块设置下载优先片包括:
所述数据源模块根据所述播放时间点,设置所述libtorrent库中的offset参数,以设置下载优先片;
所述BT下载模块根据所述下载优先片,下载所述播放时间点对应的待投屏数据,得到当前下载完成的待投屏数据包括:
所述libtorrent库根据设置的offset参数,优先从所述播放时间点开始,下载所述下载中文件,得到当前下载完成的待投屏数据。
进一步地,所述HTTP Server与数据源模块在同一设备上部署。
进一步地,所述当需要投屏播放所述下载中文件时,所述DMC通过所述HTTPServer连续地发起多个播放请求包括:
根据播放侧的进度条的播放时间点,或者所述播放侧的时间跳转功能所获取的播放时间点,生成播放侧对于所述下载中文件的seek请求;
根据所述seek请求所携带的播放时间点,所述DMC连续地发起多个播放请求;
其中,所述多个播放请求用于获取从所述播放时间点开始的待投屏数据。
进一步地,每个所述播放请求依次携带对应的时间点参数;
每个所述播放请求所携带的时间点参数与上一个播放请求的时间点参数之差为预设时间间隔。
第二方面,本发明还提供了一种基于DLNA的投屏装置,包括服务创建模块、对外发布模块、DMS、DMC、数据源模块和DMR;
所述服务创建模块,用于当数字媒体控制器DMC发起添加资源请求时,创建对应的HTTP Server;
所述对外发布模块,用于通过所述HTTP Server将下载中文件映射为HTTP地址;还用于根据添加资源请求,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布;
所述DMS,用于对外发布所述HTTP地址;
所述DMC,用于当需要投屏播放所述下载中文件时,通过所述HTTP Server连续地发起多个播放请求;
所述数据源模块,用于根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTP Server使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR;
所述DMR,用于播放所述待投屏数据。
第三方面,本发明还提供了一种基于DLNA的投屏装置,用于实现第一方面所述的基于DLNA的投屏方法,所述基于DLNA的投屏装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的基于DLNA的投屏方法。
第四方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的基于DLNA的投屏方法。
本发明通过自建的HTTP Server将下载中文件映射为HTTP地址,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布,避免将下载中文件本身的数据管理交给DMS,而是通过HTTP Server管理下载中文件,突破了DLNA协议的适用场景,解决了DMS侧只允许加入本地文件、原始的DLNA协议不支持直接添加网络流地址的问题。在此基础上,DMC通过HTTP Server连续地发起多个播放请求;根据DMS上发布的HTTP地址获取下载中文件的待投屏数据,进而通过HTTP Server使播放请求携带待投屏数据,并添加至DMR,最终由DMR播放待投屏数据;本发明避免DMR直接通过HTTP地址从DMS获取待播放数据,而是基于HTTPServer,通过播放请求,将实时下载的待投屏数据不断地添加至DMR,解决了下载中文件投屏存在播放异常的问题。
进一步地,本发明结合开源的BT库libtorrent对数据源模块进行封装,通过根据用户指定的播放时间点修改offset参数,并根据offset参数动态地下载待播放视频,将下载和播放联动起来,以支持用户的“点击即播放”和“拖动进度条即播放”等需求。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于DLNA的投屏方法的流程示意图;
图2是本发明实施例提供的一种用于实现基于DLNA的投屏方法的***物理部署图;
图3是本发明实施例的步骤30的流程示意图;
图4是本发明实施例的步骤40的流程示意图;
图5是本发明实施例提供的一种***模块结构图;
图6是本发明实施例的步骤401的流程示意图;
图7是本发明实施例提供的一种基于DLNA的投屏方法的***流程图;
图8是本发明实施例提供的一种基于DLNA的投屏装置的架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
本发明中术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请中,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或成一体;可以是直接相连,也可以通过中间媒介间接相连。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
下面基于DLNA对本发明实现投屏的使用场景进行说明:
DLNA协议定义了数字媒体服务器(Digital Media Server,简写为DMS)、数字媒体渲染器(Digital Media Renderer,简写为DMR)和数字媒体控制器(Digital MediaController,简写为DMC)等主要功能模块;其中,以上功能模块均指提供相应服务的组件,可集成在应用程序中,并被部署于物理设备上。
本发明所针对的使用场景为:当用户通过下载模块,将所需播放的音视频文件下载至设备(该设备与DMS存在连接)本地后,用户通过安装在该设备上的投屏应用程序,基于工具化的本地播放器,利用DMC将该音视频文件加入到DMS;进而使得DMR与DMS建立连接后,能够从DMS获取并离线播放该音视频文件。且在该设备上运行的本地播放器的播放界面中,通过拖动播放进度条,可实现播放内容的立即跳转,到达用户指定的播放时间点,进而从该播放时间点开始播放该音视频文件的相应内容。
DMS用于获取媒体资源(即,所需播放的音视频文件);DMS通常集成在智能手机、个人计算机和平板电脑上。DMC用于寻找DMS上可播放的媒体资源,并且将媒体资源指定到可以播放相应类型内容的DMR上,即控制DMR与DMS的交互;DMC通常集成在智能手机、个人计算机和平板电脑上。DMR用于播放由DMC从DMS中所指定的媒体资源;DMR通常集成在智能电视、显示屏上。DMS与DMC往往集成在同一设备上,例如,DMS与DMC均集成在智能手机上,或均集成在个人计算机上;但也可以不集成在同一设备上,例如,DMC集成在遥控器上,DMS集成在网络电视机顶盒上。投屏应用程序指用于实现投屏功能的应用程序(Application),应用程序往往由多个功能模块组成,与DMS、DMC和DMR等功能模块不属于同一层级的概念;但投屏应用程序不包含DMR,投屏应用程序一般包含DMS和DMC。
需要说明的是,本发明不适用于提供流媒体服务的在线网络视频平台,而是适用于本地播放器。用户将在线网络视频平台上的视频投屏至智能电视等集成DMR的设备时,无需将视频下载至本地(本地指访问在线网络视频平台的终端设备),而是通过网络基于流媒体服务传输视频内容,使得相应的视频内容能够实时投屏播放;当该视频投屏播放完毕后,在终端设备上不会存在该视频对应的本地文件。而在本发明的场景下,用户需要将终端设备上的音视频文件投屏播放时,需要通过本地播放器从本地读取该音视频文件,再进行离线播放;其中,在本发明的场景下音视频文件例如,使用智能手机拍摄并存储在本地的视频,和利用下载模块下载至本地的视频等。
下面对现有技术存在的问题进行举例说明:
由于音视频文件的下载往往是非线性的,即,随时可能优先下载整个音视频文件中的任何片段;使用播放本地磁盘内音视频文件的本地播放器进行下载中文件的投屏时,当投屏播放到未下载完成的片段时,画面会停止,无法继续播放。
为了便于理解,下面基于现有技术中DMS、DMC和DMR之间的交互,对使用场景及现有技术存在的问题进行举例说明,具体如下:
用户在(同时集成了DMC和DMS的)智能手机上,通过下载应用程序(即,下载模块),将所需投屏的音视频文件下载至本地(即,智能手机的内部存储)。
用户打开投屏应用程序,通过寻找或添加投屏设备功能,将所需投屏到的智能电视设置为投屏设备;即,使DMS与DMR连接;其中,投屏设备即远端设备,投屏设备上集成了DMR。
用户继续在投屏应用程序中,选择内部存储中的该音视频文件,将其添加为需要投屏应用程序投屏的媒体资源。在该添加媒体资源的过程中,智能手机上的DMC发起添加资源请求,投屏应用程序响应该添加资源请求,将该音视频文件添加至投屏播放列表。其中,通过DMC将该音视频文件的本地地址(例如,“D:\Users\Desktop\音视频文件名称”)添加到DMS。
当用户在智能手机上,从投屏播放列表中选择投屏播放该音视频文件时,DMC发起播放请求。DMS响应该播放请求,把该本地地址映射为一个HTTP地址,以供DMR访问。当DMR响应该播放请求,访问该HTTP地址时,DMS从本地读取HTTP地址对应的音视频文件,将该音视频文件中的待投屏数据不断地传输给DMR。DMR将接收到的待投屏数据播放,最终实现投屏。
但在该场景下,对于正在下载的音视频文件(即,下载中文件),其在本地会存在一个临时文件,该临时文件为该音视频文件中已下载至本地的部分。由于DMS仅支持加入本地文件,DMC将其已下载至本地的部分的本地地址添加到DMS,DMS将该本地地址映射为HTTP地址,DMR根据该HTTP地址播放当前下载完成的部分。由于本地并不存在未下载的部分,所以DMR读取到未下载的部分就停止播放了,即出现播放异常,具体表现为卡顿或无法播放;且由于该音视频文件是从前到后地顺序下载的,所以当用户在播放侧拖动进度条,想要指定播放时间点时,在指定的播放时间点属于未下载的部分的情况下,多数播放器直接向用户报告播放异常,告知用户无法播放;其他少数播放器也只能等待顺序下载到该播放时间点对应的待投屏数据后,再将其播放;而无法满足用户“拖动进度条即播放”的需求。另外,用户经常存在“点击即播放”的需求,具体为:将音视频文件加入下载模块后,需要立即将该音视频文件投屏至DMR播放。由于刚加入下载模块时,往往还未开始下载,或者仅下载了极少量的待投屏数据,相当于指定的播放时间点属于未下载的部分的情况,且播放时间点为音视频文件的第0秒,所以同理会出现播放异常,现有技术无法满足该需求。
边下载边播放可以极大地提高用户体验;具体地,由于边下载边播放能够满足立即播放的需求,并达到较高的播放稳定性,不容易出现卡顿;当用户需要再次播放相应的音视频数据时,无需重复获取已经拉取到本地的音视频数据,既节省了获取音视频数据所需要耗费的流量,又能够实现再次立即播放。但是在投屏场景下,无法实现边下载边播放;本发明对现有的DLNA投屏技术进行改造,基于HTTP Server和比特流(BitTorrent,简写为BT)下载技术,实现投屏场景下的边下载边播放。具体而言,本发明实施例1提供了一种基于DLNA的投屏方法,如图1所示,包括:
步骤10:当数字媒体控制器DMC发起添加资源请求时,创建对应的HTTP Server;通过所述HTTP Server将下载中文件映射为HTTP地址。
其中,添加资源请求用于将用户指定的音视频文件添加至投屏播放列表。HTTPServer为基于HTTP协议的服务,相当于在建立一个网站服务后台。将下载中文件映射为HTTP地址用于将该下载中文件对外发布,以便于后续不断地通过HTTP Server直接访问和下载该下载中文件的待投屏数据。
步骤20:根据添加资源请求,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布。
由于DMS侧只允许加入本地文件,并由DMS将该本地文件映射为HTTP地址,即原始的DLNA协议不支持直接添加网络流地址,所以导致下载中文件播放至未下载的部分即出现播放异常。本发明实施例通过自建HTTP Server提供一个有效的HTTP网址,并直接将该有效的HTTP地址加入至DMS(即,将该有效的HTTP地址在DMS上对外发布);以这种方式,让HTTPServer取代DMS对下载中文件进行数据管理的功能,进而解决播放异常的问题。
步骤30:当需要投屏播放所述下载中文件时,所述DMC通过所述连续地发起多个播放请求。
其中,播放请求指HTTP Server的Get请求,该Get请求由DMC发起,携带待投屏数据一同到达DMR。Get请求是HTTP协议中的一种请求方法,为视频播放的通用请求模式;HTTPServer提供一种服务,具体获取待投屏数据的执行主体为Get请求。
本发明首先通过将下载中文件在DMS上对外发布,解决网络流地址的投屏问题,进而在该基础上,通过播放请求实时地将待投屏数据添加至DMR,最终由DMR播放该待投屏数据,实现下载中文件的投屏播放。
步骤40:根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTP Server使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR,以便于通过所述DMR播放所述待投屏数据。
如图2所示,本发明实施例可基于该架构实现投屏播放,但并不用以限制本发明;DMR设备并不限制为个人计算机的显示屏或智能手机。在本发明实施例的场景下,DMS和DMC可以部署在同一设备上,DMR为投屏设备;所述HTTP Server与所述数据源模块在同一设备上部署;其中,由HTTP Server将下载中文件映射为HTTP地址,并将其添加到DMS,以实现该HTTP地址的对外发布;数据源模块(Data Source)即下载模块,由数据源模块对下载中文件进行下载,并通过HTTP Server的播放请求,将当前下载完成的待投屏数据添加至DMR;由DMR播放当前下载完成的待投屏数据。
在可选的实施例中,HTTP Server、数据源模块、DMS和DMC均在同一智能手机上部署,即HTTP Server相当于在智能手机(本地)建立一个网站服务后台,实现从智能手机上,使用投屏应用程序,将下载至智能手机的下载中文件在投屏设备上播放。
本发明通过自建的HTTP Server将下载中文件映射为HTTP地址,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布,避免将下载中文件本身的数据管理交给DMS,而是通过HTTP Server管理下载中文件,突破了DLNA协议的适用场景,解决了DMS侧只允许加入本地文件、原始的DLNA协议不支持直接添加网络流地址的问题。在此基础上,DMC通过HTTP Server连续地发起多个播放请求;根据DMS上发布的HTTP地址获取下载中文件的待投屏数据,进而通过HTTP Server使播放请求携带待投屏数据,并将所携带的待投屏数据添加至DMR,最终由DMR播放待投屏数据;本发明避免DMR直接通过HTTP地址从DMS获取待播放数据,而是基于HTTP Server,通过播放请求,将实时下载的待投屏数据不断地添加至DMR,解决了下载中文件投屏存在播放异常的问题。
在对下载中文件进行投屏播放的过程中,需要通过DMC将下载中文件添加到投屏播放列表,下面对现有技术中,添加下载中文件的功能逻辑进行说明:
在播放侧(即,DMS侧和DMC侧),基于Platinum开源库,实现自定义的数据源模块的DMCDelegate类;其中,DMCDelegate类与Platinum开源库中的基类之间的继承关系如下:
class DMCDelegate:public PLT_SyncMediaBrowser
,public PLT_MediaController
,public PLT_MediaControllerDelegate。
首先通过基类PLT_SyncMediaBrowser的BrowseSync方法获取PLT_MediaObjectListReference,即在当前的媒体渲染器中同步浏览(或搜索)匹配的媒体对象;然后通过NPT_ContainerFind方法,从DMS的本地查找浏览结果中与给定请求资源匹配的媒体对象PLT_MediaObject;最后通过SetAVTransportURI函数设置媒体渲染器的传输统一资源标志符(Uniform Resource Identifier,简写为URI),即将本地媒体资源以HTTP形式分发到各个DMR。
本发明实施例提供一种现有技术中通过DMS添加本地文件的具体实例:
但以上方法仅可针对由DMS从本地文件映射得到的HTTP地址,当用户通过下载模块下载所需播放的下载中文件时,根据该下载中文件的网络流地址,从该下载中文件的数据来源获取该文件的数据,网络流地址可以是文件的统一资源定位符或HTTP地址等。由于DMS仅支持读取本地文件,而对网络流地址来说,无法找到下载完成的本地文件,所以不能通过DMS将相应的下载中文件的待投屏数据添加至DMR,进而导致DMR不能播放。
为了支持网络流地址投屏播放,本发明对在DMS侧和DMC侧添加下载中文件的功能逻辑进行改造,具体而言,所述步骤20包括:
当所述DMC发起所述添加资源请求时,通过调用SetAVTransportURI方法,直接将所述HTTP地址添加至所述DMS,以实现在所述DMS上对外发布。
本发明实施例通过深入了解DLNA运行机制,发现DLNA中运行了一个DMS,该DMS对内管理本地视频文件,对外以HTTP的形式,发布本地视频的HTTP地址;于是想到在其源代码中,不把下载中文件本身的数据管理交给DMS,而是通过调用SetAVTransportURI方法,仅添加一个HTTP地址到DMS,实现修改下载中文件的添加方式;如此一来,DLNA协议的适用场景就被拓宽了,只要能够产生一个有效的HTTP地址,通过将该有效的HTTP地址对外发布,即允许外部设备通过直接访问该HTTP地址来获取对应的下载中文件,就都能通过DLNA协议实现对外投屏了。
在支持网络流地址投屏播放的基础上,还提供了一种通过HTTP Server实时地获取下载中文件的音视频数据,实现支持下载中文件边下载边播放的方案。在投屏播放时,经常存在如下使用场景:用户在智能手机(DMC和DMS)上下载中文件的播放侧界面上,通过拖动进度条(或者,使用智能电视对应的遥控器上的“快进”或“快退”按钮),指定所需播放的播放时间点;期待智能电视(DMR)立即作出从指定的播放时间点播放该下载中文件的响应,即存在“拖动进度条即播放”的需求。还存在如下使用场景:用户在智能手机上选择好下载中文件后,期待智能电视(DMR)立即作出播放该下载中文件的响应,即存在“点击即播放”;“点击即播放”相当于“拖动进度条即播放”在场景中,指定播放时间点为下载中文件的第0秒。为了满足用户“拖动进度条即播放”和“点击即播放”的需求,如图3所示,所述步骤30包括:
步骤301:根据播放侧的进度条的播放时间点,或者所述播放侧的时间跳转功能所获取的播放时间点,生成播放侧对于所述下载中文件的seek请求。
步骤302:根据所述seek请求所携带的播放时间点,所述DMC连续地发起多个播放请求。
其中,所述多个播放请求用于获取从所述播放时间点开始的待投屏数据。
用户指定所需播放的播放时间点时,智能手机就会对自身播放侧发送一个seek请求,该seek请求用于要求播放侧跳转至指定的播放时间点,播放对应的待投屏数据。根据该seek请求,DMC发出相应的播放请求,通过该播放请求携带当前下载完成的待投屏数据,从而实现从该播放时间点开始播放下载中文件。具体地,每个所述播放请求依次携带对应的时间点参数,时间点参数指下载中文件中,在用户指定的播放时间点之后的时间点;每个所述播放请求所携带的时间点参数与上一个播放请求的时间点参数之差为预设时间间隔;其中,预设时间间隔由本领域技术人员根据具体使用场景进行选择,在此不作限定。本发明实施例通过依次实时发起多个播放请求,从指定的播放时间点开始,不断地获取下一个预设时间间隔的待投屏数据,每次下载完预设时间间隔对应的待投屏数据后,就立即将其写入HTTP Server的数据池模块,由HTTP Server将其从数据池模块取出,并立即添加给DMR,最终由DMR立即播放,以这种方式保证持续存在添加至DMR的当前下载完成的待投屏数据,使得用户感受不到时间间隙,实现边下载边播放,避免下载中文件播放卡顿。
下面对数据源模块与HTTP Server的交互过程进行说明,如图4所示,在步骤40中,所述根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTP Server使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR包括:
步骤401:数据源模块根据所述HTTP地址,得到当前下载完成的待投屏数据,将所述待投屏数据写入所述HTTP Server的数据池模块。
其中,一个下载中文件对应一个HTTP地址;由于已经通过HTTP地址将该下载中文件对外发布,所以HTTP Server可以通过该HTTP地址访问下载中文件,并获取该下载中文件中的待投屏数据,只要添加到DMS的HTTP地址是有效地址,即可不断地从该有效地址获取待投屏数据。
步骤402:所述HTTP Server从所述数据池模块获取所述待投屏数据,将所述待投屏数据添加到所述播放请求。
步骤403:通过所述播放请求携带所述待投屏数据,将所述待投屏数据添加至DMR。
如图5所示,通过建立的HTTP Server管理下载中文件的音视频数据,将下载中文件在DMS上对外发布之后,从数据源模块获取待投屏数据,通过投屏应用程序基于本地播放器实现投屏。对于下载中文件的每一帧待投屏数据,使用下载模块下载至本地,采用边下载边播放的模式实现立即响应,即迭代地通过数据源模块(Data Source)中的比特流(BitTorrent,简写为BT)下载模块(BT download)下载待投屏数据,再通过HTTP Server的播放请求从BT下载模块获取当前下载完成的待投屏数据,添加至DMR并播放。
其中,本发明实施例的下载模块可以为BT下载器,BT下载器是一种基于BitTorrent协议的下载工具。具体而言,下载方式通常有直链下载、云存储下载和点对点(peer-to-peer,简写为P2P)下载。直链下载由统一的服务器提供可下载资源,由于作为中心的服务器带宽有限,同时下载同一可下载资源的用户越多,下载速度越慢。云存储下载指将存储在云服务器上的可下载资源下载至本地。P2P下载不依赖服务器,而是将统一的服务器下载分散至各个客户端,每个客户端均相当于一台服务器,即每个客户端在自身下载的同时,还能够为其他客户端提供可下载资源;使用P2P下载音视频文件时,该音视频文件被分成多个部分,并从其他用户的计算机上同时下载这些部分,所以同时下载该音视频文件的用户越多,下载速度越快。由于用户一般使用投屏进行音视频文件的播放,尤其是播放电影等数据量较大的音视频文件,而云存储下载更适用于小数据量文件的存储与和基于云平台进行流媒体播放;为了获得较高的下载速度,往往不采用直链下载的方式;所以P2P下载更适合离线播放场景。BT下载作为P2P下载的一种具体实现方式,具有下载速度快的优点,适用于将音视频文件下载至本地。
下面对数据源模块从指定的播放时间点开始,实时地得到待投屏数据的过程进行说明:本发明根据播放侧的seek请求,实时调整下载位置,从而确保投屏的音视频数据的内容连贯性,避免播放异常。如图6所示,具体而言,根据相应的seek请求,所述播放请求携带所述下载中文件对应的播放时间点;所述步骤401包括:
步骤4011:所述数据源模块根据所述播放时间点,在所述数据源模块中的BT下载模块设置下载优先片。
其中,下载优先片指优先下载的下载中文件的片段或块。播放时间点由用户指定,用户期待DMR从该播放时间点开始播放下载中文件,但播放时间点并不限制为只能由用户指定;例如,在上述“点击即播放”的场景中,播放时间点由投屏应用程序指定为下载中文件的第0秒;或在播放器发生故障的情况下,由投屏应用程序中播放侧的默认控制机制决定重新开始播放的时间点。
本发明实施例的数据源模块(Data Source)基于开源的libtorrent库进行封装,即所述BT下载模块基于libtorrent库得到所述待投屏数据。所述数据源模块根据所述播放时间点,设置所述libtorrent库中的offset参数,以设置下载优先片。其中,offset参数指从下载中文件中开始下载待投屏数据的起始数据点,下载模块的offset参数相当于用户在播放侧指定的播放时间点。
步骤4012:所述BT下载模块根据所述下载优先片,下载所述播放时间点对应的待投屏数据,得到当前下载完成的待投屏数据。
当数据源模块收到播放请求后,所述libtorrent库根据设置的offset参数,优先从所述播放时间点开始,下载所述下载中文件,得到当前下载完成的待投屏数据。
步骤4013:将所述当前下载完成的待投屏数据写入所述数据池模块。
本发明实施例的HTTP Server从自身的数据池模块中取出当前下载完成的待投屏数据,将其交由相应的播放请求携带,当播放请求到达DMR侧时,相应的待投屏数据也被添加至DMR,从而可以实现立即播放。
实施例2:
如图7所示,本发明实施例在实施例1的基础上,提供了一种基于DLNA的投屏装置,包括服务创建模块、对外发布模块、DMS、DMC、数据源模块和DMR;
所述服务创建模块,用于当数字媒体控制器DMC发起添加资源请求时,创建对应的HTTP Server;
所述对外发布模块,用于通过所述HTTP Server将下载中文件映射为HTTP地址;还用于根据添加资源请求,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布;
所述DMS,用于对外发布所述HTTP地址;
所述DMC,用于当需要投屏播放所述下载中文件时,通过所述HTTP Server连续地发起多个播放请求;
所述数据源模块,用于根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTP Server使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR;
所述DMR,用于播放所述待投屏数据。
其中,服务创建模块、对外发布模块和数据源模块均属于投屏应用程序。DMS和DMC可以共同集成于播放器应用程序中,该播放器应用程序可以集成在该投屏应用程序中;DMS也可以单独集成于网络电视机顶盒等设备中,DMC也可以单独集成于遥控器等设备中。DMR可以集成在显示设备中,例如,智能电视。
对下载中文件进行投屏的过程如图7所示,为了实现边下载边播放,且支持在边下载边播放状态下拖动进度条选择任意播放时间点,首先通过文件发布模块执行文件发布流程,解决网络地址无法直接添加的问题;进而通过投屏播放模块执行投屏播放流程,实现DMR侧的投屏播放;在整体的投屏过程中,利用自建的HTTP Server实现结合HTTP地址对外发布与动态下载。
实施例3:
本发明实施例在实施例1的基础上,提供了一种将HTTP地址通过SetAVTransportURI设置到各个DMR的实例,具体如下:
/>
实施例4:
本发明实施例在实施例1的基础上,提供了一种实现下载中文件边下载边播放时,通过HTTP Server获取待投屏数据的实例,具体如下:
实施例5:
如图8所示,是本发明实施例的基于DLNA的投屏装置的架构示意图。本实施例的基于DLNA的投屏装置包括一个或多个处理器21以及存储器22。其中,图8中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的基于DLNA的投屏方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行基于DLNA的投屏方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的基于DLNA的投屏方法,例如,执行以上描述的图1、图3-图4和图6所示的各个步骤。
值得说明的是,上述装置和***内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于DLNA的投屏方法,其特征在于,包括:
当数字媒体控制器DMC发起添加资源请求时,创建对应的HTTP Server;通过所述HTTPServer将下载中文件映射为HTTP地址;
根据添加资源请求,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布;
当需要投屏播放所述下载中文件时,所述DMC通过所述HTTP Server连续地发起多个播放请求;
根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTP Server使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR,以便于通过所述DMR播放所述待投屏数据。
2.根据权利要求1所述的基于DLNA的投屏方法,其特征在于,所述根据添加资源请求,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布包括:
当所述DMC发起所述添加资源请求时,通过调用SetAVTransportURI方法,直接将所述HTTP地址添加至所述DMS,以实现在所述DMS上对外发布。
3.根据权利要求1所述的基于DLNA的投屏方法,其特征在于,所述根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTP Server使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR包括:
数据源模块根据所述HTTP地址,得到当前下载完成的待投屏数据,将所述待投屏数据写入所述HTTP Server的数据池模块;
所述HTTP Server从所述数据池模块获取所述待投屏数据,将所述待投屏数据添加到所述播放请求;
通过所述播放请求携带所述待投屏数据,将所述待投屏数据添加至DMR。
4.根据权利要求3所述的基于DLNA的投屏方法,其特征在于,所述播放请求携带所述下载中文件对应的播放时间点;所述数据源模块根据所述HTTP地址,得到当前下载完成的待投屏数据,将所述待投屏数据写入所述HTTP Server的数据池模块包括:
所述数据源模块根据所述播放时间点,在所述数据源模块中的BT下载模块设置下载优先片;
所述BT下载模块根据所述下载优先片,下载所述播放时间点对应的待投屏数据,得到当前下载完成的待投屏数据;
将所述当前下载完成的待投屏数据写入所述数据池模块。
5.根据权利要求4所述的基于DLNA的投屏方法,其特征在于,所述BT下载模块基于libtorrent库得到所述待投屏数据;所述数据源模块根据所述播放时间点,在所述数据源模块中的BT下载模块设置下载优先片包括:
所述数据源模块根据所述播放时间点,设置所述libtorrent库中的offset参数,以设置下载优先片;
所述BT下载模块根据所述下载优先片,下载所述播放时间点对应的待投屏数据,得到当前下载完成的待投屏数据包括:
所述libtorrent库根据设置的offset参数,优先从所述播放时间点开始,下载所述下载中文件,得到当前下载完成的待投屏数据。
6.根据权利要求3所述的基于DLNA的投屏方法,其特征在于,所述HTTP Server与数据源模块在同一设备上部署。
7.根据权利要求1所述的基于DLNA的投屏方法,其特征在于,所述当需要投屏播放所述下载中文件时,所述DMC通过所述HTTP Server连续地发起多个播放请求包括:
根据播放侧的进度条的播放时间点,或者所述播放侧的时间跳转功能所获取的播放时间点,生成播放侧对于所述下载中文件的seek请求;
根据所述seek请求所携带的播放时间点,所述DMC连续地发起多个播放请求;
其中,所述多个播放请求用于获取从所述播放时间点开始的待投屏数据。
8.根据权利要求7所述的基于DLNA的投屏方法,其特征在于,每个所述播放请求依次携带对应的时间点参数;
每个所述播放请求所携带的时间点参数与上一个播放请求的时间点参数之差为预设时间间隔。
9.一种基于DLNA的投屏装置,其特征在于,包括服务创建模块、对外发布模块、DMS、DMC、数据源模块和DMR;
所述服务创建模块,用于当数字媒体控制器DMC发起添加资源请求时,创建对应的HTTPServer;
所述对外发布模块,用于通过所述HTTP Server将下载中文件映射为HTTP地址;还用于根据添加资源请求,将下载中文件对应的HTTP地址在数字媒体服务器DMS上对外发布;
所述DMS,用于对外发布所述HTTP地址;
所述DMC,用于当需要投屏播放所述下载中文件时,通过所述HTTP Server连续地发起多个播放请求;
所述数据源模块,用于根据所述DMS上的HTTP地址获取所述下载中文件的待投屏数据,通过所述HTTP Server使播放请求携带所述待投屏数据,将所述待投屏数据添加至数字媒体渲染器DMR;
所述DMR,用于播放所述待投屏数据。
10.一种基于DLNA的投屏装置,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于实现权利要求1-8任一所述的基于DLNA的投屏方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410159733.3A CN117793448A (zh) | 2024-02-04 | 2024-02-04 | 一种基于dlna的投屏方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410159733.3A CN117793448A (zh) | 2024-02-04 | 2024-02-04 | 一种基于dlna的投屏方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117793448A true CN117793448A (zh) | 2024-03-29 |
Family
ID=90396534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410159733.3A Pending CN117793448A (zh) | 2024-02-04 | 2024-02-04 | 一种基于dlna的投屏方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117793448A (zh) |
-
2024
- 2024-02-04 CN CN202410159733.3A patent/CN117793448A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI669957B (zh) | Media projection method, media projection device, control terminal, and cloud server | |
US9883251B2 (en) | Method and apparatus for managing connection between broadcast receiving device and another device connected by network | |
JP6564770B2 (ja) | メディアコンテンツを提示するためのシステム、方法、および媒体 | |
US9432454B2 (en) | Cloud-to-cloud peering | |
KR102201022B1 (ko) | 스트리밍 디지털 콘텐츠의 재생을 관리하기 위한 시스템 및 방법 | |
WO2019090902A1 (zh) | 屏幕共享的方法、装置、电子设备及存储介质 | |
CN105323628B (zh) | 基于dlna跨屏播放的方法及***、浏览器端装置和播放装置 | |
KR102177013B1 (ko) | 스트리밍 디지털 콘텐츠의 재생을 관리하기 위한 시스템 및 방법 | |
WO2015035742A1 (zh) | 一种数字电视的音视频共享方法、终端及*** | |
CN102577245B (zh) | 使用外部网络连接的ue控制本地网络ue上的外部网络媒体 | |
WO2013177734A1 (zh) | 局域网中媒体资源播放列表的处理方法、装置和*** | |
US20160337449A1 (en) | Method and apparatus for managing connection between broadcasting reception device and another device which are connected through network | |
WO2013178015A1 (zh) | 一种媒体获取方法、装置和*** | |
CN103702178B (zh) | 一种播放方法及电子设备 | |
WO2017193678A1 (zh) | 设备控制方法及装置以及设备控制*** | |
US20150268808A1 (en) | Method, Device and System for Multi-Speed Playing | |
US20080240670A1 (en) | Picture recording system and picture recording and reproducing method | |
CN113542904A (zh) | 一种视频投屏播放方法、装置、电子设备及存储介质 | |
CN103747326A (zh) | 多媒体文件连续播放方法和装置 | |
CN114143371A (zh) | 投屏方法、装置、存储介质及电子设备 | |
WO2015077983A1 (zh) | 在家庭网络中播放媒体的装置和方法 | |
CN112565877B (zh) | 投屏方法、***、电子设备及存储介质 | |
WO2012072105A1 (en) | Recording in a local network | |
CA2793355C (en) | Time-shifting of a live media stream | |
US10165082B2 (en) | Method and apparatus for managing connection between plurality of devices over network |
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 |