CN114245192B - 多进程解码播放方法和装置 - Google Patents
多进程解码播放方法和装置 Download PDFInfo
- Publication number
- CN114245192B CN114245192B CN202111558855.2A CN202111558855A CN114245192B CN 114245192 B CN114245192 B CN 114245192B CN 202111558855 A CN202111558855 A CN 202111558855A CN 114245192 B CN114245192 B CN 114245192B
- Authority
- CN
- China
- Prior art keywords
- video streams
- sub
- layer
- player
- libvlc
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 189
- 230000008569 process Effects 0.000 claims abstract description 58
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 description 18
- 238000007726 management method Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000013112 stability test Methods 0.000 description 1
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/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47217—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
-
- 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
- H04N21/4312—Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
-
- 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/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4341—Demultiplexing of audio and video streams
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供了多进程解码播放方法和装置,应用于客户端,客户端上设置有主进程和多个子进程,子进程包括Libvlc播放器,包括:获取用户的选取模式;根据选取模式在主进程上创建主窗口;在主窗口上生成多个子窗口,其中,每个子进程对应相应的子窗口;将每个子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;通过Libvlc播放器将多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;显示多个解码后的视频流;采用多进程播放器进行播放,可以满足多路节目同时播放和多个播放器长时间播放,提高了独立性和稳定性。
Description
技术领域
本发明涉及视频处理技术领域,尤其是涉及多进程解码播放方法和装置。
背景技术
目前,视频播放采用单进程播放器进行播放,单进程播放器无法满足多路节目同时播放;当多个单进程播放器播放时间较长时,会存在崩溃、停播、卡顿或跳转到其他帧界面等问题。
另外,随着业务逻辑的复杂化和需求的增加,单进程播放器无法满足产品的迭代需求。
发明内容
有鉴于此,本发明的目的在于提供多进程解码播放方法和装置,采用多进程播放器进行播放,可以满足多路节目同时播放和多个播放器长时间播放,提高了独立性和稳定性。
第一方面,本发明实施例提供了多进程解码播放方法,应用于客户端,所述客户端上设置有主进程和多个子进程,所述子进程包括Libvlc播放器,所述方法包括:
获取用户的选取模式;
根据所述选取模式在所述主进程上创建主窗口;
在所述主窗口上生成多个子窗口,其中,每个所述子进程对应相应的所述子窗口;
将每个所述子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;
通过所述Libvlc播放器将所述多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;
显示所述多个解码后的视频流。
进一步的,所述通过所述Libvlc播放器将所述多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流,包括:
将所述多个绘制后的视频流输入给访问层,并通过访问层发送给流层;
将所述多个绘制后的视频流通过所述流层发送给解复用层;
所述解复用层对所述多个绘制后的视频流进行解复用,得到多个解复用的视频流;
将所述多个解复用的视频流发送给第一输出层,并通过第一输出层发送给解码层;
所述解码层对所述多个解复用的视频流进行解码,得到所述多个解码后的视频流。
进一步的,所述方法还包括:
所述主进程通过DBUS将播放信息发送给所述子进程;
或者,
所述子进程通过所述DBUS将播放结果信息发送给所述主进程。
进一步的,所述方法还包括:
当所述主窗口上生成多个所述子窗口时,根据所述选取模式调整每个所述子窗口的大小和显示位置。
进一步的,所述方法还包括:
当所述主窗口在界面上发生变化时,根据变化后的主窗口调整每个所述子窗口的大小和所述显示位置。
第二方面,本发明实施例提供了多进程解码播放装置,应用于客户端,所述客户端上设置有主进程和多个子进程,所述子进程包括Libvlc播放器,所述装置包括:
播放器组管理子模块,用于获取用户的选取模式;根据所述选取模式在所述主进程上创建主窗口;在所述主窗口上生成多个子窗口,其中,每个所述子进程对应相应的所述子窗口;
播放器视频绘制子模块,用于将每个所述子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;
所述Libvlc播放器,用于将所述多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;显示所述多个解码后的视频流。
进一步的,所述Libvlc播放器具体用于:
将所述多个绘制后的视频流输入给访问层,并通过访问层发送给流层;
将所述多个绘制后的视频流通过所述流层发送给解复用层;
所述解复用层对所述多个绘制后的视频流进行解复用,得到多个解复用的视频流;
将所述多个解复用的视频流发送给第一输出层,并通过第一输出层发送给解码层;
所述解码层对所述多个解复用的视频流进行解码,得到所述多个解码后的视频流。
进一步的,所述装置还包括调整模块;
所述调整模块,用于当所述主窗口上生成多个所述子窗口时,根据所述选取模式调整每个所述子窗口的大小和显示位置。
第三方面,本发明实施例提供了电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的方法。
第四方面,本发明实施例提供了具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行如上所述的方法。
本发明实施例提供了多进程解码播放方法和装置,应用于客户端,客户端上设置有主进程和多个子进程,子进程包括Libvlc播放器,包括:获取用户的选取模式;根据选取模式在主进程上创建主窗口;在主窗口上生成多个子窗口,其中,每个子进程对应相应的子窗口;将每个子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;通过Libvlc播放器将多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;显示多个解码后的视频流;采用多进程播放器进行播放,可以满足多路节目同时播放和多个播放器长时间播放,提高了独立性和稳定性。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的多进程解码播放方法流程图;
图2为本发明实施例一提供的多进程播放器显示效果示意图;
图3为本发明实施例一提供的Libvlc播放器处理流程示意图;
图4为本发明实施例一提供的主窗口与子窗口的关系示意图;
图5为本发明实施例二提供的多进程解码播放装置示意图。
图标:
1-播放器组管理模块;2-播放器视频绘制模块;3-Libvlc播放器。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本实施例进行理解,下面对本发明实施例进行详细介绍。
实施例一:
图1为本发明实施例一提供的多进程解码播放方法流程图。
参照图1,应用于客户端,客户端上设置有主进程和多个子进程,子进程包括Libvlc播放器,该方法包括以下步骤:
步骤S101,获取用户的选取模式;
步骤S102,根据选取模式在主进程上创建主窗口;
步骤S103,在主窗口上生成多个子窗口,其中,每个子进程对应相应的子窗口;
步骤S104,将每个子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;
步骤S105,通过Libvlc播放器将多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;
步骤S106,显示多个解码后的视频流。
具体地,选取模式可以为2*2、3*3、4*4和5*5,Libvlc播放器可以为多进程播放器。视频播放的部分性能取决于显卡配置,针对不同配置显卡稳定性测试结果如下:1)NVIDIAGeForce GTX 1060 6GB(6GB/七彩虹)显卡,最优播放为16路(10硬解+6软解);2)英特尔UHDGraphics 630(128MB/华硕)显卡,最优播放为12路(8硬解+4软解)。
多进程播放器可同时支持16路节目同时播放,并且CPU和内存使用率不应高于80%;多进程播放器稳定性好,最低可满足30*24h持续稳定播放,无卡顿、无停播和不崩溃;支持PC端跟移动端视频切换(即切屏),具体参照图2,以3*3为例显示多个子窗口。
主进程包括主窗口、Web容器、播放器组管理子模块和播放器视频绘制子模块。其中,Web容器为Web浏览器引擎,主要是将内容嵌入到没有本机Web引擎的平台上QT应用程序中去。子进程包括播放器控制与交互叠加层、播放器叠加绘制层和Libvlc播放器。
主进程的作用是用于创建与管理主窗口、创建与管理Web容器、创建与管理播放器组管理子模块、创建与管理播放器视频绘制子模块、创建与管理播放子进程。
子进程的作用是接收主进程发送的视频显示Widget标识,通过Libvlc接口将视频显示Widget标识配置到Libvlc播放器中,通过Libvlc接口将播放地址配置到Libvlc播放器中,通过Libvlc接口播放视频。
进一步的,步骤S105包括以下步骤:
步骤S201,将多个绘制后的视频流输入给访问层,并通过访问层发送给流层;
步骤S202,将多个绘制后的视频流通过流层发送给解复用层;
步骤S203,解复用层对多个绘制后的视频流进行解复用,得到多个解复用的视频流;
步骤S204,将多个解复用的视频流发送给第一输出层,并通过第一输出层发送给解码层;
步骤S205,解码层对多个解复用的视频流进行解码,得到多个解码后的视频流。
具体地,参照图3,访问层(access),是VLC抽象的一个层,该层向下直接使用文件或网络IO接口,向上为流层(stream)服务,提供IO接口。
流层(stream)是VLC抽象的一个层,该层向下直接使用访问层(access)提供的IO接口,向上为解复用层(demux)服务,提供IO接口。
解复用层(demux)向下直接使用流层(stream)提供的IO接口,对多个绘制后的视频流进行解复用,得到多个解复用的视频流,将多个解复用的视频流发送给第一输出层(es_out)。
第一输出层(es_out),是VLC抽象的一个层,该层获取解复用层(demux)的多个解复用的视频流,并发送给解码层(decode)。
解码层(decode)将多个解复用的视频流进行解码,得到多个解码后的视频流,将多个解码后的视频流发送给第二输出层(output)。
第二输出层(output)将多个解码后的视频流发送给绘制显示层(readerer)。绘制显示层(readerer)用于显示多个解码后的视频流。
还包括播放列表(playlist),VLC在启动后,即创建一个playlist thread,用户输入后,动态创建input。
进一步的,该方法还包括:
主进程通过DBUS将播放信息发送给子进程;
或者,
子进程通过DBUS将播放结果信息发送给主进程。
具体地,主进程与子进程之间的通信,通过DBUS实现,DBUS兼容通信效率与开发效率。(透明)空间叠加绘制通过无父子关系的Wighet组件实现。
主进程通过DBUS将播放信息发送给子进程。其中,播放信息包括播放地址信息、暂停信息、控制进度信息、停止播放信息、重置播放信息、显示下一帧信息、播放速度信息和截图信息等。
子进程通过DBUS将播放结果信息发送给主进程。播放结果信息包括播放器创建事件信息、播放器状态变化事件信息、播放器加载状态事件信息、播放器释放事件信息、播放器错误类型事件信息和播放器播放至结尾事件信息等。
DBUS是实质上一个适用于桌面应用的进程间的通讯机制,即所谓的IPC机制。在DBUS中,主进程对应为服务端,每个子进程对应为客户端。
DBUS适合在同一台机器,不适合于INTERNET的IPC机制。DBUS不是一个为所有可能的应用的通用的IPC机制,不支持其他IPC机制的很多特性。DBUS提供了一个低时延、低消耗的IPC通讯,因为它采用了二进制的数据交换协议,不需要转换成文本化的数据进行交换,DBUS提供了面向多重对象系统的包装,可以在原有的面向对象的应用框架下使用DBUS,不需要学习新的概念和规范等。
DBUS是支持一对一和多对多的对等通讯,在一对一的直接通讯时,两个应用程序连接在一起,这是最简单的工作方式。在多对多的通讯时,这就需要一个叫DBUS后台的角色去分转,一个应用程序发消息给另外一个应用程序,先到达后台,再让后台将信息发送到目的应用程序。在这里DBUS后台就充当着一个路由器的角色。
DBUS包含了系统更新通知,如插入新设备通知、新软件安装通知等,和桌面应用的交互协作能力,可作为文件系统监控器和配置服务器。
DBUS包括对象、消息、连接和Dbus后台。对象是一个独立的处理消息的实体。对象有一个或多个接口,在每个接口有一个或多个的方法,每个方法实现了具体的消息处理。在一对一的通讯中,对象通过一个连接直接和另一个客户端应用程序连接起来。在多对多的通讯中,对象通过一个连接和DBUS后台进程连接起来。对象有一个路径用于指明该对象的存放位置,消息传递时通过该路径找到该对象。
客户端应用是一个桌面应用程序,是请求消息的发起者。客户端应用通过和自身的相连的一个连接将请求消息发送出去,也通过该连接接收回应的消息、错误消息、系统更新消息等。在一对一的通讯中,请求消息直接到达对象。在多对多的通讯中,请求消息先到达DBUS后台,DBUS后台将消息转发到目的对象。
连接是一个双向的消息传递通道。一个连接将对象和Dbus后台或客户端应用连接起来,连接支持非阻塞式的异步消息发送和阻塞式的同步消息发送。消息通过连接到达目的端后,连接会将挂起在该连接上的进程唤醒,由该进程将消息取走。每个连接都有一个唯一的名字和可选的其他多个名字,用于在多对多通讯时指明消息的发送者和接收者。
连接基于操作系统提供的通讯端口实现消息的交换,现在基于的通讯端口有三种,分别是UNIX的socket、TCP/IP、管道(调试时用)。通讯端口拥有一个地址,服务器在这个地址上监听,客户端则连接到这个地址上。
消息是DBUS的IPC机制中的一个信息传递媒介。调用者将调用的方法、方法的参数打包进一个消息,接收者将方法和参数从消息中解包出来,执行这个方法调用。执行完后,将结果打包进返回消息中,返回给调用者。消息有四种类型,分别是方法调用消息、结果返回消息、错误消息、信号消息。这里的信号消息是主动发送的事件,如新设备插入、文件更改的事件等。
DBUS后台是在多对多通讯时用来转发消息,管理连接的一个后台进程。每个DBUS后台都和多个连接关联,其内部维护了连接名和连接实体的映射关系。DBUS后台就象一个路由器,将从发送者连接得到的消息转发到由消息中的接收者连接名指定的接收者连接中。
DBUS后台有多个。有一个用于和系统通讯,监控系统更新事件,其类型为DBUS_BUS_SYSTEM的Dbus后台。每个桌面会话(session)有一个用于多个桌面应用之间相互通讯,其类型为DBUS_BUS_SESSION的DBUS后台。一般至少有两个DBUS后台,一个系统用,一个桌面会话用。系统用的Dbus后台只能处理系统的消息,桌面会话用的DBUS后台只能处理桌面会话应用的消息。
在客户端使用DBUS比较简单,首先,从DBUS_BUS_SESSION类型的DBUS后台获得一个连接,再从这个连接创建得到一个对象的代理,以后对对象的所有操作都将通过这个代理来完成。得到服务代理后,可以在应用程序的各个地方通过对象代理的方法使用函数向对象发出一个方法调用的消息。请求对象的服务,可以发送异步的方法(异步服务),也可以发送同步方法(同步服务),方法是同步还是异步有对象定义。
在服务端进程启动后,调用函数dbus_g_object_type_install_info将对象的安装信息结构告诉DBUS,随后,从DBUS_BUS_SESSION类型的DBUS获得一个连接,再从这个连接得到一个DBUS对象的代理。通过这个DBUS代理调用方法RequestName为这个连接得到一个命名,客户端应用可以使用这个名字将请求消息发送到连接。接着,服务器进程创建一个指定类型的对象(glib对象)。其中安装信息由XML文件,通过dbus-binding-tool转换成对象的头文件。
消息由消息头和消息体组成。消息头由消息的固有字段信息组成。消息体由一串字符串值组成。消息体的每个字符串值的意义由消息头中的描述指定,消息头的长度必须是8的倍数,相应的,消息体由8的倍数处开始。
DBUS方法调用的一般流程:
1)使用不同语言绑定的DBUS高层接口,都提供了一些代理对象,调用其他进程里面的远端对象就像是在本地进程中的调用一样。应用调用代理上的方法,代理将构造一个方法调用消息给远端的进程。
2)在DBUS的底层接口中,应用需要自己构造方法调用消息(method callmessage),而不能使用代理。
3)方法调用消息里面的内容有:目的进程的bus name,方法的名字,方法的参数,目的进程的对象路径,以及可选的接口名称。
4)方法调用消息是发送到bus daemon中的。
5)bus daemon查找目标的bus name,如果找到,就把这个方法发送到该进程中,否则,daemon会产生错误消息,作为应答消息给发送进程。
6)目标进程解开消息,在DBUS底层接口中,会立即调用方法,然后发送方法的应答消息给daemon。在DBUS高层接口中,会先检测对象路径,接口,方法名称,然后把它转换成对应的对象(如GObject,QT中的QObject等)的方法,然后再将应答结果转换成应答消息发给daemon。
7)bus daemon接受到应答消息,将把应答消息直接发给发出调用消息的进程。
8)应答消息中可以包容很多返回值,也可以标识一个错误发生,当使用绑定时,应答消息将转换为代理对象的返回值,或者进入异常。
bus daemon不对消息重新排序,如果发送了两条消息到同一个进程,他们将按照发送顺序接受到。接受进程并需要按照顺序发出应答消息,例如在多线程中处理这些消息,应答消息的发出是没有顺序的。消息都有一个序列号可以与应答消息进行配对。
进一步的,该方法还包括:
当主窗口上生成多个子窗口时,根据选取模式调整每个子窗口的大小和显示位置。
进一步的,该方法还包括:
当主窗口在界面上发生变化时,根据变化后的主窗口调整每个子窗口的大小和显示位置。
具体地,参照图4,首先进入QT系统,建立通信机制;然后进入QT系统的Web页面,Web页面通过js接口传递相关参数至播放器组管理子模块,相关参数包括视频地址和选取模式。
播放器组管理子模块先根据用户的选取模式创建主窗口,在主窗口上生成多个子窗口,实现初始化播放流等。其中,每个子进程对应相应的子窗口,当播放子进程启动后,新建一个Libvlc播放器,将视频显示Widget标识与播放地址发送给Libvlc播放器。
当主窗口上生成多个子窗口时,根据选取模式调整每个子窗口的大小和显示位置。
Web管理模块,用于当主窗口在界面上发生变化时,根据变化后的主窗口调整每个子窗口的大小和显示位置。其中,主窗口在界面上发生变化是指主窗口最大化、主窗口最小化、主窗口还原为标准窗口或对主窗口作拉伸处理。如果主窗口发生上述变化,则根据变化后的主窗口调整每个子窗口的大小和显示位置。
本发明实施例提供了多进程解码播放方法,应用于客户端,客户端上设置有主进程和多个子进程,子进程包括Libvlc播放器,包括:获取用户的选取模式;根据选取模式在主进程上创建主窗口;在主窗口上生成多个子窗口,其中,每个子进程对应相应的子窗口;将每个子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;通过Libvlc播放器将多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;显示多个解码后的视频流;采用多进程播放器进行播放,可以满足多路节目同时播放和多个播放器长时间播放,提高了独立性和稳定性。
实施例二:
图5为本发明实施例二提供的多进程解码播放装置示意图。
参照图5,应用于客户端,客户端上设置有主进程和多个子进程,子进程包括Libvlc播放器,该装置包括:
播放器组管理子模块1,用于获取用户的选取模式;根据选取模式在主进程上创建主窗口;在主窗口上生成多个子窗口,其中,每个子进程对应相应的子窗口;
播放器视频绘制子模块2,用于将每个子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;
Libvlc播放器3,用于将多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;显示多个解码后的视频流。
进一步的,Libvlc播放器3具体用于:
将多个绘制后的视频流输入给访问层,并通过访问层发送给流层;
将多个绘制后的视频流通过流层发送给解复用层;
解复用层对多个绘制后的视频流进行解复用,得到多个解复用的视频流;
将多个解复用的视频流发送给第一输出层,并通过第一输出层发送给解码层;
解码层对多个解复用的视频流进行解码,得到多个解码后的视频流。
进一步的,该装置还包括调整模块(未示出);
调整模块(未示出),用于当主窗口上生成多个子窗口时,根据选取模式调整每个子窗口的大小和显示位置。
本发明实施例提供了多进程解码播放装置,应用于客户端,客户端上设置有主进程和多个子进程,子进程包括Libvlc播放器,包括:获取用户的选取模式;根据选取模式在主进程上创建主窗口;在主窗口上生成多个子窗口,其中,每个子进程对应相应的子窗口;将每个子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;通过Libvlc播放器将多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;显示多个解码后的视频流;采用多进程播放器进行播放,可以满足多路节目同时播放和多个播放器长时间播放,提高了独立性和稳定性。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例提供的多进程解码播放方法的步骤。
本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,计算机可读介质上存储有计算机程序,计算机程序被处理器运行时执行上述实施例的多进程解码播放方法的步骤。
本发明实施例所提供的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种多进程解码播放方法,其特征在于,应用于客户端,所述客户端上设置有主进程和多个子进程,所述子进程包括Libvlc播放器,所述方法包括:
获取用户的选取模式;
根据所述选取模式在所述主进程上创建主窗口;
在所述主窗口上生成多个子窗口,其中,每个所述子进程对应相应的所述子窗口;
将每个所述子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;
通过所述Libvlc播放器将所述多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;
显示所述多个解码后的视频流;
所述子进程是接收所述主进程发送的视频显示Widget标识,通过Libvlc接口将所述视频显示Widget标识配置到所述Libvlc播放器中,通过所述Libvlc接口将播放地址配置到所述Libvlc播放器中。
2.根据权利要求1所述的多进程解码播放方法,其特征在于,所述通过所述Libvlc播放器将所述多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流,包括:
将所述多个绘制后的视频流输入给访问层,并通过访问层发送给流层;
将所述多个绘制后的视频流通过所述流层发送给解复用层;
所述解复用层对所述多个绘制后的视频流进行解复用,得到多个解复用的视频流;
将所述多个解复用的视频流发送给第一输出层,并通过第一输出层发送给解码层;
所述解码层对所述多个解复用的视频流进行解码,得到所述多个解码后的视频流。
3.根据权利要求1所述的多进程解码播放方法,其特征在于,所述方法还包括:
所述主进程通过DBUS将播放信息发送给所述子进程;
或者,
所述子进程通过所述DBUS将播放结果信息发送给所述主进程。
4.根据权利要求1所述的多进程解码播放方法,其特征在于,所述方法还包括:
当所述主窗口上生成多个所述子窗口时,根据所述选取模式调整每个所述子窗口的大小和显示位置。
5.根据权利要求4所述的多进程解码播放方法,其特征在于,所述方法还包括:
当所述主窗口在界面上发生变化时,根据变化后的主窗口调整每个所述子窗口的大小和所述显示位置。
6.一种多进程解码播放装置,其特征在于,应用于客户端,所述客户端上设置有主进程和多个子进程,所述子进程包括Libvlc播放器,所述装置包括:
播放器组管理子模块,用于获取用户的选取模式;根据所述选取模式在所述主进程上创建主窗口;在所述主窗口上生成多个子窗口,其中,每个所述子进程对应相应的所述子窗口;
播放器视频绘制子模块,用于将每个所述子窗口上对应的视频流进行绘制,得到多个绘制后的视频流;
所述Libvlc播放器,用于将所述多个绘制后的视频流进行解复用和解码,得到多个解码后的视频流;显示所述多个解码后的视频流;
所述子进程是接收所述主进程发送的视频显示Widget标识,通过Libvlc接口将所述视频显示Widget标识配置到所述Libvlc播放器中,通过所述Libvlc接口将播放地址配置到所述Libvlc播放器中。
7.根据权利要求6所述的多进程解码播放装置,其特征在于,所述Libvlc播放器具体用于:
将所述多个绘制后的视频流输入给访问层,并通过访问层发送给流层;
将所述多个绘制后的视频流通过所述流层发送给解复用层;
所述解复用层对所述多个绘制后的视频流进行解复用,得到多个解复用的视频流;
将所述多个解复用的视频流发送给第一输出层,并通过第一输出层发送给解码层;
所述解码层对所述多个解复用的视频流进行解码,得到所述多个解码后的视频流。
8.根据权利要求6所述的多进程解码播放装置,其特征在于,所述装置还包括调整模块;
所述调整模块,用于当所述主窗口上生成多个所述子窗口时,根据所述选取模式调整每个所述子窗口的大小和显示位置。
9.一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至5任一项所述的方法。
10.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111558855.2A CN114245192B (zh) | 2021-12-20 | 2021-12-20 | 多进程解码播放方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111558855.2A CN114245192B (zh) | 2021-12-20 | 2021-12-20 | 多进程解码播放方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114245192A CN114245192A (zh) | 2022-03-25 |
CN114245192B true CN114245192B (zh) | 2024-02-02 |
Family
ID=80758871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111558855.2A Active CN114245192B (zh) | 2021-12-20 | 2021-12-20 | 多进程解码播放方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114245192B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116320448B (zh) * | 2023-05-19 | 2023-07-14 | 北京麟卓信息科技有限公司 | 一种基于动态自适应分辨率的视频解码会话复用优化方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006110975A1 (en) * | 2005-04-22 | 2006-10-26 | Logovision Wireless Inc. | Multimedia system for mobile client platforms |
CN102780925A (zh) * | 2012-06-29 | 2012-11-14 | 吴李海 | 一种数字视频广播播放器 |
CN104331297A (zh) * | 2014-11-28 | 2015-02-04 | 广东威创视讯科技股份有限公司 | 一种渲染引擎的绘制方法及装置 |
CN106658030A (zh) * | 2016-12-30 | 2017-05-10 | 上海寰视网络科技有限公司 | 一种包含单路音频多路视频的复合视频的播放方法及设备 |
CN107484011A (zh) * | 2017-10-09 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 一种视频资源解码方法及装置 |
CN108289231A (zh) * | 2017-06-20 | 2018-07-17 | 深圳市佳创视讯技术股份有限公司 | 一种融合的全景播放器 |
CN108449634A (zh) * | 2018-03-27 | 2018-08-24 | 武汉斗鱼网络科技有限公司 | 一种多进程解码的播放方法、计算机设备和存储介质 |
CN109640153A (zh) * | 2018-12-12 | 2019-04-16 | 安徽科大国创软件科技有限公司 | 一种基于vlc的浏览器多窗口播放的方法及其装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10592417B2 (en) * | 2017-06-03 | 2020-03-17 | Vmware, Inc. | Video redirection in virtual desktop environments |
US10972511B2 (en) * | 2017-11-07 | 2021-04-06 | Adobe Inc. | Streaming relay for digital signage |
-
2021
- 2021-12-20 CN CN202111558855.2A patent/CN114245192B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006110975A1 (en) * | 2005-04-22 | 2006-10-26 | Logovision Wireless Inc. | Multimedia system for mobile client platforms |
CN102780925A (zh) * | 2012-06-29 | 2012-11-14 | 吴李海 | 一种数字视频广播播放器 |
CN104331297A (zh) * | 2014-11-28 | 2015-02-04 | 广东威创视讯科技股份有限公司 | 一种渲染引擎的绘制方法及装置 |
CN106658030A (zh) * | 2016-12-30 | 2017-05-10 | 上海寰视网络科技有限公司 | 一种包含单路音频多路视频的复合视频的播放方法及设备 |
CN108289231A (zh) * | 2017-06-20 | 2018-07-17 | 深圳市佳创视讯技术股份有限公司 | 一种融合的全景播放器 |
CN107484011A (zh) * | 2017-10-09 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 一种视频资源解码方法及装置 |
CN108449634A (zh) * | 2018-03-27 | 2018-08-24 | 武汉斗鱼网络科技有限公司 | 一种多进程解码的播放方法、计算机设备和存储介质 |
CN109640153A (zh) * | 2018-12-12 | 2019-04-16 | 安徽科大国创软件科技有限公司 | 一种基于vlc的浏览器多窗口播放的方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114245192A (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5646687B2 (ja) | オンデマンド無線サービスのための適応ストリーミング | |
US6941341B2 (en) | Method and apparatus for balancing distributed applications | |
JP4363847B2 (ja) | インタラクティブ・テレビ用のデジタル・テレビ・アプリケーション・プロトコル | |
CN104618437B (zh) | 一种与android终端设备系统设置接口的适配方法 | |
WO2000000898A1 (en) | Multi-user interaction for multimedia communication | |
WO2011044692A1 (en) | System and method for managing applications for multiple computing endpoints and multiple endpoint types | |
CA2352210A1 (en) | Session announcement for adaptive component configuration | |
CN115292020B (zh) | 一种数据处理方法、装置、设备以及介质 | |
CN114245192B (zh) | 多进程解码播放方法和装置 | |
CN100452894C (zh) | 在智能卡上实现无线增值业务的方法 | |
CN103155530B (zh) | 包括将脚本命令下载至用户终端的网络-电信融合 | |
CN112486620A (zh) | 跨进程离屏渲染方法、装置、电子设备及存储介质 | |
CN112954717A (zh) | 基于h5页面的家电配网方法和装置 | |
CN114302176B (zh) | 视频播放方法及装置 | |
CN108037924A (zh) | glibc和bionic的驱动自适配系统及方法 | |
Sadjadi et al. | Using transparent shaping and web services to support self-management of composite systems | |
CN100581243C (zh) | 数字电视动漫互动的实现方法 | |
de Alwis et al. | GT/SD: performance and simplicity in a groupware toolkit | |
CN113342317B (zh) | 基于Android组件化的开发多业务动态组合方法及系统 | |
JP2004530317A (ja) | Mpeg−4規格における相互作用の管理方法および設備 | |
CN116170610A (zh) | 用于实现数据传输的sdk及数据传输方法 | |
WO2015192671A1 (zh) | 一种电视界面交互方法、装置及机顶盒 | |
CN115437810A (zh) | 渲染任务处理方法、装置、设备和介质 | |
CN111475240B (zh) | 数据处理方法及系统 | |
CN108769087A (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 |