CN109348279B - 一种推流方法、装置、设备及存储介质 - Google Patents
一种推流方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109348279B CN109348279B CN201811125921.5A CN201811125921A CN109348279B CN 109348279 B CN109348279 B CN 109348279B CN 201811125921 A CN201811125921 A CN 201811125921A CN 109348279 B CN109348279 B CN 109348279B
- Authority
- CN
- China
- Prior art keywords
- media data
- streaming media
- time stamp
- image frame
- buffer
- 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 48
- 239000000872 buffer Substances 0.000 claims abstract description 103
- 230000003139 buffering effect Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013502 data validation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/44—Processing 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/4402—Processing 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
- H04N21/440218—Processing 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 by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
-
- 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/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- 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/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种推流方法、装置、设备及存储介质,所述方法包括步骤:采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区;从所述缓存区获取流媒体数据发送至服务端。旨在解决现有推流技术中,推流中断又重新推流后,出现编码环节初始化失败,或者卡顿的问题。
Description
技术领域
本申请涉及互联网技术,特别涉及基于一种推流方法、装置、设备及存储介质。
背景技术
互联网直播或视频聊天***包括推流端、服务端及播放端,推流端用于将采集的流媒体数据经编码后,发送至服务端,以使服务端将获取的流媒体数据发送给对应的播放端播放,其中,推流端执行的“采集流媒体数据-编码-发送”的过程被称为“推流”。由于传统技术中,编码与发送环节一体化,当因网络环境或其他原因导致的发送环节中断时,需要初始化编码环节,此时,推流端需要重新执行“采集流媒体数据-编码-发送”的一整套流程,从而导致从推流中断到恢复期间采集的流媒体数据丢失,严重影响播放端的播放效果,例如播放端会出现卡顿及延时等现象;并且当网络不稳定时,会频繁出现推流断开又重连的情况,使得需要频繁初始化编码环节,对于某些特定机型的终端设备或者性能不佳的终端设备会出现编码环节初始化失败,或者卡顿现象,从而严重影响推流端所在终端设备的正常运行。
发明内容
有鉴于此,本申请提供一种推流方法、装置、设备及存储介质,旨在解决现有推流技术中,推流中断又重新推流后,出现编码环节初始化失败,或者卡顿的问题。
具体地,本申请是通过如下技术方案实现的:
在本申请的第一方面,提供一种推流方法,所述方法包括步骤:
采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区;
从所述缓存区获取流媒体数据发送至服务端。
在一些例子中,所述从所述缓存区获取流媒体数据发送至服务端,包括:
每次推流中断后,记录所述缓存区中目标图像帧原始的解码时间戳和/或显示时间戳,所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧;
若重新推流,根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳,得到以所述目标图像帧为首帧图像帧的新流媒体数据;
将所述新流媒体数据发送至服务端。
在一些例子中,所述根据所述记录的目标图像帧的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳;包括:
用所述缓存区流媒体数据中各图像帧原始的解码时间戳和/或显示时间戳减去所述根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,得到各图像帧更改后的解码时间戳和/或显示时间戳。
在一些例子中,所述缓存区包括:第一缓存区、第二缓存区及第三缓存区;
所述第一缓存区用于缓存所述目标图像帧原始的解码时间戳和/或显示时间戳;
第二缓存区用于缓存所述流媒体数据的头部数据;
第三缓存区用于缓存所述流媒体数据的内容数据。
在一些例子中,所述缓存区的最大容纳量包括:10秒-15秒的流媒体数据。
在一些例子中,所述缓存区的最大容纳量根据所在设备的性能确定,所述设备的性能包括:所述设备的硬件配置、所述设备的网络状态和/或所述设备当前的运行状态。
在一些例子中,所述缓存区以队列的方式缓存流媒体数据。
在本申请的第二方面,提供一种推流装置,所述装置包括:
缓存模块,用于采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区;
发送模块,用于从所述缓存区获取流媒体数据发送至服务端。
在一些例子中,所述装置还包括处理模块,所述处理模块用于每次推流中断后,记录所述缓存区中目标图像帧原始的解码时间戳和/或显示时间戳,所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧;若重新推流,根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳,得到以所述目标图像帧为首帧图像帧的新流媒体数据;所述新流媒体数据包括所述发送模块发送至服务端的流媒体数据。
在一些例子中,所述所述缓存区以队列的方式缓存流媒体数据。
在一些例子中,所述根据所述记录的目标图像帧的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳时,所述处理模块具体用于:
用所述缓存区流媒体数据中各图像帧原始的解码时间戳和/或显示时间戳减去所述根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,得到各图像帧更改后的解码时间戳和/或显示时间戳。
在一些例子中,所述缓存模块包括:第一缓存区、第二缓存区及第三缓存区;
所述第一缓存区用于缓存所述目标图像帧原始的解码时间戳和/或显示时间戳;
第二缓存区用于缓存所述流媒体数据的头部数据;
第三缓存区用于缓存所述流媒体数据的内容数据。
在一些例子中,所述缓存区的最大容纳量包括:10秒-15秒的流媒体数据。
在一些例子中,所述缓存区的最大容纳量根据所在设备的性能确定,所述设备的性能包括:所述设备的硬件配置、所述设备的网络状态和/或所述设备当前的运行状态。
在本申请的第三方面,提供一种终端设备,包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行如上述第一方面提出的任意一项方法所述的操作。
在本申请的第四方面,提供一种存储介质,其上存储有程序,该程序被处理器执行如上述第一方面提出的任意一项所述的方法的操作。
本申请改进了传统的推流方法,不再采用传统推流方法中编码环节与发送环节一体化的方式,而是在编码环节与发送环节之间中增加一缓存环节,将采集的流媒体数据编码后缓存至一缓存区,从缓存区中获取数据发送至服务端,以避免采集的流媒体数据丢失,使在推流中断又重新推流后,无需初始化编码环节,仅初始化发送环节,避免了推流端频繁初始化编码环节带来的性能消耗,有效地减少了推流的过程中播放端的卡顿或黑屏的现象,保证推流端所在终端设备的正常运行,以及减少播放端的播放延时的现象。
附图说明
图1为本申请实施例示例性示出的一种互联网直播或视频聊天***的示意图;
图2为本申请实施例提供的一种推流方法的流程图;
图3a为本申请实施例示例性示出的推流的示意图;
图3b为本申请实施例示例性示出的另一推流的示意图;
图3c为本申请实施例示例性示出的另一推流的示意图;
图4为本申请实施例提供的另一种推流方法的流程图;
图5为本申请实施例示例性示出的缓存区的结构示意图;
图6a是本申请一示例性实施例示出的一种推流装置的结构示意图;
图6b是本申请一示例性实施例示出的另一种推流装置的结构示意图;
图7是本申请一示例性实施例示出的一种终端设备的硬件结构示意图。
具体实施方式
以下将结合附图所示的具体实施方式对本申请进行详细描述。但这些实施方式并不限制本申请,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本申请的保护范围内。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
参照图1,本申请实施例示例性示出的一种互联网直播或视频聊天***的示意图,如图1,互联网直播或视频聊天***100包括推流端110、服务端120及播放端130,推流端110及播放端130分别被安装在终端设备111及131上,推流端110用于将采集的流媒体数据经编码后,发送至服务端120,以使服务端120将获取的流媒体数据发送给对应的播放端130播放,其中,推流端110执行的“采集流媒体数据-编码-发送”的过程被称为“推流”。若所述图1的***100为互联网直播***,则推流端110可以为主播客户端,主播客户端可以调用摄像头录制视频、拍摄照片、或/和通过屏幕捕捉等其他方式制作采集流媒体数据,播放端130为与主播客户端在同一直播间的观众客户端,服务端120用于提供互联网直播的后台服务,例如保存各主播客户端与观众客户端的对应关系,进行流媒体数据的分发(将获取的流媒体数据发送给对应的观众客户端)等。
但是,由于传统技术中,编码与发送环节一体化,当因网络环境或其他原因导致的发送环节中断时,需要初始化编码环节,此时,推流端需要重新执行“采集流媒体数据-编码-发送”的一整套流程,从而导致从推流中断到恢复期间采集的流媒体数据丢失,严重影响播放端的播放效果,例如播放端会出现卡顿及延时等现象;并且当网络不稳定时,会频繁出现推流断开又重连的情况,使得需要频繁初始化编码环节,对于某些特定机型的终端设备或者性能不佳的终端设备会出现编码环节初始化失败,或者卡顿现象,从而严重影响推流端所在终端设备的正常运行。
为了解决上述问题,本申请实施例提供一种推流方法、装置、终端设备及存储介质。
参照图2,为本申请实施例提供的一种推流方法的流程图,该方法的部分步骤如下:
S210:采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区;
S220:从所述缓存区获取流媒体数据发送至服务端。
本申请实施例提出的方法可以应用在终端设备中,终端设备可以是智能手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)等。该终端设备可以包括用于流媒体采集的摄像头。该终端设备上可以安装有应用程序,通过该应用程序可以实现“推流”,所述应用程序可以是:互联网直播软件或视频聊天软件等。本申请将所述方法的执行主体称为推流端。
在一个实施例中,可以是在获得采集到的流媒体数据后,编码模块可以对所述采集的流媒体数据进行编码,然后,编码模块将所述编码完成后的流媒体数据存入一缓存区(即存储区域)。发送模块可以访问该缓存区,从该存储区中读取存储区中的流媒体数据,然后向服务端推流。
本申请实施例提出的缓存区可以使用队列的形式存放缓存的流媒体数据,所述缓存区可以包括一个或多个队列。
以下用一个具体的实施例说明推流的流程。参照图3a,为本申请实施例示例性示出的推流的示意图,推流端300包括:采集模块310、编码模块320、缓存模块330及发送模块340。该推流***300的具体工作流程如下:开始推流时,用于编码的编码模块320初始化,并在初始化成功后,将采集模块310实时采集的流媒体数据经过编码模块320编码后,输入缓存模块330(所述缓存模块330可以以队列的形式缓存流媒体数据),并且启动发送模块340。发送模块340从缓存模块330中取出流媒体数据,并开始连接服务端350,在连接成功后,发送模块340不断从缓存模块330拿取流媒体数据发送至服务端。也就是说,编码模块320将经过编码的流媒体数据存入缓存模块330中,而不是直接输出到发送模块340中,相应地,发送模块340不从编码模块320中直接获取编码后的流媒体数据,而是从缓存模块330中获取流媒体数据,从而隔绝了编码模块320和发送模块330的直接联系。当出现推流中断(可能是发送模块340与服务端350的连接出现中断)时,由于编码模块320的输出不依赖发送模块340,而是照常地将编码后的流媒体数据存入缓存模块330,因此,编码模块320不需要重新初始化,而重启发送模块340后,发送模块340从缓存模块330获取图像帧,然后重新连接服务端350,在连接成功后(即重新开始推流),不断从缓存模块获取流媒体数据发送至服务端350。本申请实施例提出的“推流中断”可以是将流媒体数据发送至服务端时,出现的中断情况(这些情况可能由网络抖动引起)。在推流中断时,推流端会接收到推流中断指令。
在一些例子中,参照图3b,采集模块可以包括视频采集模块311及音频采集模块312,编码模块也包括视频编码模块321及音频编码模块322,以分别进行音视频的采集和编码,以提高编码效率。
参照图3c,一些例子中,发送模块340可以包括:数据效验单元341、合流和丢帧处理单元342、待发送数据缓存单元343及发送单元344,以配合缓存模块330,通过双缓存架构减少流媒体数据因网络状况导致的丢失,更好地实现推流。
可以理解,上述图3a、图3b及图3c任意组合得到新的实施例也是本申请保护的范围。还需要说明的是,上述图3a、图3b及图3c所述的缓存模块330可以等同为所述图2中提出缓存区。
本申请改进了传统的推流方法,不再采用传统推流方法中编码环节与发送环节一体化的方式,而是在编码环节与发送环节之间中增加一缓存环节,将采集的流媒体数据编码后缓存至一缓存区,从缓存区中获取数据发送至服务端,以避免采集的流媒体数据丢失,使在推流中断又重新推流后,无需初始化编码环节,仅初始化发送环节,避免了推流端频繁初始化编码环节带来的性能消耗,有效地减少了推流的过程中播放端的卡顿或黑屏的现象,保证推流端所在终端设备的正常运行,以及减少播放端的播放延时的现象。
在一些例子中,本申请实施例提出的缓存区的最大容纳量包括:10秒-15秒的流媒体数据。一个例子中,所述缓存区的最大容纳量为10秒的流媒体数据;一个例子中,所述缓存区的最大容纳量为12秒的流媒体数据;一个例子中,所述缓存区的最大容纳量为15秒的流媒体数据。上述缓存区的最大容纳量通过大量实验得到,在保证避免推流中断后编码环节初始化失败,或者卡顿问题前提下,尽可能降低缓存区对的内存占用。
在一些例子中,所述缓存区的最大容纳量根据所在设备的性能确定,所述设备的性能可以包括:所述设备的硬件配置、所述设备的网络状态和/或所述设备当前的运行状态。例如:设备的硬件配置较高时,可以设置更大的缓存区的最大容纳量,若设备的硬件配置较低时,可以设置较小的缓存区的最大容纳量,以减少设备的负担。当设备的网络状况不好时,可以设置更大的缓存区的最大容纳量,以应对频繁断网带来的丢帧;当设备的网络状况较好时,可以设置较小的缓存区的最大容纳量,以减少对内存的占用。当然还可以根据其他设备性能确定缓存区的最大容纳量。可以理解,一些例子中,可以综合考虑多个设备的性能确定缓存区的最大容纳量。
在一些例子中,若推流中断,重新开始推流后,从缓存区获取以目标图像帧为首帧图像帧的新流媒体数据,发送至服务端,所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧。本申请实施例提出的“关键帧”指的是流媒体数据中最关键的图像帧,例如I帧。例如:在13分14秒推流中断,缓存区缓存的未成功发送给服务端的图像帧中,缓存时间最早的关键图像帧(目标图像帧)是13分15秒,那么可以以13分15秒的图像帧为首帧,得到新流媒体数据,发送至服务端。
在一些例子中,参照图4,为本申请另一推流方法的流程图,所述方法包括步骤:
S410:采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区。
S420:每次推流中断后,可以记录所述缓存区中目标图像帧原始的解码时间戳和/或显示时间戳。
所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧。
S430:若重新推流,根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳,得到以所述目标图像帧为首帧图像帧的新流媒体数据。
S440:将所述新流媒体数据发送至服务端。
本申请实施例提出的所述解码时间戳(Decode Time Stamp,DTS):主要是标识流媒体数据送入解码器中进行解码的时间;显示时间戳(Presentation Time Stamp,PTS):主要用于度量解码后的流媒体数据中图像帧被显示的时间。
在一些例子中,步骤S430中提出的“根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳。”具体可以是用所述缓存区流媒体数据中各图像帧原始的解码时间戳和/或显示时间戳减去所述根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,得到各图像帧更改后的解码时间戳和/或显示时间戳。例如:在13分14秒推流断开,缓存区缓存的未成功发送给服务端的图像帧中,缓存时间最早的关键图像帧(目标图像帧)的原始DTS和PTS均是13分15秒;根据该目标图像帧的原始DTS和PTS,更改缓存区流媒体数据中各图像帧的DTS和/或PTS,如缓存区图像帧a的DTS和PTS都为13分20秒,图像帧a更改后的DTS和PTS为:13分20秒-13分15秒,即为00分05秒。
以下用一个具体的实施例说明图4所述的推流的流程。结合图3a,为本申请实施例示例性示出的推流的示意图,推流***300的具体工作流程如下:开始推流时,用于编码的编码模块320初始化,并在初始化成功后,在缓存模块330上记录流媒体数据的视频头及音频头,并把流媒体数据的PTS和DTS设为0,然后将采集模块310实时采集的流媒体数据经过编码模块320编码后,输入缓存模块330(所述缓存模块330可以以队列的形式缓存流媒体数据),并且启动发送模块340。发送模块340从缓存模块330中取出流媒体数据的第一帧关键帧以及记录的所述视频头和音频头,开始连接服务端350,在连接成功后,发送模块340不断从缓存模块330拿取流媒体数据发送至服务端。当出现推流中断(可能是发送模块340与服务端350的连接出现中断)时,重启发送模块340,发送模块340从缓存模块330获取目标图像帧,并记录该目标图像帧的原始DTS和/或PTS,将该目标图像帧的DTS和/或PTS修改为0,然后重新连接服务端350,在连接成功后(即重新开始推流),不断从缓存模块获取流媒体数据,并且根据目标图像帧的原始DTS和/或PTS,更改各图像帧的DTS和/或PTS,经过图像帧DTS和/或PTS的更改后,可以得到以目标图像帧为首帧的新流媒体数据,发送模块340可以在实时更改后将新流媒体数据发送至服务端350。当然,图4所述的方法也可以应用在如图3b和/或3c所述的推流***。
图4所述的实施例改进了传统的推流方法,在每次推流中断后,记录所述缓存区中目标图像帧原始的解码时间戳和/或显示时间戳,所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧;并接收到在重新推流的指令后,根据所述记录的目标图像帧原始的解码时间戳和/或当前显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳,得到以所述目标图像帧为第一帧图像帧的新流媒体数据;将所述新流媒体数据发送至服务端,使在推流中断又重新推流后,无需初始化编码环节,仅初始化发送环节,避免了推流端频繁初始化编码环节带来的性能消耗,保证了推流的过程中,推流端所在终端设备的正常运行,以及减少播放端的播放延时的现象。
可以理解,图4所述的方法的一些步骤的具体实施方式可以参照前述实施例,此处不再赘述。
在一些例子中,参照图5,本申请实施例提出的缓存区500可以包括:第一缓存区510、第二缓存区520及第三缓存区530;
该第一缓存区510用于缓存所述目标图像帧原始的解码时间戳和/或显示时间戳;其中,所述目标图像帧原始的解码时间戳和/或显示时间戳随着每次重新推流而更新。
第二缓存区520用于缓存所述流媒体数据的头部数据。
第三缓存区530用于缓存所述流媒体数据的内容数据。所述流媒体数据的内容数据包括音频数据和视频数据。
此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。
与前述图像处理的方法的实施例相对应,本申请还提供了图像处理的装置及图像设备的实施例。
参见图6a,为本申请一种推流装置600的一个实施例框图,该装置包括:
缓存模块610,用于采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区;
发送模块620,用于从所述缓存区获取流媒体数据发送至服务端。
在一些例子中,参照图6b,推流装置600还包括处理模块630,所述处理模块630用于每次推流中断后,记录所述缓存区中目标图像帧原始的解码时间戳和/或显示时间戳,所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧;若重新推流,根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳,得到以所述目标图像帧为首帧图像帧的新流媒体数据;所述新流媒体数据包括所述发送模块发送至服务端的流媒体数据。
在一些例子中,所述缓存区以队列的方式缓存流媒体数据。
在一些例子中,所述根据所述记录的目标图像帧的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳时,所述处理模块630具体用于:
用所述缓存区流媒体数据中各图像帧原始的解码时间戳和/或显示时间戳减去所述根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,得到各图像帧更改后的解码时间戳和/或显示时间戳。
在一些例子中,所述缓存区的最大容纳量包括:10秒-15秒的流媒体数据。
在一些例子中,所述缓存区的最大容纳量根据所在设备的性能确定,所述设备的性能包括:所述设备的硬件配置、所述设备的网络状态和/或所述设备当前的运行状态。
参见图7所示,对应于上述方法,本申请同时提供一种终端设备。如图7所示,该设备可以包括处理器701以及机器可读存储介质702,其中,处理器701和机器可读存储介质702通常借由内部总线703相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口704,以能够与其他设备或者部件进行通信。进一步地,机器可读存储介质702上存储有推流的控制逻辑705,该控制逻辑705从功能上划分的逻辑模块,可以是图5所示的推流装置的结构。所述处理器701用于执行如下步骤:
采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区;
从所述缓存区获取流媒体数据发送至服务端。
在一些例子中,所述从所述缓存区获取流媒体数据发送至服务端,处理器701具体用于执行:
每次推流中断后,记录所述缓存区中目标图像帧原始的解码时间戳和/或显示时间戳,所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧;
若重新推流,根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳,得到以所述目标图像帧为首帧图像帧的新流媒体数据;
将所述新流媒体数据发送至服务端。
在一些例子中,所述所述缓存区以队列的方式缓存流媒体数据。
在一些例子中,所述根据所述记录的目标图像帧的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳时,所述处理模块具体用于:
用所述缓存区流媒体数据中各图像帧原始的解码时间戳和/或显示时间戳减去所述根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,得到各图像帧更改后的解码时间戳和/或显示时间戳。
在一些例子中,所述缓存区的最大容纳量包括:10秒-15秒的流媒体数据。
在一些例子中,所述缓存区的最大容纳量根据所在设备的性能确定,所述设备的性能包括:所述设备的硬件配置、所述设备的网络状态和/或所述设备当前的运行状态。
在不同的例子中,所述图7所述的图像设备的机器可读存储介质702可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (9)
1.一种推流方法,其特征在于,所述方法包括步骤:
采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区;
从所述缓存区获取流媒体数据发送至服务端;
其中,所述从所述缓存区获取流媒体数据发送至服务端,包括:
每次推流中断后,记录所述缓存区中目标图像帧原始的解码时间戳和/或显示时间戳,所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧;
若重新推流,根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳,得到以所述目标图像帧为首帧图像帧的新流媒体数据;
将所述新流媒体数据发送至服务端。
2.根据权利要求1所述的方法,其特征在于,所述根据所述记录的目标图像帧的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳;包括:
用所述缓存区流媒体数据中各图像帧原始的解码时间戳和/或显示时间戳减去所述根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,得到各图像帧更改后的解码时间戳和/或显示时间戳。
3.根据权利要求1所述的方法,其特征在于,所述缓存区包括:第一缓存区、第二缓存区及第三缓存区;
所述第一缓存区用于缓存所述目标图像帧原始的解码时间戳和/或显示时间戳;
第二缓存区用于缓存所述流媒体数据的头部数据;
第三缓存区用于缓存所述流媒体数据的内容数据。
4.根据权利要求1所述的方法,其特征在于,所述缓存区的最大容纳量包括:10秒-15秒的流媒体数据。
5.根据权利要求1所述的方法,其特征在于,所述缓存区的最大容纳量根据所在设备的性能确定,所述设备的性能包括:所述设备的硬件配置、所述设备的网络状态和/或所述设备当前的运行状态。
6.根据权利要求1所述的方法,其特征在于,所述缓存区以队列的方式缓存流媒体数据。
7.一种推流装置,其特征在于,所述装置包括:
缓存模块,用于采集流媒体数据,对所述采集的流媒体数据编码后缓存至一缓存区;
处理模块,用于每次推流中断后,记录所述缓存区中目标图像帧原始的解码时间戳和/或显示时间戳,所述目标图像帧为未发送给服务端的图像帧中缓存时间最早的一关键帧;若重新推流,根据所述记录的目标图像帧原始的解码时间戳和/或显示时间戳,更改所述缓存区流媒体数据中各图像帧的解码时间戳和/或显示时间戳,得到以所述目标图像帧为首帧图像帧的新流媒体数据;
发送模块,用于从所述缓存区获取所述新流媒体数据发送至服务端。
8.一种终端设备,其特征在于,包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行如权利要求1至6任意一项方法所述的操作。
9.一种存储介质,其上存储有程序,其特征在于,该程序被处理器执行如权利要求1至6任意一项所述的方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811125921.5A CN109348279B (zh) | 2018-09-26 | 2018-09-26 | 一种推流方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811125921.5A CN109348279B (zh) | 2018-09-26 | 2018-09-26 | 一种推流方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109348279A CN109348279A (zh) | 2019-02-15 |
CN109348279B true CN109348279B (zh) | 2021-03-23 |
Family
ID=65307044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811125921.5A Active CN109348279B (zh) | 2018-09-26 | 2018-09-26 | 一种推流方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109348279B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111010603A (zh) * | 2019-12-18 | 2020-04-14 | 浙江大华技术股份有限公司 | 一种视频缓存转发处理方法及装置 |
CN112969075A (zh) * | 2021-01-29 | 2021-06-15 | 北京字节跳动网络技术有限公司 | 直播过程中的补帧方法、装置及计算设备 |
US11610608B1 (en) * | 2021-02-10 | 2023-03-21 | Projectagram LLC | Film recording systems for personalized images |
CN114501052B (zh) * | 2022-01-26 | 2022-10-25 | 腾讯科技(深圳)有限公司 | 直播数据处理方法、云平台、计算机设备和存储介质 |
CN115499673B (zh) * | 2022-08-30 | 2023-10-20 | 深圳市思为软件技术有限公司 | 一种直播方法及装置 |
CN115623252B (zh) * | 2022-12-16 | 2023-03-10 | 深圳市永兴元科技股份有限公司 | 在线考试自动检测重启推流控制方法、装置及存储介质 |
CN117221617A (zh) * | 2023-09-28 | 2023-12-12 | 杭州星犀科技有限公司 | 直播推流***、方法及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857730A (zh) * | 2012-08-23 | 2013-01-02 | 苏州阔地网络科技有限公司 | 一种缓存帧数据的方法及*** |
CN104935958A (zh) * | 2015-06-24 | 2015-09-23 | 青岛科技大学 | 一种实时视频传输装置及方法 |
CN107426629A (zh) * | 2017-06-19 | 2017-12-01 | 网宿科技股份有限公司 | 一种流媒体文件处理方法及直播*** |
CN108174242A (zh) * | 2018-01-09 | 2018-06-15 | 武汉斗鱼网络科技有限公司 | 直播数据复用方法、装置、存储介质及设备 |
-
2018
- 2018-09-26 CN CN201811125921.5A patent/CN109348279B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857730A (zh) * | 2012-08-23 | 2013-01-02 | 苏州阔地网络科技有限公司 | 一种缓存帧数据的方法及*** |
CN104935958A (zh) * | 2015-06-24 | 2015-09-23 | 青岛科技大学 | 一种实时视频传输装置及方法 |
CN107426629A (zh) * | 2017-06-19 | 2017-12-01 | 网宿科技股份有限公司 | 一种流媒体文件处理方法及直播*** |
CN108174242A (zh) * | 2018-01-09 | 2018-06-15 | 武汉斗鱼网络科技有限公司 | 直播数据复用方法、装置、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109348279A (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109348279B (zh) | 一种推流方法、装置、设备及存储介质 | |
CN111135569B (zh) | 云游戏处理方法、装置、存储介质与电子设备 | |
CN110248204B (zh) | 一种直播缓存的处理方法、装置、设备和存储介质 | |
CN110784740A (zh) | 视频处理方法、装置、服务器及可读存储介质 | |
US9338467B1 (en) | Parallel video transcoding | |
CN109660879B (zh) | 直播丢帧方法、***、计算机设备和存储介质 | |
JP6686541B2 (ja) | 情報処理システム | |
WO2019101089A1 (zh) | 视频发送、接收方法和装置及终端 | |
CN108141581B (zh) | 视频编码 | |
WO2015084413A1 (en) | Uploading and transcoding media files | |
CN109168083B (zh) | 一种流媒体实时播放方法及装置 | |
CN107948713B (zh) | 一种延时直播方法及*** | |
CN112073737A (zh) | 在直播视频流应用中重新编码预测的图像帧 | |
CN111225171B (zh) | 一种视频录制方法、装置、终端设备及计算机存储介质 | |
CN110198475B (zh) | 视频处理方法、装置、设备、服务器与可读存储介质 | |
CN111726657A (zh) | 直播视频的播放处理方法、装置及服务器 | |
JP6238255B2 (ja) | 監視カメラシステムによる監視方法及び動画分割装置 | |
US20200296470A1 (en) | Video playback method, terminal apparatus, and storage medium | |
US9319682B2 (en) | Moving image encoding apparatus, control method therefor, and non-transitory computer readable storage medium | |
EP2882193B1 (en) | Uploading and transcoding media files | |
CN114465993B (zh) | 视频编码方法、视频解码方法和装置、介质和计算设备 | |
US9467639B2 (en) | Video transmission apparatus and control method for video transmission apparatus | |
CN113490047A (zh) | 一种Android音视频播放方法 | |
US20110161515A1 (en) | Multimedia stream recording method and program product and device for implementing the same | |
JP2010011287A (ja) | 映像伝送方法および端末装置 |
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 |