CN108449634B - 一种多进程解码的播放方法、计算机设备和存储介质 - Google Patents

一种多进程解码的播放方法、计算机设备和存储介质 Download PDF

Info

Publication number
CN108449634B
CN108449634B CN201810259925.6A CN201810259925A CN108449634B CN 108449634 B CN108449634 B CN 108449634B CN 201810259925 A CN201810259925 A CN 201810259925A CN 108449634 B CN108449634 B CN 108449634B
Authority
CN
China
Prior art keywords
video image
pcclient
decoding process
video
decoding
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
Application number
CN201810259925.6A
Other languages
English (en)
Other versions
CN108449634A (zh
Inventor
杨亮
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huaguang Imaging Technology Hefei Co ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810259925.6A priority Critical patent/CN108449634B/zh
Publication of CN108449634A publication Critical patent/CN108449634A/zh
Application granted granted Critical
Publication of CN108449634B publication Critical patent/CN108449634B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4305Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提供了一种多进程解码的播放方法、计算机设备和存储介质,该方法包括:每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。可见,本申请通过创建多个解码进程来处理播放器的多开,提高了同时播放多个视频的稳定性。

Description

一种多进程解码的播放方法、计算机设备和存储介质
技术领域
本发明属于计算机技术领域,尤其涉及一种多进程解码的播放方法、计算机设备和存储介质。
背景技术
不管是播放本地文件类型的播放器还是播放网络直播流类型的播放器,现有的技术都是采用一个进程进行音视频的解码,然后将解码后的音频进行播放,将解码后的视频图像进行绘制。
但是在一些使用情况下,需要实现播放器的多开,所谓播放器多开,就是在一个播放器中同时打开多个视频文件,或者多个网络视频流。随着视频文件或网络视频流的打开个数的增加,当达到单个进程的性能瓶颈时,将造成播放器的崩溃,即使播放器没有崩溃,也会使播放的效果越来越差,画面越来越卡顿。
可见,单进程解码的方式在实现播放器多开时存在稳定性差的问题。
发明内容
本申请实施例通过提供一种多进程解码的播放方法、计算机设备和存储介质,解决了现有技术中,单进程解码的方式在实现播放器多开时存在稳定性差的问题。
第一方面,本申请提供了一种多进程解码的播放方法,所述方法包括:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
可选的,所述视频图像为普通视频图像,所述通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令之前还包括:
通过所述解码进程RpcMediaDecoder将所述普通视频图像写入共享内存;
通过所述主控进程dy_pcclient从所述共享内存中获取所述普通视频图像。
可选的,所述视频图像为共享视频图像,所述共享视频图像可以跨进程访问,所述通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令之前还包括:
通过所述主控进程dy_pcclient直接获取所述解码进程RpcMediaDecoder中的所述共享视频图像。
可选的,所述通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像包括:
每播放一帧音频数据,通过所述解码进程RpcMediaDecoder,记录所述音频数据当前的时间戳;
通过所述解码进程RpcMediaDecoder获取所述视频图像的时间戳,其中,每获取一帧视频图像,记录所述视频图像的时间戳;
若所述视频图像的时间戳小于所述音频数据当前的时间戳,则通过所述解码进程RpcMediaDecoder删除当前获取的视频图像,以使得所述解码进程RpcMediaDecoder获取新的视频图像帧。
可选的,所述主控进程dy_pcclient与所述解码进程RpcMediaDecoder之间通过RPC进行通信。
第二方面,本申请提供了一种多进程解码的播放装置,其特征在于,所述装置包括:
创建模块,用于每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
解码模块,用于通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
视频播放模块,用于通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
音频播放模块,用于初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
同步模块,用于通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
可选的,所述视频图像为普通视频图像,所述装置还包括:
写入模块,用于通过所述解码进程RpcMediaDecoder将所述普通视频图像写入共享内存;
第一获取模块,用于通过所述主控进程dy_pcclient从所述共享内存中获取所述普通视频图像。
可选的,所述视频图像为共享视频图像,所述共享视频图像可以跨进程访问,所述装置还还包括:
第二获取模块,用于通过所述主控进程dy_pcclient直接获取所述解码进程RpcMediaDecoder中的所述共享视频图像。
第三方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
第四方面,本申请还提供了一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
本申请中,每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。可见,本申请通过创建多个解码进程来实现播放器的多开,提高了同时播放多个视频的稳定性,避免了单进程解码的方式在打开多个视频时可能出现的崩溃、卡顿等稳定性差的问题。
附图说明
图1为本申请实施例中提供的多进程解码的播放方法的流程图;
图2为本申请实施例中提供的多进程解码的播放装置的结构示意图;
图3为本申请实施例中提供的计算机可读存储介质的结构示意图;
图4为本申请实施例中提供的计算机设备的结构示意图。
具体实施方式
本申请实施例提供了一种多进程解码的播放方法、计算机设备和存储介质,可以通过创建多个解码进程来实现播放器的多开,使得多个视频的同时播放更加稳定,避免了单进程解码的方式在打开多个视频时可能出现的崩溃、卡顿等稳定性差的问题。
本申请实施例的技术方案为解决上述技术问题,总体思路如下:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
具体的,每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder,即通过创建多个解码进程RpcMediaDecoder来分别对每一个视频进行解码,每个视频的解码都是一个单独的进程;通过所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;通过解码进程RpcMediaDecoder得到视频图像和音频数据后,再分别通过主控进程dy_pcclient来播放视频图像,通过解码进程RpcMediaDecoder来播放音频数据,并由解码进程RpcMediaDecoder同步所述视频图像和所述音频数据,从而实现多进程解码中的多个视频文件或网络视频流的播放。可见,本申请通过创建多个解码进程RpcMediaDecoder来实现播放器的多开,提高了同时播放多个视频的稳定性,避免了单进程解码的方式在打开多个视频时可能出现的崩溃、卡顿等稳定性差的问题。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
此外,为了方便介绍本申请实施例中的技术方案,本申请实施例将基于Windows操作系统进行介绍,其中,主控进程命名为dy_pcclient,解码进程命名为RpcMediaDecoder,主控进程dy_pcclient与解码进程RpcMediaDecoder通过RPC(远程过程调用协议,RemoteProcedure Call Protocol)进行通信,并不用于限定本申请。应当理解,在一些可能的实现方式中,本申请实施例也可以基于其他不同的操作系统,主控进程dy_pcclient和解码进程RpcMediaDecoder也可以命名为其他名称,主控进程dy_pcclient和解码进程RpcMediaDecoder也可以通过其他不同的协议进行通信,此处不做太多限定。
实施例一:
请参阅图1,本实施例提供的一种多进程解码的播放方法包括以下步骤:
S101、每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
该视频包括但不限于本地的视频文件或者网络直播中的视频流,主控进程dy_pcclient为应用程序的主进程。举一个例子,应用程序可以为网络直播应用程序,则视频为网络直播的视频流,每打开一个网络直播视频流,主控进程dy_pcclient就建立一个对应的解码进程RpcMediaDecoder,以使得每一个网络直播视频流都有一个独立的解码进程RpcMediaDecoder进行音视频解码。
其中,通过主控进程dy_pcclient创建解码进程RpcMediaDecoder具体可以包括以下步骤:
a.分配主控进程dy_pcclient与解码进程RpcMediaDecoder的RPC连接地址;
具体的,RPC连接地址的分配方式可以采用当前主控进程dy_pcclient的进程id和要创建的解码进程RpcMediaDecoder索引为标识的,形如“pid_index”的字符串。
b.主控进程dy_pcclient创建解码进程RpcMediaDecoder;
具体的,分配好主控进程dy_pcclient与解码进程RpcMediaDecoder的RPC连接地址后,调用Windows操作系统的CreateProcess函数,创建一个编码进程RpcMediaDecoder,并将RPC连接地址通过命令行的方式传递给编码进程RpcMediaDecoder。
c.解码进程RpcMediaDecoder连接到主控进程dy_pcclient;
具体的,解码进程RpcMediaDecoder被创建后,解码进程RpcMediaDecoder在命令行中获取RPC连接地址,然后调用RpcStartService函数通过该RPC连接地址,连接到主控进程dy_pcclient,从而可以实现主控进程dy_pcclient与解码进程RpcMediaDecoder之间的通信。
S102、通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
主控进程dy_pcclient通过步骤S101创建解码进程RpcMediaDecoder后,主控进程dy_pcclient通知解码进程RpcMediaDecoder打开视频,具体可以包括:主控进程dy_pcclient向解码进程RpcMediaDecoder发送一个open_media的RPC命令,通知解码进程RpcMediaDecoder去打开一个视频文件或者网络视频流。
解码进程RpcMediaDecoder接收到来自主控进程dy_pcclient的open_media的命令后,打开对应的视频文件或者网络视频流,并向主控进程dy_pcclient发送视频打开的结果,具体可以包括:
a.解码进程RpcMediaDecodery调用MediaDecoder服务模块打开视频;
具体的,可以通过调用文件解码服务模块MediaDecoder中的open方法打开对应的视频文件或者网络视频流,并获取open方法的返回值result。
b.解码进程RpcMediaDecodery向主控进程dy_pcclient发送MDT_OpenResult的结果消息;
具体的,open方法返回result值后,解码进程RpcMediaDecodery获取到打开视频的结果result,并向主控进程dy_pcclient发送MDT_OpenResult的消息,将结果result返回给主控进程dy_pcclient。
c.主控进程dy_pcclient判断返回结果。
具体的,主控进程dy_pcclient接收到MDT_OpenResult的消息后,判断result值是否为1,如果result值为1,则表示编码进程RpcMediaDecoder打开视频成功,接下来可以进入到下一个步骤;如果result值不为1,即result为0,则代表视频打开失败,则主控进程dy_pcclient向解码进程RpcMediaDecoder发送stop命令,通知解码进程RpcMediaDecoder退出。
解码进程RpcMediaDecoder成功打开视频后,便可以循环的进行音视频的解码,从而得到每个视频的视频图像和音频数据。其中,解码进程RpcMediaDecoder可以通过调用getVideoFrame方法,每次从MediaDecoder解码服务模块中获取一帧视频图像。
S103、通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
具体的,该视频图像包括普通视频图像videoFrame和共享视频图像SharedVideoFrame,其中,共享视频图像可以跨进程访问。可以理解的是,为了与共享视频图像进行区分,不可以进行跨进程访问的视频图像在本申请实施例中命名为普通视频图像。根据视频图像的类型不同,主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令之前,主控进程dy_pcclient获取视频图像的方式也有所不同,具体可以包括以下两种方式:
方式一,若视频图像为普通视频图像,则通过主控进程dy_pcclient播放视频图像之前还包括:
a.通过解码进程RpcMediaDecoder将普通视频图像写入共享内存;
考虑到本地视频文件或网络视频流的图像清晰度的需要,例如1080p的视频流,如果采用RPC在解码进程RpcMediaDecoder与主控进程dy_pcclient之间传输音视频数据,会带来较大的性能消耗,故方式一采用共享内存的方法来解决这个问题,具体实现中,可以调用Windows的CreateFileMapping函数来创建共享内存。
具体的,解码进程RpcMediaDecoder获取到一个视频图像,通过调用SharedMemory(共享内存)的write方法,将该视频图像中的图像buffer写入到共享内存中。
b.通过主控进程dy_pcclient从共享内存中获取普通视频图像。
具体的,解码进程RpcMediaDecoder将videoFrame中的视频图像写入到系统共享内存之后,调用主控进程dy_pcclient的draw_video RPC函数,向主控进程dy_pcclient发送MDT_UpdateVideo的通知,指示主控进程dy_pcclient去更新视频图像,主控进程dy_pcclient接收到MDT_UpdateVideo的命令后,从共享内存中获取普通视频图像,然后调用update方法,对播放器上的图像进行更新。其中,主控进程dy_pcclient先将共享内存中的普通视频图像拷贝到一个临时的图像缓存videoFrame视频帧中,再将临时的videoFrame拷贝到要绘制的纹理资源中,待纹理资源更新完成之后,从而进行播放器图像的更新,最终完成视频图像的播放。
方式二,若视频图像为共享视频图像,则通过主控进程dy_pcclient播放视频图像之前还包括:
通过主控进程dy_pcclient直接获取解码进程RpcMediaDecoder中的共享视频图像。
具体的,当解码进程RpcMediaDecoder创建了N个共享视频图像SharedVideoFrame,对于这N个共享视频图像SharedVideoFrame,每一个共享视频图像SharedVideoFrame都是能够跨进程访问的,并且每一个共享视频图像SharedVideoFrame都有一个不同的名称,在本实施例中以共享视频图像名称为SHARED_VIDEO_FRAME_PROCESS_<pid>_INDEX_<idx>为例进行说明,不对本申请实施例进行限定。其中,pid为当前解码进程RpcMediaDecoder的进程id,通过该pid可以区分不同的解码进程RpcMediaDecoder所创建的共享视频图像SharedVideoFrame,idx为该共享视频图像SharedVideoFrame的索引,从1开始,一直到N,通过idx可以区分在同一个RpcMediaDecoder解码进程中所创建的SharedVideoFrame。当解码进程RpcMediaDecoder向主控进程dy_pcclient发送MDT_UpdateVideo绘制命令消息时,将方式一中的draw_video RPC函数替换为主控进程dy_pcclient中的draw_shared_video RPC函数,此过程中不需要再将SharedVideoFrame中的图像拷贝到临时的共享内存中,而只需在调用draw_shared_video RPC函数时,将当前的SharedVideoFrame的名称作为参数传递到draw_shared_video RPC函数中。当主控进程dy_pcclient接收到draw_shared_video RPC请求时,可以获取到RpcMediaDecoder解码进程中传递的SharedVideoFrame的名称参数,然后根据该SharedVideoFrame的名称,调用SharedMemory的open方法,将RpcMediaDecoder解码进程中创建的SharedVideoFrame打开,主控进程dy_pcclient从而获取到共享视频图像,并更新到纹理中,最终完成视频图像的播放。
由于共享视频图像支持跨进程访问,所以本实施例中的方式二相比方式一,不需要依赖于共享内存,从而可以减少主控进程dy_pcclient和编码进程RpcMediaDecoder对于视频图像的拷贝次数,降低播放器系统的CPU功耗,提高播放系统的性能。但是方式一具有程序实现相对简单的优势,在具体实现中,可以根据实际情况选用合适的方式,此处不做太多限定。
S104、初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
由于解码进程RpcMediaDecoder负责音频的播放,所以必须首先初始化音频设备。
具体的,当从MediaDecoder的回调通知中接收到MDT_AudioHeader的消息时,通过该消息中的audioSampleRate(音频采样率)参数、audioChannel(音频声道)参数、audioSampleFormat(音频采样格式)参数,调用initAudioDevice函数初始化音频播放设备。
S105、通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
编码进程RpcMediaDecoder除了负责音频的播放之外,还需要负责视频图像的及时通知,即编码进程RpcMediaDecoder需要同步音频数据和视频图像的播放。在本实施例中可以采用视频同步到音频的方法。
具体的,通过解码进程RpcMediaDecoder播放音频数据,其中,每播放一帧音频数据,记录所述音频数据当前的时间戳audioPts,通过所述解码进程RpcMediaDecoder获取所述视频图像的时间戳,其中,每获取一帧视频图像,记录所述视频图像的时间戳,例如,可以通过获取视频图像videoFrame中的pts属性来记录视频图像的时间戳;若所述视频图像的时间戳小于所述音频数据当前的时间戳,则表示该视频帧的播放时间已经小于音频时间,视频的播放滞后于音频,则通过所述解码进程RpcMediaDecoder删除当前获取的视频图像,具体可以通过调用MediaDecoder的popVideoFrame命令将该视频帧删除,以使得所述解码进程RpcMediaDecoder获取新的视频图像帧,从而实现音视频的同步。应当理解,上述方法仅为本申请实施例的一个示例,在一些可能的实现方式中,也可以采用音频同步到视频的方法,此处不做太多限定。
本申请实施例中,每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。可见,本申请通过创建多个解码进程来实现播放器的多开,提高了同时播放多个视频的稳定性,避免了单进程解码的方式在打开多个视频时可能出现的崩溃、卡顿等稳定性差的问题。
进一步的,本申请实施例还提供了共享视频图像的方式,可以减少主控进程dy_pcclient和编码进程RpcMediaDecoder对于视频图像的拷贝次数,降低播放器系统的CPU功耗,提高播放系统的性能。
基于同一发明构思,本申请提供了一种多进程解码的播放装置,详见图2,下面将结合图2对实施例二进行介绍。
实施例二:
请参阅图2,本实施例提供的多进程解码的播放装置包括:
创建模块201,用于每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
解码模块202,用于通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
视频播放模块203,用于通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
音频播放模块204,用于初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
同步模块205,用于通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
本申请实施例二提供的多进程解码的播放装置及本申请实施例一提供的多进程解码的播放方法属于同一构思,其具体实现过程详见说明书全文,此处不再赘述。
基于同一发明构思,本申请还提供了一种计算机可读存储介质,详见图3,下面将结合图3对实施例三进行介绍。
实施例三:
本实施例提供了一种计算机可读存储介质300,所述计算机可读存储介质300存储有计算机程序311,所述计算机程序311被处理器执行时实现以下步骤:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
在具体实施过程中,该计算机程序311被处理器执行时,可以实现实施例一中任一实施方式。
基于同一发明构思,本申请还提供了一种计算机设备,详见图4,下面将结合图4对实施例四进行介绍。
实施例四:
本申请提供了一种计算机设备400,包括处理器420、存储器410以及存储在存储器410上并可在处理器420上运行的计算机程序411,所述处理器420执行所述计算机程序411时实现以下步骤:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像。
由于本实施例所介绍的计算机设备400为实施本申请实施例一中多进程解码的播放方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的计算机设备400的具体实施方式以及其各种变化形式,所以在此对于该计算机设备400如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (6)

1.一种多进程解码的播放方法,其特征在于,所述方法包括:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像;
其中,所述视频图像为普通视频图像,所述通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令之前还包括:
通过所述解码进程RpcMediaDecoder将所述普通视频图像写入共享内存;
通过所述主控进程dy_pcclient从所述共享内存中获取所述普通视频图像;
所述视频图像为共享视频图像,所述共享视频图像可以跨进程访问,所述通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令之前还包括:
通过所述主控进程dy_pcclient直接获取所述解码进程RpcMediaDecoder中的所述共享视频图像;
其中,所述视频图像为共享视频图像,当解码进程RpcMediaDecoder向主控进程dy_pcclient发送MDT_UpdateVideo绘制命令消息时,调用主控进程dy_pcclient的draw_videoRPC函数,获取到解码进程RpcMediaDecoder中传递的所述共享视频图像SharedVideoFrame的名称参数;
根据所述共享视频图像SharedVideoFrame的名称参数,调用SharedMemory的open方法,将解码进程RpcMediaDecoder中创建的所述共享视频图像SharedVideoFrame打开。
2.如权利要求1所述的方法,其特征在于,所述通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像包括:
每播放一帧音频数据,通过所述解码进程RpcMediaDecoder,记录所述音频数据当前的时间戳;
通过所述解码进程RpcMediaDecoder获取所述视频图像的时间戳,其中,每获取一帧视频图像,记录所述视频图像的时间戳;
若所述视频图像的时间戳小于所述音频数据当前的时间戳,则通过所述解码进程RpcMediaDecoder删除当前获取的视频图像,以使得所述解码进程RpcMediaDecoder获取新的视频图像帧。
3.如权利要求1-2任一项所述的方法,其特征在于,所述主控进程dy_pcclient与所述解码进程RpcMediaDecoder之间通过RPC进行通信。
4.一种多进程解码的播放装置,其特征在于,所述装置包括:
创建模块,用于每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
解码模块,用于通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
视频播放模块,用于通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
音频播放模块,用于初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
同步模块,用于通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像;
所述视频图像为普通视频图像,所述装置还包括:
写入模块,用于通过所述解码进程RpcMediaDecoder将所述普通视频图像写入共享内存;
第一获取模块,用于通过所述主控进程dy_pcclient从所述共享内存中获取所述普通视频图像;
所述视频图像为共享视频图像,所述共享视频图像可以跨进程访问,所述装置还还包括:
第二获取模块,用于通过所述主控进程dy_pcclient直接获取所述解码进程RpcMediaDecoder中的所述共享视频图像;
所述视频图像为共享视频图像,当解码进程RpcMediaDecoder向主控进程dy_pcclient发送MDT_UpdateVideo绘制命令消息时,调用主控进程dy_pcclient的draw_video RPC函数,获取到解码进程RpcMediaDecoder中传递的所述共享视频图像SharedVideoFrame的名称参数;
根据所述共享视频图像SharedVideoFrame的名称参数,调用SharedMemory的open方法,将解码进程RpcMediaDecoder中创建的所述共享视频图像SharedVideoFrame打开。
5.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像;
其中,所述视频图像为普通视频图像,所述通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令之前还包括:
通过所述解码进程RpcMediaDecoder将所述普通视频图像写入共享内存;
通过所述主控进程dy_pcclient从所述共享内存中获取所述普通视频图像;
其中,所述视频图像为共享视频图像,所述共享视频图像可以跨进程访问,所述通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令之前还包括:
通过所述主控进程dy_pcclient直接获取所述解码进程RpcMediaDecoder中的所述共享视频图像;
其中,所述视频图像为共享视频图像,当解码进程RpcMediaDecoder向主控进程dy_pcclient发送MDT_UpdateVideo绘制命令消息时,调用主控进程dy_pcclient的draw_videoRPC函数,获取到解码进程RpcMediaDecoder中传递的所述共享视频图像SharedVideoFrame的名称参数;
根据所述共享视频图像SharedVideoFrame的名称参数,调用SharedMemory的open方法,将解码进程RpcMediaDecoder中创建的所述共享视频图像SharedVideoFrame打开。
6.一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
每打开一个视频,通过主控进程dy_pcclient创建对应的解码进程RpcMediaDecoder;
通过所述主控进程dy_pcclient向所述解码进程RpcMediaDecoder发送open_media命令,以通知所述解码进程RpcMediaDecoder进行音视频解码,从而得到每个视频的视频图像和音频数据;
通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令,以通知所述主控进程dy_pcclient播放所述视频图像;
初始化音频播放器,通过所述解码进程RpcMediaDecoder播放所述音频数据;
通过所述解码进程RpcMediaDecoder同步所述音频数据和所述视频图像;
其中,所述视频图像为普通视频图像,所述通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令之前还包括:
通过所述解码进程RpcMediaDecoder将所述普通视频图像写入共享内存;
通过所述主控进程dy_pcclient从所述共享内存中获取所述普通视频图像;
所述视频图像为共享视频图像,所述共享视频图像可以跨进程访问,所述通过所述解码进程RpcMediaDecoder向所述主控进程dy_pcclient发送MDT_UpdateVideo命令之前还包括:
通过所述主控进程dy_pcclient直接获取所述解码进程RpcMediaDecoder中的所述共享视频图像;
其中,所述视频图像为共享视频图像,当解码进程RpcMediaDecoder向主控进程dy_pcclient发送MDT_UpdateVideo绘制命令消息时,调用主控进程dy_pcclient的draw_videoRPC函数,获取到解码进程RpcMediaDecoder中传递的所述共享视频图像SharedVideoFrame的名称参数;
根据所述共享视频图像SharedVideoFrame的名称参数,调用SharedMemory的open方法,将解码进程RpcMediaDecoder中创建的所述共享视频图像SharedVideoFrame打开。
CN201810259925.6A 2018-03-27 2018-03-27 一种多进程解码的播放方法、计算机设备和存储介质 Active CN108449634B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810259925.6A CN108449634B (zh) 2018-03-27 2018-03-27 一种多进程解码的播放方法、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810259925.6A CN108449634B (zh) 2018-03-27 2018-03-27 一种多进程解码的播放方法、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN108449634A CN108449634A (zh) 2018-08-24
CN108449634B true CN108449634B (zh) 2021-04-23

Family

ID=63197033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810259925.6A Active CN108449634B (zh) 2018-03-27 2018-03-27 一种多进程解码的播放方法、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN108449634B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109788224B (zh) * 2019-03-26 2020-12-04 歌尔科技有限公司 视频录制方法、装置、网络摄像器及存储介质
CN110971760B (zh) * 2019-12-04 2021-02-26 Tcl移动通信科技(宁波)有限公司 网络通讯内容输出控制方法及装置、存储介质及终端设备
CN113596495B (zh) * 2021-07-28 2023-11-24 广州方硅信息技术有限公司 直播推流处理方法及其装置、设备与介质
CN114245192B (zh) * 2021-12-20 2024-02-02 北京数码视讯软件技术发展有限公司 多进程解码播放方法和装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101827242A (zh) * 2010-05-10 2010-09-08 南京邮电大学 一种基于网络电视机顶盒的可视电话系统实现方法
JP3179440U (ja) * 2012-03-19 2012-11-01 厦門森暉電子有限公司 シャッター型の3dコンバータボックス
CN106941598A (zh) * 2016-01-04 2017-07-11 中兴通讯股份有限公司 多画面码流合成方法、多画面码流合成控制方法及装置
CN107229530A (zh) * 2017-06-29 2017-10-03 上海联影医疗科技有限公司 进程间的通信方法、存储介质以及计算机设备
CN107484010A (zh) * 2017-10-09 2017-12-15 武汉斗鱼网络科技有限公司 一种视频资源解码方法及装置
CN107729132A (zh) * 2017-10-09 2018-02-23 武汉斗鱼网络科技有限公司 一种视频解码进程保护方法及装置
CN107566843B (zh) * 2017-10-09 2019-07-09 武汉斗鱼网络科技有限公司 一种视频解码进程保护方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007072130A (ja) * 2005-09-06 2007-03-22 Seiko Epson Corp 画像表示システム、画像表示装置、画像データ出力装置、画像処理プログラム、及びこの画像処理プログラムを記録した記録媒体
US8351447B2 (en) * 2007-04-20 2013-01-08 Sony Corporation Data communication system, cradle apparatus, server apparatus, data communication method and data communication program
US8468581B2 (en) * 2009-03-18 2013-06-18 Savemeeting, S.L. Method and system for the confidential recording, management and distribution of meetings by means of multiple electronic devices with remote storage
CN107484011B (zh) * 2017-10-09 2020-10-16 武汉斗鱼网络科技有限公司 一种视频资源解码方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101827242A (zh) * 2010-05-10 2010-09-08 南京邮电大学 一种基于网络电视机顶盒的可视电话系统实现方法
JP3179440U (ja) * 2012-03-19 2012-11-01 厦門森暉電子有限公司 シャッター型の3dコンバータボックス
CN106941598A (zh) * 2016-01-04 2017-07-11 中兴通讯股份有限公司 多画面码流合成方法、多画面码流合成控制方法及装置
CN107229530A (zh) * 2017-06-29 2017-10-03 上海联影医疗科技有限公司 进程间的通信方法、存储介质以及计算机设备
CN107484010A (zh) * 2017-10-09 2017-12-15 武汉斗鱼网络科技有限公司 一种视频资源解码方法及装置
CN107729132A (zh) * 2017-10-09 2018-02-23 武汉斗鱼网络科技有限公司 一种视频解码进程保护方法及装置
CN107566843B (zh) * 2017-10-09 2019-07-09 武汉斗鱼网络科技有限公司 一种视频解码进程保护方法及装置
CN107729132B (zh) * 2017-10-09 2019-10-25 武汉斗鱼网络科技有限公司 一种视频解码进程保护方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《嵌入式IPTV流媒体播放器关键技术研究》;李华;《中国优秀硕士学位论文全文数据库》;20080615;全文 *

Also Published As

Publication number Publication date
CN108449634A (zh) 2018-08-24

Similar Documents

Publication Publication Date Title
CN108449634B (zh) 一种多进程解码的播放方法、计算机设备和存储介质
CN107484011B (zh) 一种视频资源解码方法及装置
KR20180031547A (ko) 서버에서 멀티 비트 레이트 스트림 미디어를 적응적으로 제공하기 위한 방법 및 장치
US20160029079A1 (en) Method and Device for Playing and Processing a Video Based on a Virtual Desktop
CN107484010B (zh) 一种视频资源解码方法及装置
CN107920258B (zh) 一种数据处理方法及装置
CN112637661B (zh) 视频流的切换方法及装置、计算机存储介质、电子设备
US11356739B2 (en) Video playback method, terminal apparatus, and storage medium
US11115706B2 (en) Method, client, and terminal device for screen recording
CN112954433B (zh) 视频处理方法、装置、电子设备及存储介质
CN108882010A (zh) 一种多屏播放的方法及系统
KR101833942B1 (ko) 실시간 영상 합성을 위한 트랜스코더
CN113490047A (zh) 一种Android音视频播放方法
KR102163440B1 (ko) 그래픽 처리기를 이용한 비디오 디코딩에 대한 픽처 참조 제어
US10944982B1 (en) Rendition switch indicator
WO2018171567A1 (zh) 播放媒体流的方法、服务器及终端
US20200177932A1 (en) Systems and methods for optimizing a set-top box to retrieve missed content
JP2009171294A (ja) 映像配信システム、映像中継装置、及び映像中継方法
TW201435864A (zh) 同樣數位視訊和/或聲訊串流的複數疊合記錄之儲存方法及裝置
US10491948B2 (en) Service acquisition for special video streams
CN115802088B (zh) 一种多设备视频同步播放方法和装置
JP7406229B2 (ja) 配信システム、プログラム、およびコンピュータ読み取り可能な記憶媒体
US20230088496A1 (en) Method for video streaming
JP5899718B2 (ja) 情報処理システム、情報処理装置及び情報処理プログラム
KR101051182B1 (ko) 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240201

Address after: Room 301, 3rd Floor, Building A3, China Vision, No. 99 Longchuan Road, Baohe District, Hefei City, Anhui Province, 230000

Patentee after: Hefei Zhousong Information Technology Development Center (Limited Partnership)

Country or region after: China

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240428

Address after: 230000, 3rd floor, Building A3, China Vision, No. 99 Longchuan Road, Feihe Town, Baohe District, Hefei City, Anhui Province

Patentee after: Huaguang Imaging Technology Hefei Co.,Ltd.

Country or region after: China

Address before: Room 301, 3rd Floor, Building A3, China Vision, No. 99 Longchuan Road, Baohe District, Hefei City, Anhui Province, 230000

Patentee before: Hefei Zhousong Information Technology Development Center (Limited Partnership)

Country or region before: China