专利类型 | 发明授权 | 法律事件 | 公开; 实质审查; 授权; |
专利有效性 | 有效专利 | 当前状态 | 授权 |
申请号 | CN202210946191.5 | 申请日 | 2022-08-08 |
公开(公告)号 | CN115334344B | 公开(公告)日 | 2023-08-18 |
申请人 | 青岛海信宽带多媒体技术有限公司; | 申请人类型 | 企业 |
发明人 | 孟新红; 张维; | 第一发明人 | 孟新红 |
权利人 | 青岛海信宽带多媒体技术有限公司 | 权利人类型 | 企业 |
当前权利人 | 青岛海信宽带多媒体技术有限公司 | 当前权利人类型 | 企业 |
省份 | 当前专利权人所在省份:山东省 | 城市 | 当前专利权人所在城市:山东省青岛市 |
具体地址 | 当前专利权人所在详细地址:山东省青岛市经济技术开发区前湾港路218号 | 邮编 | 当前专利权人邮编:266555 |
主IPC国际分类 | H04N21/43 | 所有IPC国际分类 | H04N21/43 ; H04N21/438 ; H04N21/482 ; H04N21/8547 |
专利引用数量 | 5 | 专利被引用数量 | 0 |
专利权利要求数量 | 10 | 专利文献类型 | B |
专利代理机构 | 北京弘权知识产权代理有限公司 | 专利代理人 | 逯长明; 孙亚芹; |
摘要 | 本 申请 公开了一种应用于智能机顶盒的频道切换方法及装置,对第一 视频 帧 显示;得到第一视频帧的显示时长及音视频显示时间差;若音视频显示时间差的绝对值小于第一 阈值 ,第一音频帧与第二视频帧同步显示;若音视频显示时间差的绝对值大于第一阈值,第二视频帧的显示时间戳大于第一音频帧的显示时间戳,延长第一视频帧的显示时长,清空在音视频时间差内的音频帧,使第N音频帧与第二视频帧同步显示;若音视频显示时间差的绝对值大于第一阈值,第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,使第一音频帧与第N视频帧同步显示。本申请避免了音频和视频不对应时间长等问题,提升用户体验。 | ||
权利要求 | 1.一种应用于智能机顶盒的频道切换方法,其特征在于,包括: |
||
说明书全文 | 一种应用于智能机顶盒的频道切换方法及装置技术领域[0001] 本申请涉及多媒体技术领域,尤其涉及一种应用于智能机顶盒的频道切换方法及装置。 背景技术[0002] 在终端机顶盒等设备中播放音视频数据时,播放的画面和声音需要同时输出,以保证用户的观看体验。对于频道切换后起播阶段,由于视频解码需要依赖第一个I帧,而音频可以实时输出,且起播时间取决于网络来的音视频的速度,因此音视频同步输出可能会造成起播时间比较长,降低用户体验。 [0003] 为了提升用户体验,通常做法是先快速显示第一个视频I帧,然后再将音视频同步输出。但如果网络情况不好,视频显示时间戳和音频显示时间戳差距较大,在这种情况下强行进行音视频同步输出,势必会造成视频静帧,或是音频和视频不对应时间长等问题,使得用户体验较差。发明内容 [0004] 本申请提供了一种应用于智能机顶盒的频道切换方法及装置,以提升用户体验。 [0005] 一种应用于智能机顶盒的频道切换方法,包括: [0006] 响应于频道切换指令,获取第一视频帧,并对第一视频帧进行显示,第一视频帧为I帧; [0007] 根据第二视频帧的显示时间戳与第一视频帧的显示时间戳的差值得到第一视频帧的显示时长; [0008] 根据第二视频帧的显示时间戳与第一音频帧的显示时间戳的差值得到音视频显示时间差; [0009] 若音视频显示时间差的绝对值小于第一阈值时,第一音频帧与第二视频帧同步显示; [0010] 若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,延长第一视频帧的显示时长,并清空在音视频显示时间差内的音频帧,以使第N音频帧与第二视频帧同步显示,其中,延长后的第一视频帧的显示时长为未延长前的第一视频帧的显示时长与音视频显示时间差之和,第N音频帧为清空在音视频显示时间差内的音频帧后的第一个音频帧,第N音频帧的显示时间戳与第二视频帧的显示时间戳的差值的绝对值小于所述第一阈值; [0011] 若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,以使第一音频帧与第N视频帧同步显示,第N视频帧的显示时间戳与第一音频帧的显示时间戳的差值的绝对值小于第一阈值。 [0012] 一种应用于智能机顶盒的频道切换装置,包括: [0013] 获取模块,用于响应于频道切换指令,获取第一视频帧,并对第一视频帧进行显示; [0014] 第一计算模块,用于根据第二视频帧的显示时间戳与第一视频帧的显示时间戳的差值得到第一视频帧的显示时长; [0015] 第二计算模块,用于根据第二视频帧的显示时间戳与第一音频帧的显示时间戳的差值得到音视频显示时间差; [0016] 第一同步显示模块,用于若音视频显示时间差的绝对值小于第一阈值时,第一音频帧与第二视频帧的同步显示; [0017] 第二同步显示模块,用于若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,延长第一视频帧的显示时长,并清空在音视频显示时间差内的音频帧,以使第N音频帧与第二视频帧同步显示,其中,延长后的第一视频帧的显示时长为未延长前的第一视频帧的显示时长与音视频显示时间差之和,第N音频帧为清空在音视频显示时间差内的音频帧后的第一个音频帧,第N音频帧的显示时间戳与第二视频帧的显示时间戳的差值的绝对值小于第一阈值; [0018] 第三同步显示模块,用于若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,以使第一音频帧与第N视频帧同步显示,第N视频帧的显示时间戳与第一音频帧的显示时间戳之间的差值的绝对值小于所述第一阈值。 [0019] 有益效果:本申请提供了一种应用于智能机顶盒的频道切换方法,包括:响应于频道切换指令,获取第一视频帧,并对第一视频帧进行显示,第一视频帧为I帧;根据第二视频帧的显示时间戳与第一视频帧的显示时间戳的差值得到第一视频帧的显示时长;根据第二视频帧的显示时间戳与第一音频帧的显示时间戳的差值得到音视频显示时间差;若音视频显示时间差的绝对值小于第一阈值,第一音频帧与第二视频帧同步显示;若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,延长第一视频帧的显示时长,并清空在音视频显示时间差内的音频帧,以使第N音频帧与第二视频帧同步显示,其中,延长后的第一视频帧的显示时长为未延长前的第一视频帧的显示时长与音视频显示时间差之和,第N音频帧为清空在音视频显示时间差内的音频帧后的第一个音频帧,第N音频帧的显示时间戳与第二视频帧的显示时间戳的差值的绝对值小于所述第一阈值;若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,以使第一音频帧与第N视频帧同步显示,第N视频帧的显示时间戳与第一音频帧的显示时间戳的差值的绝对值小于第一阈值。若音视频显示时间差的绝对值小于第一阈值,说明第一音频帧的显示时间戳与第二视频帧的显示时间戳相近,第一音频帧与第二视频帧可以同步显示。若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,说明第一音频帧的显示时间戳与第二视频帧的显示时间戳差距较大,且第二视频帧相对于第一音频帧超前了,延长第一视频帧的显示时长,并清空在音视频显示时间差内的音频帧,可使得第N音频帧与第二视频帧同步显示。若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,说明第一音频帧的显示时间戳与第二视频帧的显示时间戳差距较大,且第一音频帧相对于第二视频帧超前了,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,可使得第一音频帧与第N视频帧同步显示。本申请,针对不同情况下的音视频帧选用不同方法使得显示时间戳相近的视频帧和音频帧同步显示,避免视频静帧,或者音频帧和视频帧不对应时间长等问题,提升用户体验。附图说明 [0020] 为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 [0021] 图1为根据一些实施例的一种智能机顶盒的使用场景图; [0022] 图2为根据一些实施例的一种智能机顶盒的结构示意图; [0023] 图3为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第一流程示意图; [0024] 图4为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第二流程示意图; [0025] 图5为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第三流程示意图; [0026] 图6为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第四流程示意图; [0027] 图7为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第五流程示意图; [0028] 图8为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第六流程示意图; [0029] 图9为根据一些实施例的一种应用于智能机顶盒的频道切换装置的结构示意图; [0030] 图10为根据一些实施例的第二同步显示模块的结构示意图; [0031] 图11为根据一些实施例的第三同步显示模块的结构示意图。 具体实施方式[0032] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。 [0033] 本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。 [0034] 图1为根据一些实施例的一种智能机顶盒的使用场景图。如图1所示,用户可通过机顶盒控制装置400操作智能机顶盒100、通过显示设备遥控装置500操作显示设备200。机顶盒控制装置400和显示设备遥控装置500可以是遥控器,遥控器和智能机顶盒100的通信包括红外协议通信或蓝牙协议通信,及其他短距离通信方式,通过无线或有线方式来控,遥控器和显示设备200的通信包括红外协议通信或蓝牙协议通信,及其他短距离通信方式,通过无线或有线方式来控制显示设备200。 [0035] 智能机顶盒100和显示设备200分别还与服务器300进行数据通信。可允许智能机顶盒100和显示设备200通过局域网(LAN)、无线局域网(WLAN)和其他网络进行通信连接。服务器300可以向显示设备200提供各种内容和互动。服务器300可以是一个集群,也可以是多个集群,可以包括一类或多类服务器。 [0036] 智能机顶盒100可以接入网络并进行页面信息浏览、音视频播放等交互功能,除了直播功能,还可以给用户提供点播、会看等服务、暂停、快进、快退等时移功能。 [0037] 在终端机顶盒等设备中播放音视频数据时,播放的画面和声音需要同时输出,以保证用户的观看体验。对于频道切换后起播阶段,由于视频解码需要依赖第一个I帧,而音频可以实时输出,且起播时间取决于网络来的音视频的速度,因此音视频同步输出可能会造成起播时间比较长,降低用户体验。为了提升用户体验,通常做法是先快速显示第一个视频I帧,然后再将音视频同步输出。但如果网络情况不好,视频显示时间戳和音频显示时间戳差距较大,在这种情况下强行进行音视频同步输出,势必会造成视频静帧,或是音频和视频不对应时间长等问题,使得用户体验较差。 [0038] 为了解决这个问题,本申请提出了一种智能机顶盒。图2为根据一些实施例的一种智能机顶盒的结构示意图。如图2所示,在一些实施例中,智能机顶盒包括网络端口101、缓存器102和处理器103。 [0039] 连接关系如下:网络端口101的第一端与服务器通信连接,网络端口101的第二端与缓存器102的第一端连接,缓存器102的第二端与处理器103连接。 [0041] 缓存器102用于存储直播频道列表,直播频道列表内的信息为直播频道列表信息。直播频道列表信息包括多个直播频道信息,每个直播频道信息包括解码后的音频文件和解码后的视频文件,解码后的音频文件包括音频帧,解码后的视频文件包括视频帧。 [0042] 处理器103被配置为:响应于频道切换指令,获取第一视频帧,并对第一视频帧进行显示;根据第二视频帧的显示时间戳与第一视频帧的显示时间戳的差值得到第一视频帧的显示时长;根据第二视频帧的显示时间戳与第一音频帧的显示时间戳的差值得到音视频显示时间差;若音视频显示时间差的绝对值小于第一阈值时,第一音频帧与第二视频帧同步显示;若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,延长第一视频帧的显示时长,并清空在音视频显示时间差内的音频帧,以使第N音频帧与第二视频帧同步显示,其中,延长后的第一视频帧的显示时长为未延长前的第一视频帧的显示时长与音视频显示时间差之和,第N音频帧为清空在音视频显示时间差内的音频帧后的第一个音频帧,第N音频帧的显示时间戳与第二视频帧的显示时间戳的差值的绝对值小于第一阈值;若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,以使第一音频帧与第N视频帧同步显示,第N视频帧的显示时间戳与所述第一音频帧的显示时间戳的差值的绝对值小于第一阈值。 [0043] 处理器103还被配置为若第N+1视频帧的显示时间戳与第二音频帧的显示时间戳的差值的绝对值小于第一阈值,第二音频帧与第N+1视频帧同步显示;若第N+1视频帧的显示时间戳与第二音频帧的显示时间戳的差值的绝对值大于第一阈值,且第N+1视频帧的显示时间戳小于第二音频帧的显示时间戳时,缩短第N+1视频帧及第N+1视频帧之后的视频帧的显示时长,以使第二音频帧与第N+n视频帧同步显示,第N+n视频帧的显示时间戳与第二音频帧的显示时间戳之间的差值的绝对值小于第一阈值。 [0045] 处理器103还被配置为计算在音视频显示时间差内的音频帧的数据量;在音视频显示时间差内的音频帧的数据量大于零时,清空在音视频显示时间差内的音频帧。 [0046] 处理器103还被配置为读取缓存器内在音视频显示时间差内的音频帧,并将在音视频显示时间差内的音频帧存储于缓存区;删除缓存区内在音视频显示时间差内的音频帧,以清空在所述音视频显示时间差内的音频帧。 [0047] 处理器103还被配置为获取第二视频帧之后的视频帧;修改第二视频帧及第二视频帧之后的视频帧的显示时间戳,以使得修改后的视频帧的显示时间戳小于未修改前的视频帧的显示时间戳,进而缩短第二视频帧之后的视频帧的显示时长。 [0048] 处理器103还被配置为根据第一视频帧的显示时长与音视频显示时间差之和及目标同步时间得到分步数;利用分步数修改第二视频之后的视频帧的显示时间戳。 [0049] 为了解决这个问题,在一些实施例中除了提出了一种智能机顶盒外,还提供了一种应用于智能机顶盒的频道切换方法。图3为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第一流程示意图。图4为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第二流程示意图。图5为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第三流程示意图。图6为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第四流程示意图。图7为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第五流程示意图。如图3‑7可知,在一些实施例中,一种应用于智能机顶盒的频道切换方法包括: [0050] S100:响应于频道切换指令,获取第一视频帧,并对第一视频帧进行显示。 [0051] 获取第一视频帧,并从第一视频帧中读取到第一视频帧的显示时间戳。视频帧的显示时间戳表示视频帧开始显示时间。 [0052] 第一视频帧为I帧。 [0053] 由于B帧需要参考B帧之前的I帧或者P帧及其B帧之后的一个P帧才可以生成一张完整的图片,因此第一视频帧不可能是B帧。由于P帧需要参考P帧之前I帧或者P帧才可以生成一张完整的图片,因此第一视频帧也不可能是P帧。由于I帧可以说是一张完整的图片,不需要参考I帧之前或者I帧之后的视频帧,因此,第一视频帧为I帧。 [0054] S200:根据第二视频帧的显示时间戳与第一视频帧的显示时间戳的差值得到第一视频帧的显示时长。 [0055] 其中,第一视频帧的显示时长为第二视频帧的显示时间戳与第一视频帧的显示时间戳的差值。 [0056] 获取第二视频帧,并从第二视频帧中读取到第二视频帧的显示时间戳。将第二视频帧的显示时间戳减去第一视频帧的显示时间戳得到第一视频帧的显示时长。 [0057] 第二视频帧为B帧或者P帧。 [0058] I帧和P帧的解码顺序和显示顺序相同,但B帧的解码顺序和显示顺序不同。如果视频流中存在B帧,那么就会调正显示顺序。 [0059] 举例: [0060] 采集视频帧顺序1 2 3 4 5,1编码成I帧,2,3,4编码成B帧,5编码成P帧。通常编码后储存顺序如下。 [0061] I P B B B [0062] 1 5 2 3 4。 [0063] 接收到的视频流,解码顺序: [0064] I P B B B [0065] 1 2 3 4 5(DTS) [0066] 1 5 2 3 4(PTS)。 [0067] 解码后根据PTS重新排序: [0068] I P B B B [0069] 1 2 3 4 5(PTS)。 [0070] 显示:第1个I帧直接可以显示,第2、3、4个B帧需要参考1及5帧进行显示,第5个P帧需要参考1帧进行显示,所以,第二视频帧不可能为I帧。 [0071] 如果第二视频帧是B帧或是P帧一样的操作;如果第二个视频帧为B帧或是P帧需要根据自带的PTS,把视频帧排序到对应的位置,然后再去显示。 [0072] S300:根据第二视频帧的显示时间戳与第一音频帧的显示时间戳的差值得到音视频显示时间差。 [0073] 由于第一视频帧是频道切换后的第一个帧,该帧不管在什么情况下都要先显示,所以不能将第一音频帧的显示时间戳与第一视频帧的显示时间戳进行比较,只能将第一音频帧的显示时间戳与第二视频帧的显示时间戳进行比较。 [0074] S400:判断音视频显示时间差的绝对值是否小于第一阈值。 [0075] 音视频显示时间差可以小于等于零,也可以是大于零。 [0076] 第一阈值的范围为10ms‑100ms。 [0077] S500:若音视频显示时间差的绝对值小于第一阈值,第一音频帧与第二视频帧同步显示。 [0078] 若音视频显示时间差的绝对值小于第一阈值,说明第一音频帧的显示时间戳与第二视频帧的显示时间戳差距较小,此时将第一音频帧与第二视频帧直接同步显示不容易被用户察觉到音视频不对应。 [0079] S600:若音视频显示时间差的绝对值大于第一阈值,判断第二视频帧的显示时间戳是否大于第一音频帧的显示时间戳。 [0080] 若音视频显示时间差的绝对值大于第一阈值,说明第一音频帧的显示时间戳与第二视频帧的显示时间戳差距较大,此时如果直接将第一音频帧和第二视频帧同步显示,容易被用户察觉音视频不对应。因此如果想要音频帧与视频帧同步显示,且不容易被用户察觉到音视频不对应,需要获取显示时间戳差距较小的音频帧和视频帧,以使显示时间戳差距较小的音频帧和视频帧同步显示。获取显示时间戳差距较小的音频帧和视频帧,需要先判断第二视频帧的显示时间戳是否大于第一音频帧的显示时间戳,再根据第二视频帧的显示时间戳与第一音频帧的显示时间戳的大小关系选择不同方法获取显示时间戳差距较小的音频帧和视频帧,以使显示时间戳差距较小的音频帧和视频帧同步显示。 [0081] S700:若第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,延长第一视频帧的显示时长,并清空在音视频时间差内的音频帧,以使第N音频帧与第二视频帧同步显示。 [0082] 若第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,说明第二视频帧相对于第一音频帧超前了,想要获取与第二视频帧的显示时间戳差距较小的音频帧,需要延长第一视频帧的显示时长,并清空在音视频时间差内的音频帧,以使第N音频帧与第二视频帧同步显示。 [0083] 其中,在音视频显示时间差内的音频帧包括第一音频帧,延长后的第一视频帧的显示时长为未延长前的第一视频帧的显示时长与音视频显示时间差之和,第N音频帧为在清空音视频时间差内的音频帧后的第一个音频帧,第N音频帧的显示时间戳与第二视频帧的显示时间戳的差值的绝对值小于第一阈值。 [0084] 延长第一视频帧的显示时长,具体步骤如下: [0085] 修改第二视频帧的显示时间戳,以使修改后的第二视频帧的显示时间戳为未修改前的第二视频帧的显示时间戳与音视频显示时间差之和。 [0086] 清空在音视频时间差内的音频帧,具体步骤如下: [0087] T100:计算在音视频显示时间差内的音频帧的数据量。 [0088] 在音视频显示时间差内的音频帧的数据量=预设时长*1ms的音频帧的数据量。 [0089] 其中,预设时长是根据音视频显示时间差计算得到的,预设时长=(音视频显示时间差/90000)*1000,1ms的音频帧的数据量=((采样率*采样位数*声道数)/8)/1000。 [0090] 例如,采样率为44.1KHz,采样位数为16,双声道,则1ms的音频帧的数据量=((44.1*16*2)/8)。 [0091] T200:在音视频显示时间差内的音频帧的数据量大于零时,清空在音视频显示时间差的音频帧。 [0092] 先判断在音视频显示时间差内的音频帧的数据量是否大于零。 [0093] 若在音视频显示时间差内的音频帧的数据量等于零时,第一音频帧的显示时间戳与第二视频帧的显示时间戳的差值的绝对值小于第一阈值,这与音视频显示时间差的绝对值大于第一阈值是相互冲突的,因此,此种情况并不存在,只有在音视频时间差内的音频帧的数据量大于零的情况存在。 [0094] 若需要清空的音频数据的缓存量大于零时,清空在音视频显示时间差内的音频帧。 [0095] 清空在音视频显示时间差内的音频帧,具体步骤如下: [0096] P100:读取缓存器内在音视频显示时间差内的音频帧,并将在音视频显示时间差内的音频帧存储于缓存区。 [0097] P200:删除缓存区内在音视频显示时间差内的音频帧,以清空在音视频显示时间差内的音频帧。 [0098] 在读取缓存器内在音视频显示时间差内的音频帧之前获取智能机顶盒的时间t1,在删除缓存区内在音视频显示时间差内的音频帧之后获取智能机顶盒的时间t2。其中,t2‑t1为清空音频帧的实际时间。 [0099] 若t2‑t1>清空音频帧的预设时长,则不再清空音频帧。其中,清空音频帧的预设时长为音视频显示时间差/90000。 [0100] S800:若第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,以使第一音频帧与第N视频帧同步显示。 [0101] 若第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,说明第一音频帧相对于第二视频帧超前了,想要获取与第一音频帧的显示时间戳差距较小的视频帧,需要缩短第二视频帧及第二视频帧之后的视频帧的显示时长,以使第一音频帧与第N视频帧同步显示。 [0102] 其中,第N视频帧的显示时间戳与第一音频帧的显示时间戳的差值的绝对值小于第一阈值。 [0103] 缩短第二视频帧及第二视频帧之后的视频帧的显示时长,具体步骤如下: [0104] Q100:获取第二视频帧之后的视频帧。 [0105] 设定一个目标同步时间T。 [0106] 目标同步时间指的是音视频不同步时想要音视频同步的目标时间。T可设置为200ms。 [0107] 获取第二视频帧之后的视频帧,对第二视频帧及第二视频帧之后的视频帧按照显示时间戳由小到大的顺序依次排序。 [0108] 例如,排序后的视频帧为:第二视频帧‑第四视频帧‑第五视频帧‑第三视频帧等。其中,显示时间戳:第三视频帧>第五视频帧>第四视频帧>第二视频帧。 [0109] Q200:修改第二视频帧及第二视频帧之后的视频帧的显示时间戳,以使得修改后的视频帧的显示时间戳小于未修改前的视频帧的显示时间戳,进而缩短第二视频帧及第二视频帧之后的视频帧的显示时长。 [0110] 修改第二视频帧及第二视频帧之后的视频帧的显示时间戳,具体步骤如下: [0111] Q201:根据第一视频帧的显示时长与音视频显示时间差之和以及目标同步时间得到分步数。 [0112] 分步数=(第一视频帧的显示时长+音视频显示时间差)/目标同步时间。 [0113] 例如,第一视频帧的显示时长与音视频显示时间差之和为800ms,目标同步时间为200ms,分步数为4。 [0114] Q202:利用分步数修改第二视频之后的视频帧的显示时间戳。 [0115] 将第二视频帧之后的视频帧的显示时间戳依次除于分步数可得到修改后的第二视频之后的视频帧的显示时间戳。 [0116] 例如,未修改之前的第二视频帧之后的视频帧的显示时间戳为PTS,修改后的第二视频之后的视频帧的显示时间戳为PTS/4。 [0117] 由于第二视频帧之后的视频帧的显示时间戳均已减小,那么第二视频帧及第二视频帧之后的视频帧的显示时长也就对应缩短。 [0118] S900:音频帧与视频帧同步输出。 [0119] 以上为第N视频帧与第一音频帧同步后,第N+1视频帧与第二音频帧也同步的情况。但是第N视频帧与第一音频帧同步后,第N+1视频帧与第二音频帧也不一定能同步。图8为根据一些实施例的一种应用于智能机顶盒的频道切换方法的第六流程示意图。如图8所示,当第N视频帧与第一音频帧同步后,第N+1视频帧与第二音频帧不同步时,具体过程如下: [0120] S1000:判断第N+1视频帧的显示时间戳与第二音频帧的显示时间戳的差值的绝对值是否小于第一阈值。 [0121] S1100:若第N+1视频帧的显示时间戳与第二音频帧的显示时间戳的差值的绝对值小于第一阈值,第二音频帧与第N+1视频帧同步显示。 [0122] S1200:若第N+1视频帧的显示时间戳与第二音频帧的显示时间戳的差值的绝对值大于第一阈值,缩短第N+1视频帧及第N+1视频帧之后的视频帧的显示时长,以使第二音频帧与第N+n视频帧同步显示。 [0123] 其中,第N+n视频帧的显示时间戳与第二音频帧的显示时间戳的差值的绝对值小于第一阈值。 [0124] 缩短第N+1视频帧及第N+1视频帧之后的视频帧的显示时长,与缩短第二视频帧及第二视频帧之后的视频帧的显示时长的方法相同,均是通过减小视频帧的显示时间戳来改变视频帧的显示时长,因此此处不再赘述。 [0125] 本申请提供了一种应用于智能机顶盒的频道切换方法,包括:响应于频道切换指令,获取第一视频帧,并对第一视频帧进行显示,第一视频帧为I帧;根据第二视频帧的显示时间戳与第一视频帧的显示时间戳的差值得到第一视频帧的显示时长;根据第二视频帧的显示时间戳与第一音频帧的显示时间戳的差值得到音视频显示时间差;若音视频显示时间差的绝对值小于第一阈值,第一音频帧与第二视频帧同步显示;若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,延长第一视频帧的显示时长,并清空在音视频显示时间差内的音频帧,以使第N音频帧与第二视频帧同步显示,其中,延长后的第一视频帧的显示时长为未延长前的第一视频帧的显示时长与音视频显示时间差之和,第N音频帧为清空在音视频显示时间差内的音频帧后的第一个音频帧,第N音频帧的显示时间戳与第二视频帧的显示时间戳的差值的绝对值小于所述第一阈值;若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,以使第一音频帧与第N视频帧同步显示,第N视频帧的显示时间戳与第一音频帧的显示时间戳的差值的绝对值小于第一阈值。若音视频显示时间差的绝对值小于第一阈值,说明第一音频帧的显示时间戳与第二视频帧的显示时间戳相近,第一音频帧与第二视频帧可以同步显示。若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,说明第一音频帧的显示时间戳与第二视频帧的显示时间戳差距较大,且第二视频帧相对于第一音频帧超前了,延长第一视频帧的显示时长,并清空在音视频显示时间差内的音频帧,可使得第N音频帧与第二视频帧同步显示。若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,说明第一音频帧的显示时间戳与第二视频帧的显示时间戳差距较大,且第一音频帧相对于第二视频帧超前了,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,可使得第一音频帧与第N视频帧同步显示。本申请,针对不同情况下的音视频帧选用不同方法使得显示时间戳相近的视频帧和音频帧同步显示,避免视频静帧,或者音频帧和视频帧不对应时间长等问题,提升用户体验。 [0126] 在一些实施例中,除了提供了一种智能机顶盒和一种应用于智能机顶盒的频道切换方法外,还提供了一种应用于智能机顶盒的频道切换装置。图9为根据一些实施例的一种应用于智能机顶盒的频道切换装置的结构示意图。图10为根据一些实施例的第一清空模块的结构示意图。图11为根据一些实施例的第三同步显示模块的结构示意图。如图9‑11所示,在一些实施例中,频道切换装置包括获取模块、第一计算模块、第二计算模块、第一同步显示模块、第二同步显示模块和第三同步显示模块。 [0127] 获取模块,用于响应于频道切换指令,获取第一视频帧,并对第一视频帧进行显示。 [0128] 第一计算模块,用于根据第二视频帧的显示时间戳与第一视频帧的显示时间戳的差值得到第一视频帧的显示时长。 [0129] 第二计算模块,用于根据第二视频帧的显示时间戳与第一音频帧的显示时间戳的差值得到音视频显示时间差。 [0130] 第一同步显示模块,用于若音视频显示时间差的绝对值小于第一阈值时,第一音频帧与第二视频帧的同步显示。 [0131] 第二同步显示模块,用于若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳大于第一音频帧的显示时间戳时,延长第一视频帧的显示时长,并清空在音视频显示时间差内的音频帧,以使第N音频帧与第二视频帧同步显示,其中,延长后的第一视频帧的显示时长为未延长前的第一视频帧的显示时长与所述音视频显示时间差之和,第N音频帧为清空在音视频显示时间差内的音频帧后的第一个音频帧,第N音频帧的显示时间戳与第二视频帧的显示时间戳的差值的绝对值小于第一阈值。 [0132] 第二同步显示模块包括第一修改子模块、计算子模块和清空子模块。第一修改子模块用于修改第二视频帧的显示时间戳,以使修改后的第二视频帧的显示时间戳为未修改前的第二视频帧的显示时间戳与音视频显示时间差之和。计算子模块用于计算在音视频显示时间差内的音频帧的数据量。清空子模块用于在音视频显示时间差内的音频帧的数据量大于零时,清空在音视频显示时间差内的音频帧。 [0133] 第三同步显示模块,用于若音视频显示时间差的绝对值大于第一阈值,且第二视频帧的显示时间戳小于第一音频帧的显示时间戳时,缩短第二视频帧及第二视频帧之后的视频帧的显示时长,以使第一音频帧与第N视频帧同步显示,第N视频帧的显示时间戳与第一音频帧的显示时间戳之间的差值的绝对值小于第一阈值。 [0134] 第三同步显示模块包括获取子模块和第二修改子模块。获取子模块用于获取第二视频帧之后的视频帧。第二修改子模块用于修改第二视频帧及第二视频帧之后的视频帧的显示时间戳,以使得修改后的视频帧的显示时间戳小于未修改前的视频帧的显示时间戳,进而缩短第二视频帧之后的视频帧的显示时长。 [0135] 最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。 |