专利类型 | 发明公开 | 法律事件 | 公开; 实质审查; |
专利有效性 | 实质审查 | 当前状态 | 实质审查 |
申请号 | CN202310621861.0 | 申请日 | 2023-05-29 |
公开(公告)号 | CN116866654A | 公开(公告)日 | 2023-10-10 |
申请人 | 深圳感臻智能股份有限公司; | 申请人类型 | 企业 |
发明人 | 张创涛; 尹继圣; 刘大照; 李航; | 第一发明人 | 张创涛 |
权利人 | 深圳感臻智能股份有限公司 | 权利人类型 | 企业 |
当前权利人 | 深圳感臻智能股份有限公司 | 当前权利人类型 | 企业 |
省份 | 当前专利权人所在省份:广东省 | 城市 | 当前专利权人所在城市:广东省深圳市 |
具体地址 | 当前专利权人所在详细地址:广东省深圳市南山区粤海街道科技园社区高新中二道5号生产力大楼D401 | 邮编 | 当前专利权人邮编:518000 |
主IPC国际分类 | H04N21/438 | 所有IPC国际分类 | H04N21/438 ; G06F9/48 ; H04N21/433 |
专利引用数量 | 0 | 专利被引用数量 | 1 |
专利权利要求数量 | 10 | 专利文献类型 | A |
专利代理机构 | 深圳智趣知识产权代理事务所 | 专利代理人 | 吴强; |
摘要 | 本 发明 提出了一种频道切换时的频道线程缓冲方法及系统,方法包括:构建链表,在链表中划分冷缓冲区和热缓冲区;初始化链表;当用户由旧频道切换到新频道时,查询新频道是否存在于当前链表中;若存在于热缓冲区,则移动旧频道的频道线程,同时将新频道的频道线程移动到播放 节点 ;若存在于冷缓冲区,则移动旧频道的频道线程,同时根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点;在更新完链表后,开始对播放节点中新频道的频道线程进行解码以实现播放。本发明通过合理配置频道切换时的线程数据,优化频道切换的速度,降低数据缓冲时间,使用户可以享受到更流畅、更稳定的播放体验。 | ||
权利要求 | 1.一种频道切换时的频道线程缓冲方法,其特征在于,包括: |
||
说明书全文 | 一种频道切换时的频道线程缓冲方法及系统技术领域[0001] 本发明涉及智能家居领域,特别涉及一种频道切换时的频道线程缓冲方法及系统。 背景技术[0003] 在频道切换时,一个常见的问题是数据资源缓存不合理。这个问题可能会导致频道切换变得缓慢或者有卡顿现象。切换频道时,需要将当前频道的相关数据从本地存储中加载到内存中,并进行解码,以便将其转换为数字信号,供芯片或模块处理。如果数据资源缓存不合理,就可能导致切换频道的时间延长,甚至无法完成切换。这是因为在切换频道时,需要将当前频道的相关数据从本地存储中加载到内存中,并进行解码,然后将其转换为数字信号,供芯片或模块处理。如果数据资源缓存不合理,就需要更长的时间来加载数据,从而导致切换频道的时间延长甚至无法完成切换。 [0004] 为了解决这个问题,现有技术普遍采用数据资源预加载和流媒体缓存。数据资源预加载是指在用户进行频道切换之前,预加载未来可能需要用到的媒体资源,这可以通过提前请求资源并缓存它们来实现。这样,在用户需要切换频道时,大部分媒体资源已经被缓存,可以更快地呈现给用户。 [0005] 流媒体缓存技术是指在流媒体传输期间缓存数据,这样可以在用户切换频道时更快地呈现媒体内容。流媒体缓存技术通常基于用户观看历史、预测用户可能会观看的内容以及实时网络状况等因素来确定缓存策略,以最大化流媒体体验。 [0006] 然而,即使使用了这些技术,在实际的网络环境中也可能会发生数据资源缓存不合理的情况。在网络好的情况下,这些技术能够很好的运行。但是在一些网络较差、带宽较少的环境下,从下载数据到成功显示在用户面前,往往需要几秒钟甚至更长的时间(取决于视频的分辨率),极大影响用户体验。 发明内容[0007] 有鉴于此,本发明提出了一种频道切换时的频道线程缓冲方法及系统,具体方案如下: [0008] 一种频道切换时的频道线程缓冲方法,包括: [0009] 构建由依次排列的1个播放节点和n个缓冲节点构成的链表,n≥2;在链表中划分冷缓冲区和至少涵盖播放节点和一个缓冲节点的热缓冲区; [0010] 初始化链表,将初始频道的频道线程添加到所述播放节点,将与初始频道相近的至多n个频道的频道线程分别添加到相应的缓冲节点; [0011] 当用户由旧频道切换到新频道时,执行如下操作: [0012] 查询新频道是否存在于当前链表中; [0013] 若存在于所述热缓冲区,则移动旧频道的频道线程,同时将新频道的频道线程移动到所述播放节点,并更新链表; [0014] 若存在于所述冷缓冲区,则移动旧频道的频道线程,同时根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点,并更新链表; [0015] 在更新完链表后,停止解码旧频道的频道线程,开始对所述播放节点中新频道的频道线程进行解码以实现播放。 [0016] 在一个具体实施例中,若新频道不存在于当前链表中,则: [0017] 获取并创建新频道的频道线程,查找当前链表中是否存在未缓存频道线程、且属于所述缓冲节点的空缺节点; [0018] 若存在空缺节点,则将新频道的频道线程添加到某一空缺节点中; [0019] 若不存在空缺节点,则先淘汰所述冷缓冲区中某一缓冲节点的频道线程以得到一个空缺节点,再将新频道的频道线程添加到该空缺结点中; [0020] 在添加完新频道的频道线程后,根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点,并更新链表。 [0021] 在一个具体实施例中,所述链表为双向链表,并在链表的头尾分别增加了不缓存线程数据的虚拟头结点和虚拟尾结点,以实现快速查讯; [0022] 在所述虚拟头结点和所述虚拟尾结点之间的节点均可实现双向查讯。 [0023] 在一个具体实施例中,所述热缓冲区包括虚拟头节点、播放节点和两个缓冲节点,所述冷缓冲区包括四个缓冲节点。 [0024] 在一个具体实施例中,在可缓存的频道线程数据量上,处于所述热缓冲区中的节点比处于所述冷缓冲区的节点更大。 [0025] 在一个具体实施例中,若某一频道的观看时间超过预设观看阈值,则证明用户持续观看该频道,在对该频道进行频道切换时,优先将该频道的频道线程移动到所述热缓冲区的缓冲节点中。 [0026] 在一个具体实施例中,若新频道存在于所述热缓冲区或所述冷缓冲区,则将旧频道的频道线程由所述播放节点移动到所述热缓冲区中最靠近所述播放节点的缓冲节点中。 [0027] 在一个具体实施例中,“根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点”具体包括: [0028] 若新频道的缓冲时间超过预设缓冲阈值,则证明用户还在等待观看新频道,将新频道的频道线程移动到所述播放节点; [0029] 若新频道的缓冲时间未超过所述缓冲阈值,则证明用户再次进行了频道切换,新频道已经变成旧频道。 [0030] 一种频道切换时的频道线程缓冲系统,包括如下: [0031] 链表构建单元,用于构建由依次排列的1个播放节点和n个缓冲节点构成的链表,n≥2;并在链表中划分冷缓冲区和至少涵盖播放节点和一个缓冲节点的热缓冲区; [0032] 链表初始化单元,用于初始化链表,将初始频道的频道线程添加到所述播放节点,将与初始频道相近的至多n个频道的频道线程分别添加到相应的缓冲节点; [0033] 频道切换单元,用于当用户由旧频道切换到新频道时,执行如下: [0034] 查询新频道是否存在于当前链表中; [0035] 若存在于所述热缓冲区,则移动旧频道的频道线程,同时将新频道的频道线程移动到所述播放节点,并更新链表; [0036] 若存在于所述冷缓冲区,则移动旧频道的频道线程,同时根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点,并更新链表; [0037] 在更新完链表后,停止解码旧频道的频道线程,开始对所述播放节点中新频道的频道线程进行解码以实现播放。 [0038] 在一个具体实施例中,所述频道切换单元还包括: [0039] 若新频道不存在于当前链表中,则: [0040] 获取并创建新频道的频道线程,查找当前链表中是否存在未缓存频道线程、且属于所述缓冲节点的空缺节点; [0041] 若存在空缺节点,将新频道的频道线程添加到某一空缺节点中; [0042] 若不存在空缺节点,先淘汰所述冷缓冲区中某一缓冲节点的频道线程以得到一个空缺节点,再将新频道的频道线程添加到该空缺结点中; [0043] 在添加完新频道的频道线程后,根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点,并更新链表。 [0044] 有益效果:本发明提出了一种频道切换时的频道线程缓冲方法及系统,通过合理配置频道切换时的线程数据,优化频道切换的速度,降低数据缓冲时间,使用户可以享受到更流畅、更稳定的播放体验。通过设置冷缓冲区和热缓冲区,合理配置节点中的频道数据。通过监控频道的时长,来降低高频率频道切换对资源缓冲带来的不利影响,节约缓存资源。 通过分析用户习惯,在节点中配置最符合用户习惯的频道信息,提升用户体验。 附图说明 [0045] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。 [0046] 图1为本发明实施例的链表结构示意图; [0047] 图2为本发明实施例的频道线程缓冲系统模块示意图。 [0048] 附图标记:1‑链表构建单元;2‑链表初始化单元;3‑频道切换单元。 具体实施方式[0049] 在下文中,将更全面地描述本发明公开的各种实施例。本发明公开可具有各种实施例,并且可在其中做出调整和改变。然而,应理解:不存在将本发明公开的各种实施例限于在此公开的特定实施例的意图,而是应将本发明公开理解为涵盖落入本发明公开的各种实施例的精神和范围内的所有调整、等同物和/或可选方案。 [0050] 以视频数据为例,播放视频数据时至少需要以下步骤: [0052] 渲染:在解码完成后,视频数据需要进行渲染处理。这个过程包括对视频数据进行一系列的处理,例如色彩空间转换、图像缩放、降噪等等。这些处理会提高视频的质量,并为后续的绘制做好准备。 [0055] 需要说明的是,本发明的链表是一个各个节点依次相连的链状结构,排除虚拟头结点和虚拟尾结点,播放节点位于链表的头部。 [0056] 需要说明的是,本发明的旧频道和新频道是相对而言的,频道切换前的播放的是旧频道,切换后播放的为新频道,新频道随时可以转换成旧频道。 [0057] 在本发明公开的各种实施例中使用的术语仅用于描述特定实施例的目的并且并非意在限制本发明公开的各种实施例。如在此所使用,单数形式意在也包括复数形式,除非上下文清楚地另有指示。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明公开的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明公开的各种实施例中被清楚地限定。 [0058] 实施例1 [0059] 本发明实施例1公开了一种频道切换时的频道线程缓冲方法,通过合理配置频道切换时的线程数据,优化频道切换的速度,增强用户体验。具体方案如下: [0060] 一种频道切换时的频道线程缓冲方法,包括如下: [0061] 101、构建由依次排列的1个播放节点和n个缓冲节点构成的链表,n≥2;在链表中划分冷缓冲区和至少涵盖播放节点和一个缓冲节点的热缓冲区; [0062] 102、初始化链表,将初始频道的频道线程添加到播放节点,将与初始频道相近的至多n个频道的频道线程分别添加到相应的缓冲节点; [0063] 103、当用户由旧频道切换到新频道时,执行如下操作: [0064] 查询新频道是否存在于当前链表中; [0065] 若存在于热缓冲区,则移动旧频道的频道线程,同时将新频道的频道线程移动到播放节点,并更新链表; [0066] 若存在于冷缓冲区,则移动旧频道的频道线程,同时根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点,并更新链表; [0067] 在更新完链表后,停止解码旧频道的频道线程,开始对播放节点中新频道的频道线程进行解码以实现播放。 [0068] 在本实施例中,步骤101和步骤102都是为了频道切换做准备。 [0069] 步骤101是负责构建一个链表,链表上的节点负责存储不同频道的频道线程数据。频道线程数据就是该频道要播放的相关媒体资源,部分频道的频道线程可以提前进行下载。链表中包括两类节点,一种是位于链表头部的播放节点,要播放的频道线程就存储到该节点中,其他频道的频道线程要播放也要先移动到播放节点。另一种是缓冲节点,缓冲节点负责存储预测频道的频道线程。缓冲节点的数量至少要大于两个,否则就失去了预测的意义,可根据实际可应用的存储空间具体进行设定。缓冲节点数量越多,则代表预测的频道越多,频道测中的概率也就越大,用户体验也就越高。 [0070] 在本实施例中,根据可缓存资源的大小将链表分为热缓冲区和冷缓冲区,热缓冲区中至少包括一个缓冲节点。在可缓存的频道线程数据量上,处于热缓冲区中的节点比处于冷缓冲区的节点更大。热缓冲区的可缓冲资源更多一些,一般可缓冲2M的数据。而冷缓冲区可缓冲的数据量较少,一般可缓冲1M的数据。如果某一频道在热缓冲区停留时间超过预设时长,就将其移动到冷缓冲区。热缓冲区和冷缓冲区很好的解决了资源分配的问题,其本质上就是给予概率大的频道以更多的资源,给予概率小的频道以更少的资源。播放节点作为存储当前播放频道的节点,必然是位于热缓冲区。 [0071] 此外,处于冷缓冲区的缓冲节点,一旦其存储的频道的数据长时间未被访问,则会淘汰其存储的频道数据,为新的频道数据留出空间。因此,处于冷缓冲区的频道被淘汰的概率较高,而处于热缓冲区的频道未被选中时会先下放到冷缓冲区,一般不会直接淘汰。 [0072] 本实施例的频道线程缓冲方法,将链表设置为双向链表=结构。双向链表能够实现双向查找,更快的查找整个链表的数据。即使链表中设置的节点较多、存储的资源较多,双向链表也能快速的查找完整个链表的资源。优选地,在链表的头尾分别增加了不缓存线程数据的虚拟头结点和虚拟尾结点,以实现快速查讯;在虚拟头结点和虚拟尾结点之间的节点均可实现双向查讯。附图1中给出了链表的结构示意图。 [0073] 优选地,热缓冲区和冷缓冲区都是连续性的,并非间隔设置的。示例性的,热缓冲区包括虚拟头节点、播放节点和两个缓冲节点,冷缓冲区包括四个缓冲节点。热缓冲区内的两个缓冲节点是依次位于播放节点之后的,冷缓冲区的节点也是依次位于热缓冲区的节点之后的。 [0074] 初始化链表主要是针对刚开机时的情况。将初始频道的频道线程添加到播放节点,初始频道即为刚开机时要播放的频道。将与初始频道相近的至多n个频道的频道线程分别添加到相应的缓冲节点。与初始频道相近的频道,默认就是距离初始频道最近的几个频道,将这些频道作为最开始的预测对象。总共有n个缓冲节点,也就是有n个预测对象,在初始化链表时,可以选出n个频道,也可以选出少于n个频道。 [0075] 当用户进行频道切换时,会产生两个概念,旧频道和新频道。将频道切换前的频道定义为旧频道,将频道切换后的频道定义为新频道。切换频道后,会优先在当前链表中查找是否存在新频道的相关数据在节点内。新频道发生改变,对应链表中的数据也会发生变化,因此要以最新的链表为准。具体包括三种情况,第一种是不位于链表中,第二种是位于链表的热缓冲区,第三种是位于链表的冷缓冲区。第二种情况和第三种情况都是新频道位于链表的情况。 [0076] 若新频道存在于热缓冲区,则将旧频道的频道线程从播放节点移除,同时将新频道的频道线程移动到播放节点,并更新链表。新频道已经在热缓冲区中存在频道线程,则可以最快的速度实现该频道的播放。热缓冲区本质上就是用于存放概率更大的频道,新频道确定在热缓冲区,证明预测正确,此时可以立即进行切换,将新频道的频道线程移动到播放节点。旧频道的频道线程可以暂时移动到热缓冲区的缓冲节点中,也可以移动到冷缓冲区,甚至可以淘汰旧频道的数据。具体如何操作要看旧频道的表现情况。 [0077] 示例性的,若某一频道的观看时间超过预设观看阈值,则证明用户持续观看该频道,在对该频道进行频道切换时,优先将该频道的频道线程移动到热缓冲区的缓冲节点中。将缓冲的策略与用户的观影习惯进行绑定,将用户经常操作的频道放置到优先度更高的节点。 [0078] 示例性的,若新频道存在于热缓冲区或冷缓冲区,则将旧频道的频道线程由播放节点移动到热缓冲区中最靠近播放节点的缓冲节点中。该中方案默认旧频道的优先级较高,认定用户会有更大可能重复调取旧频道进行观看。 [0079] 无论那种情况,都会引起链表中节点数据的变化,因此要实时更新链表,确保每次切换频道时都以最新的链表作为参考。 [0080] 若新频道存在于冷缓冲区,则移动旧频道的频道线程,同时根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点,并更新链表。本实施例设定了缓冲阈值,缓冲阈值可简单理解为用户在某一频道上的停留时间的阈值。具体包括:若新频道的缓冲时间超过预设缓冲阈值,则证明用户还在等待观看新频道,将新频道的频道线程移动到播放节点;若新频道的缓冲时间未超过缓冲阈值,则证明用户再次进行了频道切换,新频道已经变成旧频道,此时可以将该频道放置到冷缓冲区的节点中。在实际应用中,用户可以连续高频的进行频道切换,设定缓冲阈值能够减少缓存资源的浪费,降低非必要频道资源的缓存量,同时也能提高设备的响应时间,降低用户等待缓冲时间,提高用户体验。 [0081] 若新频道不存在于当前链表中,则需要获取并创建新频道的频道线程,查找当前链表中是否存在未缓存频道线程、且属于缓冲节点的空缺节点。在之前限定了存在n个缓冲节点,每个缓冲节点中不一定都有线程数据,并且某些频道长时间不用的话会从冷缓冲区淘汰。 [0082] 在存在空缺节点的情况下,将新频道的频道线程添加到某一空缺节点中,在新频道的缓冲时间超过预设缓冲阈值的情况下再将其移动到播放节点,并更新链表,防止批量切换频道浪费缓存资源。 [0083] 在不存在空缺节点的情况下,先淘汰冷缓冲区中某一缓冲节点的频道线程以得到一个空缺节点,再将新频道的频道线程添加到该空缺结点中。将线程添加完后,再根据新频道的缓冲时间判断是否将其移动到播放节点进行播放,并更新链表。 [0084] 本实施例提供了一种频道切换时的频道线程缓冲方法,通过合理配置频道切换时的线程数据,优化频道切换的速度,使用户可以享受到更流畅、更稳定的播放体验。通过设置冷缓冲区和热缓冲区,合理配置节点中的频道数据。通过监控频道的时长,来降低高频率频道切换对资源缓冲带来的不利影响,节约缓存资源。通过分析用户习惯,在节点中配置最符合用户习惯的频道信息,提升用户体验。 [0085] 实施例2 [0087] 一种频道切换时的频道线程缓冲系统,包括如下: [0088] 链表构建单元1,用于构建由依次排列的1个播放节点和n个缓冲节点构成的链表,n≥2;并在链表中划分冷缓冲区和至少涵盖播放节点和一个缓冲节点的热缓冲区; [0089] 链表初始化单元2,用于初始化链表,将初始频道的频道线程添加到播放节点,将与初始频道相近的至多n个频道的频道线程分别添加到相应的缓冲节点; [0090] 频道切换单元3,用于当用户由旧频道切换到新频道时,执行如下: [0091] 查询新频道是否存在于当前链表中; [0092] 若存在于热缓冲区,则移动旧频道的频道线程,同时将新频道的频道线程移动到播放节点,并更新链表; [0093] 若存在于冷缓冲区,则移动旧频道的频道线程,同时根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点,并更新链表; [0094] 在更新完链表后,停止解码旧频道的频道线程,开始对播放节点中新频道的频道线程进行解码以实现播放。 [0095] 在一个具体实施例中,频道切换单元3还包括: [0096] 若新频道不存在于当前链表中,则: [0097] 获取并创建新频道的频道线程,查找当前链表中是否存在未缓存频道线程、且属于缓冲节点的空缺节点; [0098] 若存在空缺节点,将新频道的频道线程添加到某一空缺节点中; [0099] 若不存在空缺节点,先淘汰冷缓冲区中某一缓冲节点的频道线程以得到一个空缺节点,再将新频道的频道线程添加到该空缺结点中; [0100] 在添加完新频道的频道线程后,根据新频道的缓冲时间判断是否将新频道的线程移动到播放节点,并更新链表。 [0101] 本实施例提出了一种频道切换时的频道线程缓冲系统,将实施例1的频道线程缓冲方法系统化,使其更具实用性。 [0102] 本发明提出了一种频道切换时的频道线程缓冲方法及系统,通过合理配置频道切换时的线程数据,优化频道切换的速度,降低数据缓冲时间,使用户可以享受到更流畅、更稳定的播放体验。通过设置冷缓冲区和热缓冲区,合理配置节点中的频道数据。通过监控频道的时长,来降低高频率频道切换对资源缓冲带来的不利影响,节约缓存资源。通过分析用户习惯,在节点中配置最符合用户习惯的频道信息,提升用户体验。 [0103] 本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。 |