CN112399229A - 视频流播放方法、装置及系统和存储介质 - Google Patents
视频流播放方法、装置及系统和存储介质 Download PDFInfo
- Publication number
- CN112399229A CN112399229A CN201910764413.XA CN201910764413A CN112399229A CN 112399229 A CN112399229 A CN 112399229A CN 201910764413 A CN201910764413 A CN 201910764413A CN 112399229 A CN112399229 A CN 112399229A
- Authority
- CN
- China
- Prior art keywords
- video stream
- video
- gstreamer
- playing
- qml
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440236—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by media transcoding, e.g. video is transformed into a slideshow of still pictures, audio is converted into text
Abstract
本发明实施例公开了一种视频流播放方法、装置及系统和存储介质。所述视频流播放方法包括:生成、并显示基于QML的视频流播放界面;接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;将所述图像数据存入视频呈现类的QImage类型对象;以及绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放。本发明实施例采用自定义的方式建立gstreamer视频流与QML界面的渲染关系,避免了采用QT或其它第三方提供的针对QML来显示视频的gstreamer插件,从而解决了不同系统或硬件平台(尤其是嵌入式平台)播放gstreamer视频流时运行环境不支持或支持效果差等问题。
Description
技术领域
本发明涉及显示技术领域,尤其涉及尤其涉及一种视频流播放方法、一种视频流播放装置、一种视频流播放系统和一种存储介质。
背景技术
目前,基于LINUX的嵌入式GUI(图形用户界面)设计通常会采用QT搭建界面,经常会考虑在由Qt公司开发的跨平台C++图形用户界面应用程序开发框架QT开发的界面播放gstreamer视频流,然而,由于不同于QT图形用户界面(GUI,Graphical User Interface)采用软件渲染,描述性的脚本语言QML采用的是GPU硬件渲染技术,因此ARM芯片厂商适配的gstreamer视频编解码插件通常适配QT GUI窗口而不太适配QML窗口,如此一来,gstreamer视频编解码插件对QML窗口的支持效果并不理想。
在现有技术中,为了在嵌入式设备中实现gstreamer视频流的播放,通过采用以下两种方式来实现gstreamer视频流的播放,一种方式是采用QT GUI结合ARM芯片厂商提供的gstreamer sink插件来播放gstreamer视频流,另一种方式是采用第三方gstreamer QML相关sink插件(例如qmlglsink插件)来播放gstreamer视频流。然而,第一种方式采用QT GUI搭建界面实现的界面效果比不上QML窗口界面,无法满足用户目前对嵌入式设备的界面效果的要求。此外,对于第二种方式,由于第三方gstreamer QML相关sink插件通常是基于glx接口或者opengl接口,而嵌入式环境下通常仅支持opengles接口,例如,qmlglsink插件需要依赖opengl接口支持来在QML中渲染gstreamer输出画面。因此,需要寻找一种更通用的视频流播放方案,以避免采用QT或其它第三方提供的针对QML来显示视频的gstreamer插件,从而解决了不同系统或硬件平台(尤其是嵌入式平台)播放gstreamer视频流时运行环境不支持或支持效果差等问题。
发明内容
因此,为了克服现有技术的缺陷和不足,本发明实施例提供一种视频流播放方法、一种视频流播放装置、一种视频流播放系统和一种存储介质,其不依赖于QT或其它第三方提供的针对QML来显示视频的gstreamer插件,因此通用性更强,同时能够提供良好的gstreamer视频流播放效果。
一方面,本发明实施例提供的视频流播放方法,包括:生成、并显示基于QML的视频流播放界面;接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;将所述图像数据存入视频呈现类的QImage类型对象;以及绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放。
在上述技术方案中,通过生成、并显示基于QML的视频流播放界面,然后接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;然后将所述图像数据存入视频呈现类的QImage类型对象,然后绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放从而实现了基于QML的gstreamer视频流播放功能,而无需采用QT或第三方提供的针对QML来显示视频的gstreamer插件,从而解决了不同系统或硬件平台(尤其是嵌入式平台)播放gstreamer视频流时运行环境不支持或支持效果差等问题。
在本发明的一个实施例中,所述接收所述gstreamer视频流具体为:通过视频播放类的gstreamer管道的appsink插件接收所述gstreamer视频流。
在本发明的一个实施例中,在所述将所述图像数据存入视频呈现类的QImage类型对象之前,所述视频流播放方法还包括:所述gstreamer管道通过信号处理回调方法将所述图像数据发送至所述视频播放类,以及通过所述视频呈现类的updateImg方法将所述视频播放类中的所述图像数据发送至所述视频呈现类。
在本发明的一个实施例中,所述生成基于QML的视频流播放界面具体为:利用qmlRegisterType方法将所述视频呈现类注册到QML界面得到所述基于QML的视频流播放界面。
在本发明的一个实施例中,所述绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放具体为:通过所述视频呈现类的paint方法绘制所述QImage类型对象至所述基于QML的视频流播放界面。
另一方面,本发明实施例提供的一种视频流播放装置,其包括:界面生成和显示模块,用于生成、并显示基于QML的视频流播放界面;视频流处理模块,用于接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;图像数据存储模块,用于将所述图像数据存入视频呈现类的QImage类型对象;以及界面绘制模块,用于绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放。
在上述技术方案中,界面生成和显示模块生成并显示基于QML的视频流播放界面,然后视频流处理模块接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;然后图像数据存储模块将所述图像数据存入视频呈现类的QImage类型对象,界面绘制模块绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放从而实现了基于QML的gstreamer视频流播放功能,而无需采用QT或第三方提供的针对QML来显示视频的gstreamer插件,从而解决了不同系统或硬件平台(尤其是嵌入式平台)播放gstreamer视频流时运行环境不支持或支持效果差等问题。
在本发明的一个实施例中,所述视频流处理模块具体用于通过所述视频播放类的所述gstreamer管道的appsink插件接收所述gstreamer视频流。
在本发明的一个实施例中,所述视频流处理模块还包括图像数据发送模块,用于通过信号处理回调方法将所述图像数据发送至所述视频播放类,以及所述视频播放类通过所述视频呈现类的updateImg方法将所述图像数据发送至所述视频呈现类。
再一方面,本发明实施例提供的一种视频流播放系统,包括存储器和连接所述存储器的处理器;所述存储器存储有计算机程序,所述处理器运行所述计算机程序时执行上述任一种视频流播放方法。
又一方面,本发明实施例提供的一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于执行上述任一种视频流播放方法。
上述技术方案的中的至少一个技术方案具有如下优点或有益效果:通过生成、并显示基于QML的视频流播放界面,然后接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;然后将所述图像数据存入视频呈现类的QImage类型对象,然后绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放从而实现了基于QML的gstreamer视频流播放功能,而无需采用QT或第三方提供的针对QML来显示视频的gstreamer插件,从而解决了不同系统或硬件平台(尤其是嵌入式平台)播放gstreamer视频流时运行环境不支持或支持效果差等问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明第一实施例提供的一种视频流播放方法的流程示意图。
图2为本发明第一实施例提供的另一种视频流播放方法的流程示意图。
图3为本发明第一实施例中的gstreamer管道、视频播放类player和视频呈现类VideoItem之间的交互过程示意图。
图4为本发明第二实施例提供的一种视频流播放装置的结构示意图。
图5为本发明第二实施例提供的另一种视频流播放装置的结构示意图。
图6为本发明第三实施例提供的一种视频流播放系统的结构示意图。
图7为本发明第四实施例提供的一种存储介质的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
【第一实施例】
参见图1,其为本发明第一实施例提供的视频流播放方法的流程示意图。视频流播放方法包括如下步骤:
S10,生成、并显示基于QML的视频流播放界面;
S20,接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;
S30,将所述图像数据存入视频呈现类的QImage类型对象;以及
S40,绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放。
具体地,这里步骤S10中的基于QML的视频流播放界面例如是利用QML进行呈现的视频流播放窗体。
在一个具体的实施方式中,所述步骤S20具体为:通过视频播放类的gstreamer管道的appsink插件接收所述gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到所述图像数据。尽管gstreamer管道可以实现对gstreamer视频流的解码转换,但是其实现无法知道gstreamer视频流内部的数据。因此,在本技术方案中,采用gstreamer管道的appsink插件来获取gstreamer视频流的具体数据,以供后续进行绘制界面。
在一个具体的实施方式中,参见图3,在步骤S30之前,所述视频流播放方法还包括步骤S50:gstreamer管道通过信号处理回调方法将所述图像数据发送至视频播放类,以及通过视频呈现类的updateImg方法将视频播放类中的图像数据发送至视频呈现类。
在一个具体的实施方式中,所述生成基于QML的视频流播放界面具体为:利用qmlRegisterType方法将所述视频呈现类注册到QML界面得到所述基于QML的视频流播放界面。
在一个具体的实施方式中,所述绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放具体为:通过所述视频呈现类的paint方法绘制所述QImage类型对象至所述基于QML的视频流播放界面。
所述视频流播放方法适用于嵌入式设备,具体应用于嵌入式设备的MPU(microprocessor unit,微处理器单元)。嵌入式设备或者MPU在移植有gstreamer框架和QML框架的情况下就可以执行本发明实施例的视频流播放方法。
为了更好地理解本发明实施例的视频流播放方法,首先对本发明实施例中的视频呈现类和视频播放类进行说明。
具体地,视频呈现类VideoItem为继承自QQuickPaintedItem的自定义子类,其中,QQuickPaintedItem继承自QT框架提供的QQuickItem类。QQuickPaintedItem提供了使用QPainter API的方法来扩展QML中的2D图形项。在所述视频呈现类VideoItem内部声明有QImage类型的成员变量mFrameImg,其中,QImage类为QT框架中用于实现图像显示的类。所述成员变量mFrameImg用于存放待绘制到QML界面的图像信息。所述视频呈现类VideoItem还包括图像更新方法(或称函数)updateImg,所述图像更新方法updateImg用于对成员变量mFrameImage进行更新。具体地,所述图像更新方法updateImg从视频播放类player接收图像数据,利用QImage类的fromData方法把接收图像数据加载到成员变量mFrameImg从而实现对成员变量mFrameImg的更新。所述视频呈现类VideoItem还包括paint函数,所述paint函数通过QPainter类型的实例化对象painter的drawImage方法把QImage类型的成员变量mFrameImg绘制到视频呈现类VideoItem的窗体。此处的图像数据例如为RGB图像数据、RGBA图像数据等。
视频播放类player为自定义的用于播放gstreamer视频流的类,其例如包括gstreamer管道。具体地,gstreamer管道是通过将包括视频流地址、插件类型、视频流图像数据格式等信息的字符串(例如,字符串“rtspsrc location=rtsp://192.168.10.35:8081/videostream name=rtspsrc!rtpjitterbuffer!rtph264depay!h264parse!avdec_h264!autovideoconvert!video/x-raw,format=RGB,width=1920,height=1080!appsink name=appsink sync=true”)传递给gstreamer框架所提供的gst_parse_launch函数来建立的,gst_parse_launch函数是根据字符串描述的插件连接关系用这些插件建立流媒体管道。该gstreamer管道的输出端为appsink插件。视频播放类player通过gstreamer框架提供的gst_bin_get_by_name函数使用插件名appsink获得gstreame管道中的appsink插件对象。视频播放类player例如通过利用g_object_set函数和"emit-signals"属性名称开启appsink的发送信号的功能。视频播放类player还包括信号处理回调方法on_new_sample_from_sink,所述信号处理回调方法on_new_sample_from_sink用于接收appsink插件的图像数据并以所述图像数据为参数调用视频呈现类VideoItem的对象的图像更新方法updateImg以更新视频呈现类VideoItem缓存图像。视频播放类player还包括g_signal_connect函数,g_signal_connect函数用于将信号处理回调方法on_new_sample_from_sink注册到appsink插件的“new-sample”信号。
在执行视频流播放方法的过程中,首先需要将视频呈现类VideoItem注册到QML界面中从而生成基于QML的视频流播放界面。具体地,这里利用qmlRegisterType方法将所述视频呈现类注册到所述QML界面得到基于QML的视频流播放界面。所述注册过程实现了将视频呈现类VideoItem映射到QML界面,从而实现对视频呈现类VideoItem的操作也就是对QML界面上所呈现的元素的操作的技术效果。然后,通过视频播放类player的gstreamer管道的appsink插件从外部接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据。之后,视频播放类player的gstreamer管道通过信号处理回调方法on_new_sample_from_sink将图像数据发送至视频播放类player,并且视频播放类player通过视频呈现类VideoItem的图像更新方法updateImg将图像数据发送至视频呈现类VideoItem,具体地,图像更新方法updateImg从视频播放类接收图像数据,利用QImage类的fromData方法把接收图像数据加载到成员变量mFrameImg从而实现对成员变量mFrameImg的更新,进而将图像数据存储为QImage类型对象,这里的QImage类型对象为QImage类实例化的对象,具体地,这里的将图像数据存储为QImage类型对象例如为通过QImage提供的接口传入图像数据从而构建QImage类实例化的对象。之后,视频呈现类VideoItem通过paint函数将QImage类型的成员变量mFrameImg绘制到视频呈现类VideoItem的窗体从而实现gstreamer视频流播放。
进一步地,参见图3,其示出了本实施例中gstreamer管道、视频播放类player以及视频呈现类VideoItem之间的交互过程示意图。具体地,首先,通过视频播放类player创建gstreamer管道,具体地,所述gstreamer管道是通过将一字符串传递给gst_parse_launch函数来建立的,所述gstreamer管道的输出端为appsink插件。然后gstreamer管道例如从外部gstreamer视频流文件(例如MP4等格式的文件)接收gstreamer视频流,对所述gstreamer视频流进行解码并转换以获得图像数据,这里的图像数据的格式典型地为RGB格式,当然,这里的图像数据也可以是其他数据格式,例如、GRB数据格式或者RGBA数据格式,只要所述图像数据包括gstreamer视频流的图像数据即可,本发明不以此为限。然后,视频播放类的player的gstreamer管道的appsink插件通过针对new-sample信号注册的信号处理回调方法将图像数据发送至视频呈现类player。之后,视频播放类player调用视频呈现类VideoItem的图像更新方法updateImg将图像数据发送至视频呈现类VideoItem,视频呈现类VideoItem将图像数据存储为QImage类型对象。最后,视频呈现类VideoItem通过其绘制事件处理方法paint绘制Qimage类型对象,以将QImage类型对象绘制至基于QML的视频流播放界面以供播放。
在上述方案中,通过生成、并显示基于QML的视频流播放界面,然后接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;然后将所述图像数据存入视频呈现类的QImage类型对象,然后绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放从而实现了基于QML的gstreamer视频流播放功能,而无需采用QT或第三方提供的针对QML来显示视频的gstreamer插件,从而解决了不同系统或硬件平台(尤其是嵌入式平台)播放gstreamer视频流时运行环境不支持或支持效果差等问题。
【第二实施例】
如图4所示,本发明第二实施例提供了一种视频流播放装置300。视频流播放装置300例如包括界面生成和显示模块310、视频流处理模块320、图像数据存储模块330、以及界面绘制模块340。
具体地,界面生成和显示模块310用于生成、并显示基于QML的视频流播放界面。
视频流处理模块320用于接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据。
图像数据存储模块330用于将所述图像数据存入视频呈现类的QImage类型对象。
界面绘制模块340用于绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放。
在一个具体的实施方式中,所述视频流处理模块320具体用于通过视频播放类的gstreamer管道接收所述gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到所述图像数据。
在一个具体的实施方式中,如图5所示,视频流播放装置300还包括:图像数据发送模块350,用于通过信号处理回调方法将所述图像数据发送至所述视频播放类,以及通过所述视频呈现类的updateImg方法将所述视频播放类中的所述图像数据发送至所述视频呈现类。
本实施例中的视频流播放装置300中的各模块之间的具体工作过程和技术效果参见前述第一实施例的描述。
【第三实施例】
如图6所示,本发明第三实施例提供一种视频流播放系统400。视频流播放系统400包括存储器410和与存储器410连接的处理器430。存储器410可例如为非易失性存储器,其上存储有计算机程序411。处理器430可例如包括嵌入式处理器。处理器430运行计算机程序411时执行前述第一实施例提供的视频流播放方法。
【第四实施例】
如图7所示,本发明第四实施例提供一种存储介质500,所述存储介质500存储有计算机可执行指令510。计算机可执行指令510用于执行如前述第一实施例的视频流播放方法。计算机可读介质500例如为非易失性存储器,如包括:磁介质(如硬盘、软盘和磁带),光介质(如CDROM盘和DVD),磁光介质(如光盘)以及专门构造为用于存储和执行计算机可执行指令的硬件装置(如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。计算机可读介质500可由一个或多个处理器或处理装置来执行计算机可执行指令510。
此外,可以理解的是,前述各个实施例仅为本发明的示例性说明,在技术特征不冲突、结构不矛盾、不违背本发明的发明目的前提下,各个实施例的技术方案可以任意组合、搭配使用。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多路单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多路网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元/模块可以集成在一个处理单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一个单元/模块中。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元/模块的形式实现。
上述以软件功能单元/模块的形式实现的集成的单元/模块,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)的一个或多个处理器执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种视频流播放方法,其特征在于,包括:
生成、并显示基于QML的视频流播放界面;
接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;
将所述图像数据存入视频呈现类的QImage类型对象;以及
绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放。
2.根据权利要求1所述的视频流播放方法,其特征在于,所述接收所述gstreamer视频流具体为:通过视频播放类的gstreamer管道的appsink插件接收所述gstreamer视频流。
3.根据权利要求2所述的视频播放方法,其特征在于,在所述将所述图像数据存入视频呈现类的QImage类型对象之前,还包括:
所述gstreamer管道通过信号处理回调方法将所述图像数据发送至所述视频播放类,以及通过所述视频呈现类的updateImg方法将所述视频播放类中的所述图像数据发送至所述视频呈现类。
4.根据权利要求1所述的视频流播放方法,其特征在于,所述生成基于QML的视频流播放界面具体为:利用qmlRegisterType方法将所述视频呈现类注册到QML界面得到所述基于QML的视频流播放界面。
5.根据权利要求1所述的视频流播放方法,其特征在于,所述绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放具体为:通过所述视频呈现类的paint方法绘制所述QImage类型对象至所述基于QML的视频流播放界面。
6.一种视频流播放装置,其特征在于,包括:
界面生成和显示模块,用于生成、并显示基于QML的视频流播放界面;
视频流处理模块,用于接收gstreamer视频流,并对所述gstreamer视频流进行解码、转换得到图像数据;
图像数据存储模块,用于将所述图像数据存入视频呈现类的QImage类型对象;以及
界面绘制模块,用于绘制所述QImage类型对象至所述基于QML的视频流播放界面以供播放。
7.根据权利要求6所述的视频流播放装置,其特征在于,所述视频流处理模块具体用于通过所述视频播放类的所述gstreamer管道的appsink插件接收所述gstreamer视频流。
8.根据权利要求7所述的视频流播放装置,其特征在于,还包括:图像数据发送模块,用于通过信号处理回调方法将所述图像数据发送至所述视频播放类,以及通过所述视频呈现类的updateImg方法将所述图像数据发送至所述视频呈现类。
9.一种视频流播放系统,其特征在于,包括:存储器和连接所述存储器的处理器;所述存储器存储有计算机程序,所述处理器运行所述计算机程序时执行如权利要求1至5中任意一项所述的视频流播放方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于执行如权利要求1至5任意一项所述的视频流播放方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910764413.XA CN112399229B (zh) | 2019-08-19 | 2019-08-19 | 视频流播放方法、装置及系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910764413.XA CN112399229B (zh) | 2019-08-19 | 2019-08-19 | 视频流播放方法、装置及系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112399229A true CN112399229A (zh) | 2021-02-23 |
CN112399229B CN112399229B (zh) | 2023-03-14 |
Family
ID=74603411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910764413.XA Active CN112399229B (zh) | 2019-08-19 | 2019-08-19 | 视频流播放方法、装置及系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112399229B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160078661A1 (en) * | 2014-09-11 | 2016-03-17 | Continental Automotive Gmbh | Animation arrangement |
CN106331822A (zh) * | 2016-08-26 | 2017-01-11 | 北京金山安全软件有限公司 | 一种播放多视频的方法、装置及电子设备 |
US20170085948A1 (en) * | 2014-02-26 | 2017-03-23 | Lg Electronics Inc. | Digital device and control method thereof |
CN108200482A (zh) * | 2018-01-16 | 2018-06-22 | 威创集团股份有限公司 | 一种跨平台高清音视频播放方法、系统及客户端 |
CN108712662A (zh) * | 2018-03-30 | 2018-10-26 | 武汉斗鱼网络科技有限公司 | 一种用于视频播放的方法、装置及计算机设备 |
CN109828846A (zh) * | 2017-11-23 | 2019-05-31 | 电子科技大学中山学院 | 一种QML视频播放GStream错误的处理方法 |
-
2019
- 2019-08-19 CN CN201910764413.XA patent/CN112399229B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170085948A1 (en) * | 2014-02-26 | 2017-03-23 | Lg Electronics Inc. | Digital device and control method thereof |
US20160078661A1 (en) * | 2014-09-11 | 2016-03-17 | Continental Automotive Gmbh | Animation arrangement |
CN106331822A (zh) * | 2016-08-26 | 2017-01-11 | 北京金山安全软件有限公司 | 一种播放多视频的方法、装置及电子设备 |
CN109828846A (zh) * | 2017-11-23 | 2019-05-31 | 电子科技大学中山学院 | 一种QML视频播放GStream错误的处理方法 |
CN108200482A (zh) * | 2018-01-16 | 2018-06-22 | 威创集团股份有限公司 | 一种跨平台高清音视频播放方法、系统及客户端 |
CN108712662A (zh) * | 2018-03-30 | 2018-10-26 | 武汉斗鱼网络科技有限公司 | 一种用于视频播放的方法、装置及计算机设备 |
Non-Patent Citations (6)
Title |
---|
CALVARIS" BLOG: "Painting video with GStreamer and Qt/QML or Gtk+ with overlay", 《HTTPS://BLOGS.IGALIA.COM/XRCALVAR/2012/04/29/PAINTING-VIDEO-WITH-GSTREAMER-AND-QTQML-OR-GTK-WITH-OVERLAY/》 * |
CSDN博主"JOVEN_XXX": "用QML实现简单音视频播放器的实践", 《HTTPS://BLOG.CSDN.NET/SHADO_WALKER/ARTICLE/DETAILS/54669727》 * |
CSDN博主"W54A3TE": "QML与ffmpeg实现简单视频播放(无音频处理)", 《HTTPS://BLOG.CSDN.NET/W54A3TEG64C7BD/ARTICLE/DETAILS/82836640》 * |
CSDN博主"你今天搬了几块砖": "qml+Gstream+网络摄像头(rtsp)(实现硬解码和播放),附带源码", 《HTTPS://BLOG.CSDN.NET/WEIXIN_42550424/ARTICLE/DETAILS/85050505》 * |
CSDN博主"摩羯座程序员": "【gstreamer】gstreamer-appsink元素的使用", 《HTTPS://BLOG.CSDN.NET/QQ_43248127/ARTICLE/DETAILS/90047136》 * |
CSDN博主"池旭超": "在Qml中显示FFmpeg解码视频", 《HTTPS://BLOG.CSDN.NET/CXC233/ARTICLE/DETAILS/80382696》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112399229B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021135160A1 (zh) | 游戏直播控制方法及装置、计算机存储介质、电子设备 | |
US10542301B2 (en) | Multimedia redirection method, device, and system | |
WO2021147657A1 (zh) | 插帧处理方法及相关产品 | |
JP5876161B2 (ja) | オペレーティングシステムの初期化中にマルチメディアデータを表示する技術 | |
CN112235604B (zh) | 渲染方法及装置、计算机可读存储介质、电子设备 | |
JP5313225B2 (ja) | ディスプレイ・データ管理技法 | |
KR20130135306A (ko) | 이미지들을 디스플레이하기 위한 무선 소스와 싱크 디바이스 간의 데이터 교환 | |
CN102196033B (zh) | 一种传送和接收远程呈现数据的方法和系统 | |
WO2017080175A1 (zh) | 用于多机位的视频播放器、播放系统及播放方法 | |
US9761038B2 (en) | Using GPU for network packetization | |
CN112714357B (zh) | 视频播放方法、视频播放装置、电子设备和存储介质 | |
CN110290398B (zh) | 视频下发方法、装置、存储介质及电子设备 | |
CN112929740A (zh) | 一种渲染视频流的方法、装置、存储介质及设备 | |
CN108337246A (zh) | 防止重放延迟的媒体重放设备和媒体服务设备 | |
WO2023011033A1 (zh) | 图像处理方法、装置、计算机设备及存储介质 | |
CN113766270A (zh) | 视频播放方法、系统、服务器、终端设备、以及电子设备 | |
CN113411660B (zh) | 视频数据的处理方法、装置和电子设备 | |
CN112399229B (zh) | 视频流播放方法、装置及系统和存储介质 | |
CN113411661B (zh) | 用于记录信息的方法、装置、设备、存储介质及程序产品 | |
CN114222185B (zh) | 视频播放方法、终端设备及存储介质 | |
CN114071190B (zh) | 云应用视频流处理方法、相关装置及计算机程序产品 | |
CN113613043A (zh) | 屏幕显示和图像处理方法以及嵌入式设备和云服务器 | |
CN113438487A (zh) | 一种兼容私有视频格式网页播放器方法 | |
CN115118922B (zh) | 一种云会议中实时视频合屏插入动图的方法与装置 | |
TWI506442B (zh) | 在同一螢幕中之多方同時顯示 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |