监控视频无需转码直接播放的方法
【技术领域】
[0001]本发明属于监控视频领域,具体涉及一种监控视频无需转码直接播放的方法。
【背景技术】
[0002]目前市面上存在多种视频播放器软件,但并不能支持所有监控厂家的视频格式,并且即使部分支持,也需要将原视频先转码成标准的视频格式,才能进行正常的视频播放,具体情况如下:
[0003]1.监控视频厂家很多,每个厂家定义的视频文件格式不同;
[0004]2.对视频进行转码会花费很多时间;
[0005]3.转码后的视频文件大小与原文件大小可能差异很大,一般会比原文件大很多;
[0006]4.即使部分不转码的情况支持播放,但也会因视频文件格式的差异,导致播放体验不好,比如不能逐帧播放、不能很好的支持定位播放等。
【发明内容】
[0007]本发明针对现有技术的不足,提供了一种监控视频无需转码直接播放的方法,能够有效解决现有技术需要转码才能支持多种视频格式播放的问题。
[0008]为解决以上问题,本发明采用的技术方案如下:一种监控视频无需转码直接播放的方法,包括如下步骤:
[0009]S1-加载监控视频厂家提供的二次开发库文件SDK,并导出SDK中与控制播放状态相关的接口;
[0010]S2-解码库接收SDK接口返回的每一帧视频数据,并将接收到的视频数据转换成RGB格式,再将转换后的数据输出给播放模块;
[0011]S3-应用层接收并显示解码后的每一帧视频数据,并控制视频的播放状态;
[0012]S4-若还有未被转换后显示的视频数据,则重复S2,否则直接结束。
[0013]作为优选,SI包括如下方法:
[0014]Sll-使用windows提供的编程接口 LoadLibary加载SDK,并导出SDK中与控制播放状态相关的接口;
[0015]S12-调用SDK的接口注册解码回调函数,将视频解码库的函数注册为解码回调函数。
[0016]作为优选,S2包括如下方法:
[0017]S21-调用S12中所述的解码回调函数,传回当前帧的视频数据,由解码库接收每一帧视频数据,视频数据的结构为YUV ;
[0018]S22-调用SDK接口获取当前帧的信息:帧率、时间、图像高度和宽度;
[0019]S23-将S21所述的YUV分离成Y、U、V三个独立分量并按照编号顺序从小到大依次排列;
[0020]S24-将视频数据从YUV颜色系转换为RGB颜色系,并输出给播放模块。
[0021]作为优选,S3包括如下方法:
[0022]S31-应用层接收解码库输出的视频数据RGB后,将此图像数据显示到指定的面板;
[0023]S32-应用层通过调用解码库中与控制播放状态相关的接口来控制视频的播放状
??τ O
[0024]作为优选,SI所述的与控制播放状态相关的接口有播放接口、停止接口、定位接口、前一帧接口和后一帧接口。
[0025]本发明的有益效果如下:
[0026]1.不论视频是什么厂家、什么格式都不进行转码操作;
[0027]2.定义统一的视频播放接口,将所有不同格式的视频用统一接口输出;
[0028]3.针对每一个格式开发一个底层解码模块,此解码模块只实现基本的视频解码功能,从而实现应用层对不同格式的兼容;
[0029]4.使用统一的播放流程控制模块,实现对所有格式的控制,而不用每一个具体的格式去单独的实现一套流程控制;
[0030]通过使用本方法可以快速的播放视频,而且可以兼容众多的监控视频文件,使得视频播放功能更完善更稳定。
【附图说明】
[0031]图1为监控视频无需转码直接播放的主流程图;
[0032]图2为监控视频无需转码直接播放详细流程图。
【具体实施方式】
[0033]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
[0034]实施例:
[0035]针对上述提出的问题,本发明提出了一种监控视频无需转码直接播放的方法,如图1所示,包括以下步骤:
[0036]S1-加载监控视频厂家提供的二次开发库文件SDK,并导出SDK中与控制播放状态相关的接口;
[0037]如大华监控视频的SDK的播放接口:PLAY_Play ;停止接口:PLAY_Stop ;定位接口PLAY_seek,还包括前一帧、后一帧等接口。
[0038]S2-解码库接收SDK接口返回的每一帧视频数据,并将接收到的视频数据转换成RGB格式,再将转换后的数据输出给播放模块;
[0039]如大华监控视频的SDK 的接口:PLAY_SetDecodeCalIBack ;
[0040]S3-应用层接收并显示解码后的每一帧视频数据,并控制视频的播放状态;
[0041]S4-若还有未被转换后显示的视频数据,则重复S2,否则直接结束。
[0042]SI包括如下方法:
[0043]Sll-使用windows提供的编程接口 LoadLibary加载SDK,并导出SDK中与控制播放状态相关的接口 ;因绝大多数的SDK都是以DLL的形式提供,所以需要使用windows提供的编程接口 LoadLibary加载SDK ;
[0044]S12-调用SDK的接口“注册解码回调函数”,将视频解码库的函数注册为解码回调函数;由于与控制播放状态的相关接口有多个,因此需要解码回调功能,通过将视频解码库的函数注册为解码回调函数即可实现此功能。
[0045]S2包括如下方法:
[0046]S21-调用S12中所述的解码回调函数,传回当前帧的视频数据,由解码库接收每一帧视频数据,视频数据的结构为YUV ;
[0047]YUV:主要用于优化彩色视频信号的传输,使其兼容老式黑白电视,与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽,而RGB要求三个独立的视频信号同时传输;
[0048]YUV的三个分量一般为交叉无序排列,比如(Y0、U0、Y1、V0)、(Y2、U1、Y3、V1)、(Y4、U2、Y5、V2);
[0049]S22-调用SDK接口获取当前帧的信息:帧率PLAY_GetCurrentFrameRate、时间PLAY_GetPlayedTime、图像高度和宽度 PLAY_GetPictureSize ;
[0050]S23-将S21所述的YUV分离成Y、U、V三个独立分量并按照编号顺序从小到大依次排列;
[0051]将所有的Y数据(Y0、Yl、Y2)、U数据(U0、Ul、U2)、V数据(V0, V1、V2)分别抽取出来后按照编号顺序从小到大依次排列;
[0052]S24-将视频数据从YUV颜色系转换为RGB颜色系,并输出给播放模块。
[0053]因Windows开发环境下使用的图像是以RGB色为基准,所以需要将视频帧数据从YUV颜色系转换为RGB颜色系,以支持在windows开发环境下进行显示。两个颜色系的转换是使用现有技术完成,即将YUV分量分别乘不同的系数值,从而得到RGB各自的颜色值,如下所示:
[0054]RGB rgb = new RGB O ;
[0055]rgb.r = (int) ((Y&Oxff) +1.4075* ((V&Oxff)-128));
[0056]rgb.g = (int) ((Y&Oxff) -0.3455* ((U&Oxff)-128)-
[0057]0.7169* ((V&Oxff)-128));
[0058]rgb.b = (int) ((Y&Oxff) +1.779* ((U&Oxff)-128));
[0059]rgb.r = (rgb.r<0 ? 0:rgb.r>255 ? 255: rgb.r);
[0060]rgb.g = (rgb.g〈0 ? 0:rgb.g>255 ? 255: rgb.g);
[0061]rgb.b = (rgb.b<0 ? 0:rgb.b>255 ? 255: rgb.b);
[0062]return rgb ;
[0063]S3包括如下方法:
[0064]S31-应用层接收解码库输出的视频数据RGB后,将此图像数据显示到指定的面板;
[0065]S32-应用层通过调用解码库中与控制播放状态相关的接口(播放、定位、停止等)来控制视频的播放状态。
[0066]本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
【主权项】
1.一种监控视频无需转码直接播放的方法,其特征在于,包括如下步骤: 51-加载监控视频厂家提供的二次开发库文件SDK,并导出SDK中与控制播放状态相关的接口 ; 52-解码库接收SDK接口返回的每一帧视频数据,并将接收到的视频数据转换成RGB格式,再将转换后的数据输出给播放模块; 53-应用层接收并显示解码后的每一帧视频数据,并控制视频的播放状态; 54-若还有未被转换后显示的视频数据,则重复S2,否则直接结束。2.根据权利要求1所述的监控视频无需转码直接播放的方法,其特征在于,SI包括如下方法: 511-使用windows提供的编程接口LoadLibary加载SDK,并导出SDK中与控制播放状态相关的接口; 512-调用SDK的接口注册解码回调函数,将视频解码库的函数注册为解码回调函数。3.根据权利要求2所述的监控视频无需转码直接播放的方法,其特征在于,S2包括如下方法: 521-调用S12中所述的解码回调函数,传回当前帧的视频数据,由解码库接收每一帧视频数据,视频数据的结构为YUV ; 522-调用SDK接口获取当前帧的信息:帧率、时间、图像高度和宽度; 523-将S21所述的YUV分离成Y、U、V三个独立分量并按照编号顺序从小到大依次排列; 524-将视频数据从YUV颜色系转换为RGB颜色系,并输出给播放模块。4.根据权利要求2或3所述的监控视频无需转码直接播放的方法,其特征在于,S3包括如下方法: 531-应用层接收解码库输出的视频数据RGB后,将此图像数据显示到指定的面板; 532-应用层通过调用解码库中与控制播放状态相关的接口来控制视频的播放状态。5.根据权利要求1所述的监控视频无需转码直接播放的方法,其特征在于,SI所述的与控制播放状态相关的接口有播放接口、停止接口、定位接口、前一帧接口和后一帧接口。
【专利摘要】本发明公开了一种监控视频无需转码直接播放的方法,属于监控视频领域,包括以下步骤:S1-加载监控视频厂家提供的二次开发库文件SDK,并导出SDK中与控制播放状态相关的接口;S2-解码库接收SDK接口返回的每一帧视频数据,并将接收到的视频数据转换成RGB格式,再将转换后的数据输出给播放模块;S3-应用层接收并显示解码后的每一帧视频数据,并控制视频的播放状态;S4-若还有未被转换后显示的视频数据,则重复S2,否则直接结束。本发明的有益效果如下:通过使用本方法可以快速的播放视频,而且可以兼容众多的监控视频文件,使得视频播放功能更完善更稳定。
【IPC分类】H04N7/18, H04N21/472
【公开号】CN104967912
【申请号】CN201510379645
【发明人】梁效宁, 蒲军, 李波刚
【申请人】四川效率源信息安全技术有限责任公司
【公开日】2015年10月7日
【申请日】2015年7月1日