一种视频间无缝切换的方法

文档序号:9892055阅读:2045来源:国知局
一种视频间无缝切换的方法
【技术领域】
[0001] 本发明设及视频处理技术领域,特别是设及一种视频间无缝切换的方法。
【背景技术】
[0002] 随着计算机多媒体技术的快速发展,家庭宽带网络、无线宽带技术、W及终端设备 性能不断的发展,基于多媒体的应用越来越广泛,提升视频的播放体验是一个非常重要的 指标。目前的视频应用在播放的时候,前贴片广告与正片联播、电视剧剧集联播等功能十分 普及,提升广告前贴片之间、广告前贴片与正片之间、正片与正片之间的切换体验也是非常 重要的指标之一。
[0003] 目前现有的播放器在处理运种视频间切换的时候,一般是等前一个视频播放完 后,然后重新初始化播放器,继续播放下一个,运种处理方式会在视频切换的时候有黑屏的 现象,音频也会卡顿,运对于播放体验有很大的影响。

【发明内容】

[0004] 本发明所要解决的技术问题是提供一种视频间无缝切换的方法,避免在不同的视 频切换的时候会有黑屏、卡顿的问题。
[0005] 本发明解决其技术问题所采用的技术方案是:提供一种视频间无缝切换的方法, 包括W下步骤:
[0006] (1)按照播放顺序依次读取视频文件,并解析数据,从中分离出音频流和视频流, 得到编码格式信息,同时分离出各个流的数据帖,调整数据帖的时间戳,使后一个文件的数 据帖的时间戳与前一个文件的数据帖的时间戳按照递增的方式连续;
[0007] (2)根据编码格式信息初始化解码器,然后进行解码,得到解码后的数据帖;
[000引(3)对比获取到的解码后的数据帖的参数和预先设定好的参数,进行格式调整,使 输出的数据格式符合预先设定好的参数要求,并根据时间戳做音视频同步,在适当的时机 输出到输出设备中。
[0009] 所述步骤(1)具体包括W下步骤:
[0010] (11)根据当前的播放序列号打开需要播放的媒体文件;
[0011] (12)解析文件数据,解析出各个流的编码信息,存储到对应流的输出队列;
[0012] (13)读取数据帖,修正数据帖的时间戳,将各个流的数据帖存储到对应流的输出 队列中;
[0013] (14)文件读取完,判断当前读取的是否是播放列表的最后一个文件,如果是,结 束;如果不是,打开下一个文件,跳转到步骤(12)。
[0014] 所述步骤(13)中修正数据帖的时间戳时,如果当前打开的是第一个视频文件,贝U 不需要对数据帖的时间戳进行修正,记录当前数据帖的时间戳信息W后,直接将数据帖放 到输出队列中即可;如果当前打开的不是第一个文件,则需要对数据帖的时间戳进行修正, 修正时在数据帖的时间戳上增加一个偏移量即可。
[0015] 所述在数据帖的时间戳上增加一个偏移量是指上一个文件最后一个数据帖修正 后的时间戳为La S tF i 1 e Pa C k e t T S,上一个文件的最后一个数据帖的时长为 LastFilePacketDuration,当前文件的第一个数据帖的时间戳为化cketTs,则时间戳的修 正值〇ffset = LastFileF*acketTs+LastFilePacketDuration-F*acketTs,当前文件的数据帖 修正后的时间戳为PTS =化cketTs+offset;计算出时间戳的修正值offset后,时间戳的修 正值offset在读取当前文件期间一直有效,从当前文件读取到数据帖后,都要用时间戳的 修正值off set进行修正。
[0016] 所述步骤(2)具体包括W下步骤:
[0017] (21)判断获取到的数据包是数据帖还是编码信息,如果是编码信息,执行步骤 (22),否则执行步骤(24);
[0018] (22)判断数据包中的编码格式是否和当前打开的解码器匹配,若是不匹配,执行 步骤(23),若是匹配,执行步骤(24);
[0019] (23)关闭当前解码器,根据当前数据帖的编码参数初始化新的解码器;
[0020] (24)解码当前数据帖;
[0021] (25)读取解码后的数据帖,将解码器输出的解码后的数据帖存储到输出队列。
[0022] 所述步骤(3)中对于音视数据的操作具体为:根据输出参数初始化音频输出设备, 读取数据帖;判断当前的音频数据帖的采样率、声道数和量化位数是否和输出参数一致,若 不一致进行音频重采样;若一致,则根据数据帖的时间戳做音视频同步,在合适的时机将数 据输出到输出设备。
[0023] 所述步骤(3)中对于视频数据的操作具体为:根据输出参数初始化视频输出设备, 读取数据帖;判断当前的视频数据帖的分辨率、颜色格式是否和输出参数一致;若不一致, 则对视频数据帖进行颜色空间转换;若是一致,根据数据帖的时间戳做音视频同步,在合适 的时机将数据输出到输出设备。
[0024] 有益效果
[0025] 由于采用了上述的技术方案,本发明与现有技术相比,具有W下的优点和积极效 果:本发明能够完全解决目前多媒体播放器在视频切换的时候会有黑屏或者卡顿的问题; 利用本发明方法处理的话,由于在播放上一个视频的时候也能预缓冲下一个视频,并且在 视频之间切换的时候只需要重置解码器,不必重置整个播放器,格式调整模块会将解码器 输出的数据调整为统一的格式。利用运种方法,可W在视频之间切换的时候达到视频内镜 头切换的效果,丝毫不会有黑屏,卡顿的问题。
【具体实施方式】
[0026] 下面结合具体实施例,进一步阐述本发明。应理解,运些实施例仅用于说明本发明 而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人 员可W对本发明作各种改动或修改,运些等价形式同样落于本申请所附权利要求书所限定 的范围。
[0027] 本实施例方法主要描述无缝切换的方法,不对具体的文件格式解析和音视频流解 码进行描述,具体的文件格式解析和解码可W参考各个格式的文档和现有的播放器SDK,本 方法也适用于市面上现有的播放器SDK。
[002引本实施例方法中设及到MP4、TS、MKVS种格式,实际使用中不仅仅局限于运Ξ种文 件格式,设及到的视频编码格式有H.264、H.265,设及到的音频编码格式有AAC,实际使用中 不仅仅局限于运几种编码格式。
[0029] 本实施例方法按照Ξ个模块进行描述,即文件解析模块,解码模块,格式转换和同 步输出模块,其中解码模块分为视频解码和音频解码两个部分,两个部分针对的格式不一 样,但是流程一样。
[0030] W下对本方法的具体实现方式进行说明:
[0031] 1.首先,先说明一下视频文件的URL的表述方式:
[0032] 本方法中设及到的视频文件的U化是指需要顺序播放的所有的视频文件的URL。其 他程序在调用播放器播放文件的时候,需要在开始播放之前就要将所有的需要播放的URL 设置给播放器,本发明中假设需要连续播放Ξ个文件:l.ts、2.mp4、3.mkv。在运Ξ个文件 中,1. ts文件的音频编码格式AAC,视频编码格式为H. 264。2 .mp4的音频编码格式为AAC,视 频编码格式为H.264D3.mkv的音频编码格式为AAC,视频编码格式为H.265。其中l.ts和 2.mp4的文件格式不一样,但是音视频编码参数都是一样的,3.mkv的视频编码格式和l.ts、 2. mp4不一样,音频编码参数一样;
[0033] 可W将运些URLW数组的方式描述,数组为:
[0034]
[0035] 播放器在得到运些U化后,记录运些URL,准备后续的播放工作。
[0036] 2.文件解析模块主要负责从视频文件中获取音视频编解码信息和音视频数据帖, 并处理音视频的时间戳。文件解析模块的输入数据为各个需要播放的视频文件,输出为一 系列的数据包,数据包包括音视频的编解码信息和已经分离好的音视频数据帖。处理步骤 如下:
[0037] a)文件解析模块打开当前需要播放的视频文件,在播放开始阶段,首先打开第一 个文件,即l.ts,打开此文件后,找到相应的文件格式解析器,解析文件内容,对于此文件, 需要使用ts的格式解析器,获取到该文件的音视频编码信息,假设视频文件信息存储在 videoinfo中,音频文件信息存储在audioinfo中,分别将运些信息存储到输出队列中。
[0038] b)从文件中读取数据帖,对数据帖的时间戳进行修正。修正方法如下:
[0039] 如果当前打开的是第一个视频文件,则不需要对数据帖的时间戳进行修正,记录 当前数据帖的时间戳信息W后,直接将数据帖放到输出队列中即可。
[0040] 如果当前打开的不是第一个文件,则需要对数据帖的时间戳进行修正,我们修正 时间戳的目的是使不同文件的数据帖的时间戳连续递增,要实现此方案,可W在数据帖的 时间戳上增加一个偏移量,由于在同一个文件的内部,数据帖的时间戳一般是按照一定的 规律递增的,因此只要处理好当前文件的第一个数据帖的时间戳和前一个文件的最后一个 数据帖的时间戳的关系后即可。对时间戳处理的目的是为后面的音视频同步和无缝切换打 好基础,时间戳的处理方法如下:
[0041] 假设上一个文件最后一个数据帖修正后的时间戳为LastFile化cketTs,上一个文 件的最后一个数据帖的时长为LastFile化cket
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1