CN107484010A - 一种视频资源解码方法及装置 - Google Patents

一种视频资源解码方法及装置 Download PDF

Info

Publication number
CN107484010A
CN107484010A CN201710930120.5A CN201710930120A CN107484010A CN 107484010 A CN107484010 A CN 107484010A CN 201710930120 A CN201710930120 A CN 201710930120A CN 107484010 A CN107484010 A CN 107484010A
Authority
CN
China
Prior art keywords
decoding
decoding process
video resource
host
former
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
Application number
CN201710930120.5A
Other languages
English (en)
Other versions
CN107484010B (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.)
Wuhan Douyu Network Technology 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 CN201710930120.5A priority Critical patent/CN107484010B/zh
Publication of CN107484010A publication Critical patent/CN107484010A/zh
Application granted granted Critical
Publication of CN107484010B publication Critical patent/CN107484010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing 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
    • 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/434Disassembling 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/4342Demultiplexing isochronously with video sync, e.g. according to bit-parallel or bit-serial interface formats, as SDI
    • 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/439Processing of audio elementary streams
    • H04N21/4398Processing of audio elementary streams involving reformatting operations of audio signals
    • 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/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB

Abstract

本发明公开了一种视频资源解码方法及装置,该方法包括:在通过处于RPC通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中,监测主控进程与原解码进程之间的RPC通信连接是否断开;如果监测到主控进程与所述原解码进程之间的RPC通信连接已断开,创建新的解码进程并建立新的解码进程与主控进程之间的RPC通信连接;通过新的解码进程与主控进程协同对目标视频资源继续解码并播放。从而本发明解决了解码进程意外结束或崩溃导致播放器主程序视频播放停止的技术问题。

Description

一种视频资源解码方法及装置
技术领域
本发明涉及视频解码领域,尤其涉及一种视频资源解码方法及装置。
背景技术
现有技术中都是采用在一个进程中进行音视频解码,然后将解码后音视频进行播放。这种方案比较简单、快速。
但是如果要实现播放器多开(播放器多开就是在一个播放器中能够同时打开多个视频资源,比如:视频文件或者网络视频流)。随着多开视频的个数越来越多,那么该进程需要的系统资源,如CPU占用、内存消耗也就会越来越多。达到该进程的性能瓶颈时会使播放效果越来越差,画面越来越卡顿,甚至会造成播放器的崩溃。为了防止这种情况,则由一个独立的进程来解码视频流,以避免了画面效果差和卡顿的问题。
但是,如果解码进程意外结束或崩溃,播放器主程序的视频播放就会停止而无法恢复。
发明内容
本发明实施例通过提供一种视频资源解码方法及装置,解决了解码进程意外结束或崩溃导致播放器主程序视频播放停止的技术问题。
第一方面,本发明实施例提供一种视频资源解码方法,包括:
在通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中,监测所述主控进程与所述原解码进程之间的RPC通信连接是否断开;
如果监测到所述主控进程与所述原解码进程之间的RPC通信连接已断开,创建新的解码进程并建立所述新的解码进程与所述主控进程之间的RPC通信连接;
通过所述新的解码进程与所述主控进程协同对所述目标视频资源继续解码并播放。
可选的,在通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放之前,所述方法还包括:
获得针对所述目标视频资源的播放请求时,通过所述主控进程创建所述原解码进程,并建立所述主控进程与所述原解码进程之间的RPC通信连接;
通过所述主控进程注册针对所述主控进程与所述原解码进程之间的RPC通信连接的目标回调函数;
在所述主控进程与所述原解码进程之间的RPC通信连接打开时,使所述主控进程进入所述目标回调函数。
可选的,所述监测所述主控进程与所述原解码进程之间的RPC通信连接是否断开,包括:
在所述主控进程与所述原解码进程之间的RPC通信连接的内部进行检测用于支持所述主控进程与所述原解码进程之间RPC通信连接的命名管道是否断开;
如果断开,对所述目标回调函数的状态参数设置为零;
通过处于所述目标回调函数中的所述主控进程判断所述目标回调函数的状态参数当前是否为零;
如果为零,确定所述主控进程与所述原解码进程之间的RPC通信连接已断开。
可选的,所述创建新的解码进程并建立所述新的解码进程与所述主控进程之间的RPC通信连接,包括:
分配用于所述新的解码进程与所述主控进程之间连接的RPC连接地址;
通过所述主控进程发送用于通知所述控制进程创建所述新的解码进程的通知消息;
如果所述控制进程的错误处理模块接收到所述通知消息,通过所述控制进程创建所述新的解码进程;
通过所述主控进程将用于所述新的解码进程与所述主控进程之间连接的RPC连接地址传递给所述新的解码进程,以使得所述新的解码进程通过用于所述新的解码进程与所述主控进程之间连接的RPC连接地址连接到所述主控进程。
可选的,通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放,包括:
通过所述原解码进程对所述目标视频资源进行打开操作;
如果所述原解码进程对所述目标视频资源打开成功,则通过所述解码进程对打开成功后的所述目标视频资源解码;
所述目标视频资源的解码后视频图像通过所述主控进程进行绘制,所述目标视频资源的解码后音频通过所述原解码进程进行播放。
可选的,所述通过所述新的解码进程与所述主控进程协同对所述目标视频资源继续解码并播放,包括:
通过所述主控进程向所述新的解码进程发送所述目标视频资源的当前解码进度和存储位置标识;
由所述新的解码进程根据所述存储位置标识获取所述目标视频资源,并从目标视频资源的当前解码进度继续对所述目标视频资源解码;
将通过所述新的解码进程对所述目标视频资源继续解码得到的解码后视频图像写入由所述原解码进程所创建的系统共享内存中;
通过所述主控进程响应于来自所述新的解码进程的图像绘制命令,以从所述原解码进程所创建的系统共享内存中读取所述目标视频资源的后续解码后视频图像;
所述目标视频资源的后续解码后视频图像通过所述主控进程进行绘制,并由所述新的解码进程同步对所述目标视频资源的后续解码后音频进行播放。
可选的,由所述新的解码进程同步对所述目标视频资源的后续解码后音频进行播放的过程中,包括:
所述新的解码进程在对所述目标视频资源的解码后音频进行播放的过程中,记录所述目标视频资源的当前帧解码后音频播放时的音频时间戳;
获取所述新的解码进程从所述文件解码服务模块中获得所述目标视频资源的当前帧解码后视频图像时的视频时间戳;
判断所述视频时间戳是否小于等于所述音频时间戳;
如果是,从所述原解码进程所创建的系统共享内存中删除所述当前帧解码后视频图像。
第二方面,本发明实施例提供一种视频资源解码装置,包括:
连接监测单元,用于在通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中,监测所述主控进程与所述原解码进程之间的RPC通信连接是否断开;
进程恢复单元,用于如果监测到所述主控进程与所述原解码进程之间的RPC通信连接已断开,创建新的解码进程并建立所述新的解码进程与所述主控进程之间的RPC通信连接;
继续播放单元,用于通过所述新的解码进程与所述主控进程协同对所述目标视频资源继续解码并播放。
可选的,所述装置还包括:
进程创建单元,用于获得针对所述目标视频资源的播放请求时,通过所述主控进程创建所述原解码进程,并建立所述主控进程与所述原解码进程之间的RPC通信连接;
注册单元,用于通过所述主控进程注册针对所述主控进程与所述原解码进程之间的RPC通信连接的目标回调函数;
进入单元,用于在所述主控进程与所述原解码进程之间的RPC通信连接打开时,使所述主控进程进入所述目标回调函数。
可选的,所述连接监测单元,具体用于:
在所述主控进程与所述原解码进程之间的RPC通信连接的内部进行检测用于支持所述主控进程与所述原解码进程之间RPC通信连接的命名管道是否断开;
如果断开,对所述目标回调函数的状态参数设置为零;
通过处于所述目标回调函数中的所述主控进程判断所述目标回调函数的状态参数当前是否为零;
如果为零,确定所述主控进程与所述原解码进程之间的RPC通信连接已断开。
可选的,所述进程恢复单元,具体用于:
分配用于所述新的解码进程与所述主控进程之间连接的RPC连接地址;
通过所述主控进程发送用于通知所述控制进程创建所述新的解码进程的通知消息;
如果所述控制进程的错误处理模块接收到所述通知消息,通过所述控制进程创建所述新的解码进程;
通过所述主控进程将用于所述新的解码进程与所述主控进程之间连接的RPC连接地址传递给所述新的解码进程,以使得所述新的解码进程通过用于所述新的解码进程与所述主控进程之间连接的RPC连接地址连接到所述主控进程。
可选的,所述装置还包括第一协同播放单元,用于:
通过所述原解码进程对所述目标视频资源进行打开操作;
如果所述原解码进程对所述目标视频资源打开成功,则通过所述解码进程对打开成功后的所述目标视频资源解码;
所述目标视频资源的解码后视频图像通过所述主控进程进行绘制,所述目标视频资源的解码后音频通过所述原解码进程进行播放。
可选的,所述继续播放单元,具体用于:
通过所述主控进程向所述新的解码进程发送所述目标视频资源的当前解码进度和存储位置标识;
由所述新的解码进程根据所述存储位置标识获取所述目标视频资源,并从目标视频资源的当前解码进度继续对所述目标视频资源解码;
将通过所述新的解码进程对所述目标视频资源继续解码得到的解码后视频图像写入由所述原解码进程所创建的系统共享内存中;
通过所述主控进程响应于来自所述新的解码进程的图像绘制命令,以从所述原解码进程所创建的系统共享内存中读取所述目标视频资源的后续解码后视频图像;
所述目标视频资源的后续解码后视频图像通过所述主控进程进行绘制,并由所述新的解码进程同步对所述目标视频资源的后续解码后音频进行播放。
所述装置还包括:
音频时间戳记录单元,用于所述新的解码进程在对所述目标视频资源的解码后音频进行播放的过程中,记录所述目标视频资源的当前帧解码后音频播放时的音频时间戳;
视频时间戳获取单元,用于获取所述新的解码进程从所述文件解码服务模块中获得所述目标视频资源的当前帧解码后视频图像时的视频时间戳;
判断单元,用于判断所述视频时间戳是否小于等于所述音频时间戳;
删除单元,用于判断单元的判断结果为是,从所述原解码进程所创建的系统共享内存中删除所述当前帧解码后视频图像。
第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一实施方式所述的步骤。
第四方面,本发明实施例提供一种计算机设备,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现第二方面中任一实施方式所述的步骤。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中监测主控进程与原解码进程之间的RPC通信连接是否断开,若断开,则创建新的解码进程并建立新的解码进程与主控进程之间的RPC通信连接;通过新的解码进程与主控进程协同对目标视频资源继续解码并播放。从而在原来的解码进程在崩溃或者意外结束后,自动新建解码进程使得目标视频资源的解码和播放能够继续,解决了解码进程的崩溃、意外结束而导致的播放器主程序的视频播放停止的技术问题,进而提高了视频解码播放的稳定性、以及容错处理性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的视频资源解码方法的流程图;
图2为本发明实施例提供的视频资源解码装置的程序模块图;
图3为本发明实施例提供的计算机可读存储介质的结构示意图;
图4为本发明实施例提供的计算机设备的结构示意图。
具体实施方式
本发明实施例通过提供一种视频资源解码方法及装置,解决了解码进程意外结束或崩溃导致播放器主程序视频播放停止的技术问题,总体思路如下:
通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中监测主控进程与原解码进程之间的RPC通信连接是否断开,若断开,则创建新的解码进程并建立新的解码进程与主控进程之间的RPC通信连接;通过新的解码进程与主控进程协同对目标视频资源继续解码并播放。从而在原来的解码进程在崩溃或者意外结束后,自动新建解码进程使得目标视频资源的解码和播放能够继续,解决了解码进程的崩溃、意外结束而导致的播放器主程序的视频播放停止的技术问题,进而提高了视频解码播放的稳定性、以及容错处理性能。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
本发明实施例通过提供的视频资源解码方法,应用于视频播放器应用程序,针对视频播放器应用程序播放的视频资源可以为本地视频文件或者网络视频流。
参考图1所示,本实施例提供的视频资源解码方法包括如下步骤:
S101、在通过处于RPC(Remote Procedure Call,远程过程调用)通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中,监测主控进程与原解码进程之间的RPC通信连接是否断开。
在具体实施过程中,解码进程可以为RpcMediaDecoder,对应的,主控进程可以为dy_pcclient。通过主控进程检测与原解码进程之间的RPC通信连接是否断开以判别解码进程是否意外结束,从而判别是否需要创建新的解码进程。
具体的,为了监测主控进程与所述原解码进程之间的RPC通信连接是否断开,获得针对目标视频资源的播放请求时,通过主控进程创建原解码进程,并建立主控进程与原解码进程之间的RPC通信连接;通过主控进程注册针对主控进程与原解码进程之间的RPC通信连接的目标回调函数;在主控进程与原解码进程之间的RPC通信连接打开时,使主控进程进入目标回调函数。
对目标视频资源的打开过程,具体包括如下步骤:通过原解码进程对目标视频资源进行打开操作;如果原解码进程对目标视频资源打开成功,则通过解码进程对打开成功后的目标视频资源解码;目标视频资源的解码后视频图像通过主控进程进行绘制,目标视频资源的解码后音频通过原解码进程进行播放。
更具体来讲,对目标视频资源的打开可以通过如下流程实现:调用主控进程向原解码进程发送视频打开命令,通过原解码进程响应于视频打开命令,以对目标视频资源对应进行打开操作。在具体实施过程中,原解码进程可以调用open方法对目标视频资源进行打开操作,比如原解码进程调用文件解码服务模块(MediaDecoder)中的open方法打开目标视频资源,并获取open方法的返回值result作为目标视频资源的打开结果,由解码进程将对目标视频资源的打开结果返回给主控进程。
通过主控进程判断对目标视频资源的打开结果,具体判断返回值result为1或0,如果判断出返回值result为1,则表示目标视频资源打开成功,如果判断出返回值result为0,则表示目标视频资源打开失败。如果目标视频资源打开成功,则通过主控进程通知原解码进程对打开成功后的视频资源进行解码;如果目标视频资源打开失败,则通过主控进程通知原解码进程退出。
需要说明的是,主控进程为播放器应用程序的主控进程。
具体来讲,获得针对目标视频资源的播放请求时,主控进程通过调用系统CreateProcess函数创建了原解码进程。
具体来讲,分配用于原解码进程与主控进程之间连接的RPC连接地址;通过主控进程创建原解码进程,由主控进程将用于原解码进程与主控进程连接的RPC连接地址传递给已经创建的原解码进程;原解码进程通过用于原解码进程与主控进程之间连接的RPC连接地址连接到主控进程。从而实现了原解码进程与主控进程之间的RPC通信连接。
在具体实施过程中,RPC连接地址是采用主控进程的进程ID和将要创建的解码进程的进程索引为标识的。比如,形如“pid_index”的字符串。
主控进程在创建原解码进程时,创建RPC通信实例,在调用RpcCreateInstance函数创建RPC通信实例时,向该RpcCreateInstance函数提供一个结构为RpcCallbackFunctions的回调函数数组,并向该结构的onConnection字段提供一个函数指针,当主控进程与原解码进程之间的RPC通信连接对打开时,主控进程进入到目标回调函数onConnection中。
监测主控进程与原解码进程之间的RPC通信连接是否断开的一种实施方式如下:
在主控进程与原解码进程之间RPC通信连接的内部进行检测用于支持主控进程与原解码进程之间的RPC通信连接的命名管道是否断开;如果断开,对目标回调函数的状态参数设置为0;通过处于目标回调函数中的主控进程判断目标回调函数的状态参数当前是否为零;如果为零,确定主控进程与原解码进程之间的RPC通信连接已断开。
主控进程与原解码进程之间的RPC通信连接的底层依赖于Windows系统的命名管道协议,主控进程与解码进程进行命名管道通信对应的功能类为命名管道会话:NamedPipeSession。则对应的,监测主控进程与原解码进程之间的RPC通信连接是否断开的过程具体如下:
步骤a、如果主控进程与原解码进程之间RPC通信连接的内部检测到命名管道会话在读取数据过程中发生了错误,并且错误码为目标错误码:ERROR_BROKEN_PIPE时,确定解码进程与主控进程之间的命名管道通信处于断开状态。
步骤b、通过命名管道会话NamePipeSession检测到命名管道断开之后,则通过调用错误处理函数:OnError,使得错误处理函数中调用注册的目标回调函数,并将目标回调函数的状态参数:status设置为0,以作为RPC通信连接已断开的通知。
步骤c、通过进入到目标回调函数中的主控进程判断该目标回调函数的状态参数是否等于0;如果等于0,则主控进程确定与原解码进程之间的RPC通信连接已断开。
在步骤S101之后,接着执行步骤S102:如果监测到主控进程与原解码进程之间的RPC通信连接已断开,则创建新的解码进程并建立新的解码进程与主控进程之间的RPC通信连接。
具体的,通过主控进程发送信号通知给控制进程,由控制进程的创建新的解码进程。
分配用于连接新的解码进程与主控进程的RPC连接地址;通过主控进程发送用于通知控制进程创建新的解码进程的通知消息;如果控制进程的错误处理模块接收该通知消息,则通过控制进程创建新的解码进程;由主控进程将用于连接新的解码进程与主控进程的RPC连接地址传递给新的解码进程,使得新的解码进程通过用于连接新的解码进程与主控进程的RPC连接地址连接到控进程。
在步骤S102之后,接着执行步骤S103:通过新的解码进程与主控进程协同对目标视频资源继续解码并播放。
为了使得新的解码进程在投入后继续对目标视频资源解码的位置准确,避免错误的对其他视频资源解码,实现准确对接原解码进程处理到的经度进度,还提供了S102的一实施方式,包括如下步骤:
通过主控进程向新的解码进程发送目标视频资源的当前解码进度和存储位置标识;由新的解码进程根据存储位置标识获取到目标视频资源,并从目标视频资源的当前解码进度继续对目标视频资源解码;将通过新的解码进程对目标视频资源继续解码得到的解码后视频图像写入由原解码进程所创建的系统共享内存中;通过主控进程响应于来自新的解码进程的图像绘制命令,以从原解码进程所创建的系统共享内存中读取目标视频资源的后续解码后视频图像;目标视频资源的后续解码后视频图像通过主控进程进行绘制,并由新的解码进程同步对目标视频资源的后续解码后音频进行播放。
在同步由新的解码进程对目标视频资源的后续解码后音频进行播放的步骤中,为了控制解码后视频图像与解码后音频之间的同步,在S103中包括如下步骤:新的解码进程在对目标视频资源的解码后音频进行播放的过程中,记录目标视频资源的当前帧解码后音频播放时的音频时间戳;获取新的解码进程从文件解码服务模块中获得目标视频资源的当前帧解码后视频图像时的视频时间戳;判断视频时间戳是否小于等于音频时间戳;如果是,从原解码进程所创建的系统共享内存中删除当前帧解码后视频图像。
具体来讲,无论是新的解码进程还是原解码进程,在对解码后音频播放过程中,均控制解码后视频图像与解码后音频之间的同步。在本实施例中,采用解码后视频图像同步到解码后音频图像的方式保持音视频同步。每播放一帧解码后音频,记录下当前的音频时间戳audioPts。获取新的解码进程从文件解码服务模块中获得目标视频资源的当前帧解码后视频图像时的视频时间戳videoFrame.pts,如果视频时间戳的值小于等于音频时间戳的值,则表示该视频图像帧的播放时间已经小于音频帧的播放时间,则调用文件解码服务模块的相关命令将当前帧解码后视频图像删除,这样,主控进程从系统共享内存中读取时获取的是下一解码后视频图像帧,从而实现音视频同步。
在具体实施过程中,通过新的解码进程控制视频播放器中进行解码后音频的播放,因此,首先初始化音频播放器。具体初始化的参数包括:音频采样率、音频声道和音频采样格式。
当新的解码进程从文件解码服务模块(MediaDecoder)的回调通知中接收到播放器相关消息(MDT_AudioHeader)时,并调用initAudioDevice函数,以通过该播放器相关消息中的audioSampleRate(音频采样率)参数、audioChannel(音频声道)参数、audioSampleFormat(音频采样格式)参数,对音频播放器初始化。
需要说明的是,在原解码进程对解码后音频进程播放之前同样初始化音频话播放器。具体的,原解码进程初始化音频话播放器的过程参考对新的解码进程对音频播放器的初始化过程,为了说明书的简洁,本文不再赘述。
具体的,各个解码进程以RPC通信方式向主控进程发送图像绘制命令,通知主控进程解码后视频图像对进行绘制。
需要说明的是,对新的解码进程、原解码进程各自与主控进程协同对目标视频资源进行一帧视频图像的解码并播放的过程进行举例描述:
步骤1、调用解码进程从文件解码服务模块中获取当前帧视频图像;步骤2、将当前帧视频图像写入到解码进程创建的系统共享内存中;步骤3、解码进程向主控进程发送图像绘制命令,主控进程响应来自解码进程的图像绘制命令,从系统共享内存中获取当前帧视频图像,然后调用update方法对播放器上的图像进行更新为当前帧视频图像;步骤5、调用解码进程从文件解码服务模块中获取下一帧视频图像并返回步骤2。以此循环,从而实现对主控进程对目标视频资源进行循环解码并对视频播放器上的图像进行更新。
通过本发明实施例提供的技术方案,能够打开一个本体视频文件或者一个网络视频流时,主控进程就会创建一个与该主控进程之间为RPC通信连接的原解码进程,由该原解码进程负责对该视频文件或者网络视频流的音视频解码以及音频播放,并将解码后的视频图像写入到由原解码进程所创建的系统共享内存中。原解码进程向主控进程发送一个绘制命令,当主控进程接收到绘制命令后,就会依次从该视频文件或者网络视频流所对应的解码进程所创建的系统共享内存中读取每一帧视频图像,然后进行绘制。如果打开N个视频,那么主控进程就会创建N个原解码进程,N个原解码进程中的每个原解码进程负责各自的视频文件或者网络视频流的解码以及音频的播放,并把各自的解码后视频图像写入到各自所创建的系统共享内存中,N个原解码进程各自向主控进程发送图像绘制命令,由主控进程完成N个视频的视频图像绘制,在主控进程与N个解码进程中的至少一个解码进程之间的RPC通信连接中断时,则重新创建对应个数的新的解码进程,并建立与主控进程之间的RPC通信连接,以代替原解码进程进行继续解码和解码后音频的播放,以及保持与解码后视频图像的绘制之间的同步。
从而,每次打开一个视频资源,主控进程就会新创建一个原解码进程来负责该视频资源的解码以及解码后音频的播放。而不占用在先正在对其他视频资源进行解码和音频播放的解码进程,进一步避免了多开视频导致的原播放效果差以及播放卡顿的问题。
基于同一发明构思,本发明实施例提供一种视频资源解码装置,参考图2所示,包括:
连接监测单元201,用于在通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中,监测主控进程与原解码进程之间的RPC通信连接是否断开;
进程恢复单元202,用于如果监测到主控进程与原解码进程之间的RPC通信连接已断开,创建新的解码进程并建立新的解码进程与主控进程之间的RPC通信连接;
继续播放单元203,用于通过新的解码进程与主控进程协同对目标视频资源继续解码并播放。
可选的,该装置还包括:
进程创建单元,用于获得针对目标视频资源的播放请求时,通过主控进程创建原解码进程,并建立主控进程与原解码进程之间的RPC通信连接;
注册单元,用于通过主控进程注册针对主控进程与原解码进程之间的RPC通信连接的目标回调函数;
进入单元,用于在主控进程与原解码进程之间的RPC通信连接打开时,使主控进程进入目标回调函数。
可选的,连接监测单元201,具体用于:
在主控进程与原解码进程之间的RPC通信连接的内部进行检测用于支持主控进程与原解码进程之间RPC通信连接的命名管道是否断开;
如果断开,对目标回调函数的状态参数设置为零;
通过处于目标回调函数中的主控进程判断目标回调函数的状态参数当前是否为零;
如果为零,确定主控进程与原解码进程之间的RPC通信连接已断开。
可选的,进程恢复单元,具体用于:
分配用于新的解码进程与主控进程之间连接的RPC连接地址;
通过主控进程发送用于通知控制进程创建新的解码进程的通知消息;
如果控制进程的错误处理模块接收到通知消息,通过控制进程创建新的解码进程;
通过主控进程将用于新的解码进程与主控进程之间连接的RPC连接地址传递给新的解码进程,以使得新的解码进程通过用于新的解码进程与主控进程之间连接的RPC连接地址连接到主控进程。
可选的,该装置还包括第一协同播放单元,用于:
通过原解码进程对目标视频资源进行打开操作;
如果原解码进程对目标视频资源打开成功,则通过解码进程对打开成功后的目标视频资源解码;
目标视频资源的解码后视频图像通过主控进程进行绘制,目标视频资源的解码后音频通过原解码进程进行播放。
可选的,继续播放单元203,具体用于:
通过主控进程向新的解码进程发送目标视频资源的当前解码进度和存储位置标识;
由新的解码进程根据存储位置标识获取目标视频资源,并从目标视频资源的当前解码进度继续对目标视频资源解码;
将通过新的解码进程对目标视频资源继续解码得到的解码后视频图像写入由原解码进程所创建的系统共享内存中;
通过主控进程响应于来自新的解码进程的图像绘制命令,以从原解码进程所创建的系统共享内存中读取目标视频资源的后续解码后视频图像;
目标视频资源的后续解码后视频图像通过主控进程进行绘制,并由新的解码进程同步对目标视频资源的后续解码后音频进行播放。
该装置还包括:
音频时间戳记录单元,用于新的解码进程在对目标视频资源的解码后音频进行播放的过程中,记录目标视频资源的当前帧解码后音频播放时的音频时间戳;
视频时间戳获取单元,用于获取新的解码进程从文件解码服务模块中获得目标视频资源的当前帧解码后视频图像时的视频时间戳;
判断单元,用于判断视频时间戳是否小于等于音频时间戳;
删除单元,用于判断单元的判断结果为是,从原解码进程所创建的系统共享内存中删除当前帧解码后视频图像。
基于同一发明构思,参考图3所示,本发明实施例提供了一种计算机可读存储介质301,其上存储有计算机程序302,该程序302被处理器执行时实现前述模态对话框处理方法实施例中的任一实施方式的步骤。
基于同一发明构思,本发明实施例提供了一种计算机设备400,参考图4所示,包括存储器410、处理器420及存储在存储器410上并可在处理器420上运行的计算机程序411,处理器420执行程序411时实现前述模态对话框处理方法实施例中任一实施方式的步骤。
本发明提供的一个或多个实施例,至少实现了如下技术效果或优点:
通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中监测主控进程与原解码进程之间的RPC通信连接是否断开,若断开,则创建新的解码进程并建立新的解码进程与主控进程之间的RPC通信连接;通过新的解码进程与主控进程协同对目标视频资源继续解码并播放。从而在原来的解码进程在崩溃或者意外结束后,自动新建解码进程使得目标视频资源的解码和播放能够继续,解决了解码进程的崩溃、意外结束而导致的播放器主程序的视频播放停止的技术问题,进而提高了视频解码播放的稳定性、以及容错处理性能。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种视频资源解码方法,其特征在于,包括:
在通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中,监测所述主控进程与所述原解码进程之间的RPC通信连接是否断开;
如果监测到所述主控进程与所述原解码进程之间的RPC通信连接已断开,创建新的解码进程并建立所述新的解码进程与所述主控进程之间的RPC通信连接;
通过所述新的解码进程与所述主控进程协同对所述目标视频资源继续解码并播放。
2.如权利要求1所述的视频资源解码方法,其特征在于,在通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放之前,所述方法还包括:
获得针对所述目标视频资源的播放请求时,通过所述主控进程创建所述原解码进程,并建立所述主控进程与所述原解码进程之间的RPC通信连接;
通过所述主控进程注册针对所述主控进程与所述原解码进程之间的RPC通信连接的目标回调函数;
在所述主控进程与所述原解码进程之间的RPC通信连接打开时,使所述主控进程进入所述目标回调函数。
3.如权利要求2所述的视频资源解码方法,其特征在于,所述监测所述主控进程与所述原解码进程之间的RPC通信连接是否断开,包括:
在所述主控进程与所述原解码进程之间的RPC通信连接的内部进行检测用于支持所述主控进程与所述原解码进程之间RPC通信连接的命名管道是否断开;
如果断开,对所述目标回调函数的状态参数设置为零;
通过处于所述目标回调函数中的所述主控进程判断所述目标回调函数的状态参数当前是否为零;
如果为零,确定所述主控进程与所述原解码进程之间的RPC通信连接已断开。
4.如权利要求3所述的视频资源解码方法,其特征在于,所述创建新的解码进程并建立所述新的解码进程与所述主控进程之间的RPC通信连接,包括:
分配用于所述新的解码进程与所述主控进程之间连接的RPC连接地址;
通过所述主控进程发送用于通知所述控制进程创建所述新的解码进程的通知消息;
如果所述控制进程的错误处理模块接收到所述通知消息,通过所述控制进程创建所述新的解码进程;
通过所述主控进程将用于所述新的解码进程与所述主控进程之间连接的RPC连接地址传递给所述新的解码进程,以使得所述新的解码进程通过用于所述新的解码进程与所述主控进程之间连接的RPC连接地址连接到所述主控进程。
5.如权利要求2所述的视频资源解码方法,其特征在于,通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放,包括:
通过所述原解码进程对所述目标视频资源进行打开操作;
如果所述原解码进程对所述目标视频资源打开成功,则通过所述解码进程对打开成功后的所述目标视频资源解码;
所述目标视频资源的解码后视频图像通过所述主控进程进行绘制,所述目标视频资源的解码后音频通过所述原解码进程进行播放。
6.如权利要求2所述的视频资源解码方法,其特征在于,所述通过所述新的解码进程与所述主控进程协同对所述目标视频资源继续解码并播放,包括:
通过所述主控进程向所述新的解码进程发送所述目标视频资源的当前解码进度和存储位置标识;
由所述新的解码进程根据所述存储位置标识获取所述目标视频资源,并从目标视频资源的当前解码进度继续对所述目标视频资源解码;
将通过所述新的解码进程对所述目标视频资源继续解码得到的解码后视频图像写入由所述原解码进程所创建的系统共享内存中;
通过所述主控进程响应于来自所述新的解码进程的图像绘制命令,以从所述原解码进程所创建的系统共享内存中读取所述目标视频资源的后续解码后视频图像;
所述目标视频资源的后续解码后视频图像通过所述主控进程进行绘制,并由所述新的解码进程同步对所述目标视频资源的后续解码后音频进行播放。
7.如权利要求6所述的视频资源解码方法,其特征在于,由所述新的解码进程同步对所述目标视频资源的后续解码后音频进行播放的过程中,包括:
所述新的解码进程在对所述目标视频资源的解码后音频进行播放的过程中,记录所述目标视频资源的当前帧解码后音频播放时的音频时间戳;
获取所述新的解码进程从所述文件解码服务模块中获得所述目标视频资源的当前帧解码后视频图像时的视频时间戳;
判断所述视频时间戳是否小于等于所述音频时间戳;
如果是,从所述原解码进程所创建的系统共享内存中删除所述当前帧解码后视频图像。
8.一种视频资源解码装置,其特征在于,包括:
连接监测单元,用于在通过处于RPC远程过程调用通信连接的主控进程与原解码进程协同对同一目标视频资源进行解码并播放的过程中,监测所述主控进程与所述原解码进程之间的RPC通信连接是否断开;
进程恢复单元,用于如果监测到所述主控进程与所述原解码进程之间的RPC通信连接已断开,创建新的解码进程并建立所述新的解码进程与所述主控进程之间的RPC通信连接;
继续播放单元,用于通过所述新的解码进程与所述主控进程协同对所述目标视频资源继续解码并播放。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一权利要求所述的步骤。
10.一种计算机设备,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一权利要求所述的步骤。
CN201710930120.5A 2017-10-09 2017-10-09 一种视频资源解码方法及装置 Active CN107484010B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710930120.5A CN107484010B (zh) 2017-10-09 2017-10-09 一种视频资源解码方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710930120.5A CN107484010B (zh) 2017-10-09 2017-10-09 一种视频资源解码方法及装置

Publications (2)

Publication Number Publication Date
CN107484010A true CN107484010A (zh) 2017-12-15
CN107484010B CN107484010B (zh) 2020-03-17

Family

ID=60605088

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710930120.5A Active CN107484010B (zh) 2017-10-09 2017-10-09 一种视频资源解码方法及装置

Country Status (1)

Country Link
CN (1) CN107484010B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107484011A (zh) * 2017-10-09 2017-12-15 武汉斗鱼网络科技有限公司 一种视频资源解码方法及装置
CN108449634A (zh) * 2018-03-27 2018-08-24 武汉斗鱼网络科技有限公司 一种多进程解码的播放方法、计算机设备和存储介质
CN110324689A (zh) * 2019-07-08 2019-10-11 广州酷狗计算机科技有限公司 音视频同步播放的方法、装置、终端及存储介质
CN110691002A (zh) * 2018-07-05 2020-01-14 武汉斗鱼网络科技有限公司 一种中断检测方法及装置
CN111191249A (zh) * 2019-12-31 2020-05-22 奇安信科技集团股份有限公司 用于防护设备的防护方法、防护设备和可读存储介质
CN114237539A (zh) * 2021-12-20 2022-03-25 威创集团股份有限公司 一种数据显示方法、装置、设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801961A (zh) * 2012-08-21 2012-11-28 北京捷成世纪科技股份有限公司 一种基于多进程的音视频数据处理方法及系统
CN104601523A (zh) * 2013-10-31 2015-05-06 腾讯科技(深圳)有限公司 一种传输数据的方法及装置
WO2015107372A1 (en) * 2014-01-20 2015-07-23 British Broadcasting Corporation Method and apparatus for determining synchronisation of audio signals
CN105791939A (zh) * 2016-03-14 2016-07-20 北京捷思锐科技股份有限公司 音频与视频的同步方法及装置
CN105959481A (zh) * 2016-06-16 2016-09-21 广东欧珀移动通信有限公司 一种场景音效的控制方法、及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801961A (zh) * 2012-08-21 2012-11-28 北京捷成世纪科技股份有限公司 一种基于多进程的音视频数据处理方法及系统
CN104601523A (zh) * 2013-10-31 2015-05-06 腾讯科技(深圳)有限公司 一种传输数据的方法及装置
WO2015107372A1 (en) * 2014-01-20 2015-07-23 British Broadcasting Corporation Method and apparatus for determining synchronisation of audio signals
CN105791939A (zh) * 2016-03-14 2016-07-20 北京捷思锐科技股份有限公司 音频与视频的同步方法及装置
CN105959481A (zh) * 2016-06-16 2016-09-21 广东欧珀移动通信有限公司 一种场景音效的控制方法、及电子设备

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107484011A (zh) * 2017-10-09 2017-12-15 武汉斗鱼网络科技有限公司 一种视频资源解码方法及装置
CN107484011B (zh) * 2017-10-09 2020-10-16 武汉斗鱼网络科技有限公司 一种视频资源解码方法及装置
CN108449634A (zh) * 2018-03-27 2018-08-24 武汉斗鱼网络科技有限公司 一种多进程解码的播放方法、计算机设备和存储介质
CN108449634B (zh) * 2018-03-27 2021-04-23 武汉斗鱼网络科技有限公司 一种多进程解码的播放方法、计算机设备和存储介质
CN110691002A (zh) * 2018-07-05 2020-01-14 武汉斗鱼网络科技有限公司 一种中断检测方法及装置
CN110691002B (zh) * 2018-07-05 2021-07-23 武汉斗鱼网络科技有限公司 一种中断检测方法及装置
CN110324689A (zh) * 2019-07-08 2019-10-11 广州酷狗计算机科技有限公司 音视频同步播放的方法、装置、终端及存储介质
CN110324689B (zh) * 2019-07-08 2022-05-17 成都酷狗创业孵化器管理有限公司 音视频同步播放的方法、装置、终端及存储介质
CN111191249A (zh) * 2019-12-31 2020-05-22 奇安信科技集团股份有限公司 用于防护设备的防护方法、防护设备和可读存储介质
CN111191249B (zh) * 2019-12-31 2022-04-22 奇安信科技集团股份有限公司 用于防护设备的防护方法、防护设备和可读存储介质
CN114237539A (zh) * 2021-12-20 2022-03-25 威创集团股份有限公司 一种数据显示方法、装置、设备及可读存储介质

Also Published As

Publication number Publication date
CN107484010B (zh) 2020-03-17

Similar Documents

Publication Publication Date Title
CN107484010A (zh) 一种视频资源解码方法及装置
CN105306413B (zh) 一种信息发布方法和系统,视联网服务器和发布终端
CN107484011B (zh) 一种视频资源解码方法及装置
CN102158553A (zh) 用于远程桌面的播放多媒体文件的方法和装置
CN105959743A (zh) 一种视频广告播放方法、装置和服务器
CN107678801A (zh) 一种插件加载的方法和装置
CN107729132A (zh) 一种视频解码进程保护方法及装置
CN106686446A (zh) 内容投射方法及移动终端
US20030197720A1 (en) System and method for providing object-based video service
WO2018192183A1 (zh) 无线传屏中视频文件的处理方法及装置
CN107613312A (zh) 一种直播的方法和装置
CN108449634A (zh) 一种多进程解码的播放方法、计算机设备和存储介质
CN106416234A (zh) 通信设备、通信系统、通信管理系统、通信控制方法和计算机程序产品
US20120002718A1 (en) Method and apparatus for selecting video codec to be used between stations
CN105976164B (zh) 一种业务数据应急切换系统及处理方法
CN106599323A (zh) 在分布式文件系统中实现分布式管道的方法和装置
CN102316298A (zh) 一种实现音视频录制的方法
CN109787789A (zh) 软件升级的兼容性管理方法、装置及设备、存储介质
CN103731457A (zh) 一种业务处理方法和终端
US8385725B2 (en) Method of the apparatus for recording digital multimedia based on buffering states of the multimedia service
KR100834543B1 (ko) 실시간 프리젠테이션 파일 공유 방법 및 장치
US20100021126A1 (en) Audiovisual processing system, audiovisual processing apparatus, and audiovisual processing method
JP2003061013A (ja) 情報処理装置および方法、並びにプログラム
CN106358008B (zh) 一种避免重复呼叫接入的方法及会议电视终端设备
CN109218780B (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