CN108600778B - 媒体流发送方法、装置、***及服务器、终端、存储介质 - Google Patents

媒体流发送方法、装置、***及服务器、终端、存储介质 Download PDF

Info

Publication number
CN108600778B
CN108600778B CN201810426235.5A CN201810426235A CN108600778B CN 108600778 B CN108600778 B CN 108600778B CN 201810426235 A CN201810426235 A CN 201810426235A CN 108600778 B CN108600778 B CN 108600778B
Authority
CN
China
Prior art keywords
media stream
terminal
multimedia resource
frame
video frame
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
CN201810426235.5A
Other languages
English (en)
Other versions
CN108600778A (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.)
Guangzhou Kugou Computer Technology Co Ltd
Original Assignee
Guangzhou Kugou Computer 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 Guangzhou Kugou Computer Technology Co Ltd filed Critical Guangzhou Kugou Computer Technology Co Ltd
Priority to CN201810426235.5A priority Critical patent/CN108600778B/zh
Publication of CN108600778A publication Critical patent/CN108600778A/zh
Application granted granted Critical
Publication of CN108600778B publication Critical patent/CN108600778B/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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种媒体流发送方法及装置,属于网络技术领域。方法包括:当检测到第一终端的主播用户开始直播时,按照预设条件,从第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存;在主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入主播用户的直播间;基于缓存的视频帧和音频帧生成第二媒体流并发送给第二终端。本发明通过在检测到第一终端的主播用户开始直播时,按照预设条件,从第一终端的媒体流中获取视频帧和音频帧进行缓存,并在检测到第二终端的观众用户通过预设方式进入主播用户的直播间后,将缓存的视频帧和音频帧提供给第二终端。该方法可以为第二终端的观众用户提供主播用户完整的直播视频和音频。

Description

媒体流发送方法、装置、***及服务器、终端、存储介质
技术领域
本发明涉及网络技术领域,尤其涉及一种媒体流发送方法及装置。
背景技术
随着网络技术的发展,网络直播成为一种比较热门的娱乐方式。在直播场景中,主播用户的直播视频和音频一般是基于RTMP(Real Time Messaging Protocol,实时消息传输协议)协议,以媒体流的形式发送给观众用户的终端,该终端播放该媒体流,这样观众用户就可以观看该主播用户的直播。
目前,主播用户在直播的过程中,该主播用户的终端会将采集的该主播用户的视频和音频数据,经过编码和流化处理后生成媒体流,将该媒体流实时发送给流媒体服务器。如果观众用户想要观看该主播用户的直播视频,则该观众用户可以在其终端上进行相应操作,触发终端向流媒体服务器发送媒体流获取请求。流媒体服务器在接收到该媒体流获取请求时,会从接收到该观众用户的媒体流获取的时刻起,将该主播用户的终端发送的媒体流实时转发给该观众用户的终端。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
按照上述媒体流发送方法中,流媒体服务器从观众用户发起播放请求的那一时刻起,将主播用户进行直播的媒体流实时发送给观众用户的终端,观众用户只能观看和收听在其发起媒体流获取请求之后的一段时间内,主播用户直播的视频和音频。如果该主播用户是在直播演唱某首歌曲,则观众用户发起媒体流获取请求时,该主播用户可能已经唱完了该歌曲的前一半部分,导致观众用户只能听到该主播用户演唱该歌曲的后一半部分,不能让观众用户从头听主播用户演唱的完整歌曲。可见,上述方法不能为观众用户提供主播用户完整的直播视频和音频。
发明内容
本发明实施例提供了一种媒体流发送方法及装置,可以解决相关技术不能为提供完整的直播视频和音频的问题。所述技术方案如下:
第一方面,提供一种媒体流发送方法,应用于服务器,所述方法包括:
当检测到第一终端的主播用户开始直播时,按照预设条件,从所述第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存;
在所述主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间;
基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端。
在一种可能实现方式中,所述当检测到第一终端的主播用户开始直播时,按照预设条件,从所述第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存,包括:
在接收所述第一媒体流的过程中,当检测到所述第一媒体流中携带多媒体资源的标识后,从所述第一媒体流中获取视频帧和音频帧;
将获取到的视频帧和音频帧与所述多媒体资源的标识对应缓存。
在一种可能实现方式中,所述基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端,包括:
当接收到所述第二终端发送的媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成所述第二媒体流并发送给所述第二终端。
在一种可能实现方式中,所述检测到所述第一媒体流中携带多媒体资源的标识,包括:
当从所述第一媒体流中获取到伪装成视频帧的第一报文时,从所述第一报文中提取所述多媒体资源的标识,所述第一报文用于指示所述第一终端开始播放所述多媒体资源。
在一种可能实现方式中,所述从所述第一媒体流中获取到伪装成视频帧的第一报文之前,所述方法还包括:
初始化所述第一媒体流对应的第一标志和第二标志的取值均为第一目标值;
相应地,所述从所述第一报文中提取所述多媒体资源的标识之后,所述方法还包括:
根据所述多媒体资源的标识,生成所述多媒体资源的直播记录,将所述第一标志和所述第二标志的取值从所述第一目标值修改为第二目标值,丢弃所述第一报文,所述直播记录用于记录所述多媒体资源的标识以及指示与所述多媒体资源的标识对应缓存的所述视频帧和所述音频帧;
其中,所述第一标志的取值为所述第二目标值时表示所述第一终端正在基于所述多媒体资源进行直播,所述第二标志的取值为所述第二目标值时表示所述第一终端开始播放或继续播放所述多媒体资源。
在一种可能实现方式中,所述将所述视频帧和所述音频帧与所述多媒体资源的标识对应缓存,包括:
当从所述第一媒体流中获取到音频帧,且所述第一标志的取值为所述第一目标值时,将获取到的音频帧与所述多媒体资源的标识对应缓存;
当从所述第一媒体流中获取到视频帧,且获取到的视频帧的类型满足目标条件时,将获取到的视频帧与所述多媒体资源的标识对应缓存。
在一种可能实现方式中,所述目标条件包括第一条件和第二条件,
所述第一条件为获取到的视频帧为关键帧,且所述第二标志的取值为所述第二目标值;
所述第二条件为获取到的视频帧不是伪装成视频帧的报文和关键帧,且所述第一标志的取值为所述第二目标值。
在一种可能实现方式中,所述当从所述第一媒体流中获取到视频帧之后,所述方法还包括:
当获取到的视频帧为关键帧,且所述第二标志的取值为所述第一目标值时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧,并将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃获取到的视频帧。
在一种可能实现方式中,所述当从所述第一媒体流中获取到伪装成视频帧的第一报文时,从所述第一报文中提取所述多媒体资源的标识,包括:
当从所述第一媒体流中获取到伪装成视频帧的报文时,解析所述报文,获取所述报文的类型,所述报文的类型包括第一报文、第二报文和第三报文;
当所述报文为所述第一报文时,执行提取所述多媒体资源的标识的步骤;
其中,所述第二报文用于指示所述第一终端继续播放所述多媒体资源,所述第三报文用于指示所述第一终端结束播放所述多媒体资源。
在一种可能实现方式中,所述获取所述报文的类型之后,所述方法还包括:
当所述报文为所述第二报文,且所述第一标志的取值为所述第一目标值时,丢弃所述第二报文;
当所述报文为所述第二报文,且所述第一标志的取值为所述第二目标值时,从所述第二报文中获取多媒体资源的标识;
当获取到的多媒体资源的标识与所述多媒体资源的标识相同时,将所述第二标志的取值记录为所述第二目标值,丢弃所述第二报文;
当获取到的多媒体资源的标识与所述多媒体资源的标识不同时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧,并将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第二报文。
在一种可能实现方式中,所述获取所述报文的类型之后,所述方法还包括:
当所述报文为所述第三报文,且所述第一标志的取值为所述第一目标值时,丢弃所述第三报文;
当所述报文为所述第三报文,且所述第一标志的取值为所述第二目标值时,从所述第三报文中获取多媒体资源的标识;
当获取到的多媒体资源的标识与所述多媒体资源的标识相同时,将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第三报文;
当获取到的多媒体资源的标识与所述多媒体资源的标识不同时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧,并将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第三报文。
在一种可能实现方式中,所述基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端之后,所述方法还包括:
记录第一时间戳,所述第一时间戳为所述缓存的视频帧和音频帧的时间戳中最大的时间戳;
寻址到从所述第一媒体流中获取到的视频帧所属序列的目标关键帧,所述目标关键帧为时间戳与当前时间的时间间隔最小的关键帧;
从所述音频帧的时间戳中,确定第二时间戳,所述第二时间戳与所述目标关键帧的时间戳的差值最小;
将所述第二时间戳减去所述第一时间戳和单帧音频持续时长,得到时间戳偏移值;
当从所述第一媒体流中获取到视频帧或音频帧时,将获取到的视频帧或音频帧的时间戳减去所述时间戳偏移值,得到新时间戳;
在所述第二媒体流中携带获取到新时间戳的视频帧或音频帧并发送给所述第二终端。
在一种可能实现方式中,所述单帧音频持续时长的获取过程包括:
通过包含所述第二时间戳的音频帧的音频头,获取所述单帧音频持续时长。
在一种可能实现方式中,所述检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间之后,所述方法还包括:
当不存在缓存的视频帧和音频帧时,将所述第一时间戳记录为目标数值,执行寻址关键帧、确定时间戳偏移值、得到新时间戳以及发送给所述第二终端的步骤。
在一种可能实现方式中,所述检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间之后,所述方法还包括:
在第一条件下,在所述第二媒体流中携带缓存的视频帧和音频帧并发送给所述第二终端;
在第二条件下,从所述第一媒体流中实时获取视频帧和音频帧后,在所述第二媒体流中携带实时获取的视频帧和音频帧并发送给所述第二终端。
在一种可能实现方式中,所述第一条件为接收到所述第二终端的第一请求,所述第一请求用于请求获取缓存的视频帧和音频帧;
所述第二条件为接收到所述第二终端的第二请求,所述第二请求用于请求获取实时直播的视频帧和音频帧。
第二方面,提供一种媒体流发送方法,应用于第一终端,所述方法包括:
当所述第一终端的主播用户开始直播时,采集所述主播用户直播时的视频帧和音频帧;
基于采集到的视频帧和音频帧生成媒体流并发送给服务器;
在所述主播用户进行直播的时间段内,当开始播放所述多媒体资源时,在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器,所述第一报文包含所述多媒体资源的标识,所述第一报文用于指示所述第一终端开始播放所述多媒体资源。
在一种可能实现方式中,所述在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器之后,所述方法还包括:
当采集到视频帧时,将采集到的视频帧编码为关键帧后,在所述媒体流中携带所述关键帧发送给所述服务器。
在一种可能实现方式中,所述在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器之后,所述方法还包括:
在继续播放所述多媒体资源的过程中,每编码一个关键帧之前,在所述媒体流中携带伪装成视频帧的第二报文并发送给所述服务器,所述第二报文用于指示所述第一终端继续播放所述多媒体资源。
在一种可能实现方式中,所述在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器之后,所述方法还包括:
当结束播放所述多媒体资源时,在所述媒体流中携带伪装成视频帧的第三报文并发送给所述服务器,所述第三报文用于指示所述第一终端结束播放所述多媒体资源。
第三方面,提供一种媒体流发送方法,应用于第二终端,所述方法包括:
当所述第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,接收服务器发送的媒体流;
从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,所述第一时间点为所述观众用户进入所述直播间的时间点;
当播放完所述第一时间点之前缓存的视频帧和音频帧后,继续从所述媒体流中获取所述第一时间点之后缓存的视频帧和音频帧进行播放。
在一种可能实现方式中,所述从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,包括:
从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧;
当接收到播放指令时,播放所述第一时间点之前缓存的视频帧和音频帧。
在一种可能实现方式中,所述方法还包括:
在播放缓存的视频帧和音频帧的过程中,当检测到第一切换指令时,获取第二时间点之后实时直播的视频帧和音频帧进行播放;
其中,所述第一切换指令用于从缓存播放切换至实时直播,所述第二时间点为检测到所述第一切换指令的时间点。
在一种可能实现方式中,所述方法还包括:
在播放实时直播的视频帧和音频帧的过程中,当检测到第二切换指令时,获取所述第二时间点之前缓存的视频帧和音频帧进行播放,所述第二切换指令用于从实时直播切换至缓存播放。
在一种可能实现方式中,所述从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放之前,所述方法还包括:
显示直播分享页面,所述直播分享页面用于指示所述主播用户正在基于多媒体资源进行直播;
当检测到对所述直播分享页面的触发操作时,向所述服务器发送媒体流获取请求,所述媒体流获取请求携带所述多媒体资源的标识。
第四方面,提供一种媒体流发送***,所述***包括第一终端、服务器和第二终端,
所述第一终端用于采集主播用户直播时的视频帧和音频帧,并基于采集到的视频帧和音频帧生成第一媒体流发送给所述服务器;
所述服务器用于按照预设条件,从所述第一媒体流中获取视频帧和音频帧进行缓存,并在检测到所述第二终端的观众用户通过预设方式进入所述主播用户的直播间时,基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端;
所述第二终端用于从所述第二媒体流中,获取第一时间点之前缓存的视频帧和音频帧进行播放,当播放完所述第一时间点之前缓存的视频帧和音频帧后,继续从所述第二媒体流中获取所述第一时间点之后缓存的视频帧和音频帧进行播放,所述第一时间点为所述观众用户进入所述直播间的时间点。
在一种可能实现方式中,所述第一终端用于:
在所述主播用户进行直播的时间段内,当开始播放所述多媒体资源时,在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器,所述第一报文包含所述多媒体资源的标识;
在继续播放所述多媒体资源的过程中,每编码一个关键帧之前,在所述媒体流中携带伪装成视频帧的第二报文并发送给所述服务器;
当结束播放所述多媒体资源时,在所述媒体流中携带将伪装成视频帧的第三报文发送给所述服务器。
在一种可能实现方式中,所述服务器用于在第一条件下,在所述第二媒体流中携带缓存的视频帧和音频帧并发送给所述第二终端,或,
所述服务器用于在第二条件下,从所述第一媒体流中实时获取视频帧和音频帧后,在所述第二媒体流中携带实时获取的视频帧和音频帧并发送给所述第二终端。
在一种可能实现方式中,所述第一条件为接收到所述第二终端的第一请求,所述第一请求用于请求获取缓存的视频帧和音频帧;
所述第二条件为接收到所述第二终端的第二请求,所述第二请求用于请求获取实时直播的视频帧和音频帧。
第五方面,提供一种媒体流发送装置,应用于服务器,所述装置包括:
缓存模块,用于当检测到第一终端的主播用户开始直播时,按照预设条件,从所述第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存;
发送模块,用于在所述主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间时,基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端。
在一种可能实现方式中,所述缓存模块用于:
在接收所述第一媒体流的过程中,当检测到所述第一媒体流中携带多媒体资源的标识后,从所述第一媒体流中获取视频帧和音频帧;
将获取到的视频帧和音频帧与所述多媒体资源的标识对应缓存。
在一种可能实现方式中,所述发送模块用于当接收到所述第二终端发送的媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成所述第二媒体流并发送给所述第二终端。
在一种可能实现方式中,所述装置还包括:
获取模块,用于当从所述媒体流中获取到伪装成视频帧的第一报文时,从所述第一报文中提取所述多媒体资源的标识,所述第一报文用于指示所述第一终端开始播放所述多媒体资源。
在一种可能实现方式中,所述装置还包括:
初始化模块,用于初始化所述第一媒体流对应的第一标志和第二标志的取值均为第一目标值;
生成模块,用于根据所述多媒体资源的标识,生成所述多媒体资源的直播记录,所述直播记录用于记录所述多媒体资源的标识以及指示与所述多媒体资源的标识对应缓存的所述视频帧和所述音频帧;
记录模块,用于将所述第一标志和所述第二标志的取值从所述第一目标值修改为第二目标值,丢弃所述第一报文;
其中,所述第一标志的取值为所述第二目标值时表示所述第一终端正在基于所述多媒体资源进行直播,所述第二标志的取值为所述第二目标值时表示所述第一终端开始播放或继续播放所述多媒体资源。
在一种可能实现方式中,所述缓存模块用于:
当从所述第一媒体流中获取到音频帧,且所述第一标志的取值为所述第一目标值时,将获取到的音频帧与所述多媒体资源的标识对应缓存;
当从所述第一媒体流中获取到视频帧,且获取到的视频帧的类型满足目标条件时,将获取到的视频帧与所述多媒体资源的标识对应缓存。
在一种可能实现方式中,所述缓存模块还用于当获取到的视频帧为关键帧,且所述第二标志的取值为所述第一目标值时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧;
所述记录模块还用于将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃获取到的视频帧。
在一种可能实现方式中,所述获取模块用于:
当从所述媒体流中获取到伪装成视频帧的报文时,解析所述报文,获取所述报文的类型,所述报文的类型包括第一报文、第二报文和第三报文;
当所述报文为所述第一报文时,执行提取所述多媒体资源的标识的步骤;
其中,所述第二报文用于指示所述第一终端继续播放所述多媒体资源,所述第三报文用于指示所述第一终端结束播放所述多媒体资源。
在一种可能实现方式中,所述记录模块还用于当所述报文为所述第二报文,且所述第一标志的取值为所述第一目标值时,丢弃所述第二报文;
所述获取模块还用于当所述报文为所述第二报文,且所述第一标志的取值为所述第二目标值时,从所述第二报文中获取多媒体资源的标识;
所述记录模块还用于当获取到的多媒体资源的标识与所述多媒体资源的标识相同时,将所述第二标志的取值记录为所述第二目标值,丢弃所述第二报文;
所述缓存模块还用于当获取到的多媒体资源的标识与所述多媒体资源的标识不同时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧;
所述记录模块还用于将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第二报文。
在一种可能实现方式中,所述记录模块还用于当所述报文为所述第三报文,且所述第一标志的取值为所述第一目标值时,丢弃所述第三报文;
所述获取模块还用于当所述报文为所述第三报文,且所述第一标志的取值为所述第二目标值时,从所述第三报文中获取多媒体资源的标识;
所述记录模块还用于当获取到的多媒体资源的标识与所述多媒体资源的标识相同时,将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第三报文;
所述缓存模块还用于当获取到的多媒体资源的标识与所述多媒体资源的标识不同时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧;
所述记录模块还用于将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第三报文。
在一种可能实现方式中,所述获取模块还用于:
记录第一时间戳,所述第一时间戳为所述缓存的视频帧和所述音频帧的时间戳中最大的时间戳;
寻址到从所述第一媒体流中获取到的视频帧所属序列的目标关键帧,所述目标关键帧为时间戳与当前时间的时间间隔最小的关键帧;
从所述音频帧的时间戳中,确定第二时间戳,所述第二时间戳与所述目标关键帧的时间戳的差值最小;
将所述第二时间戳减去所述第一时间戳和单帧音频持续时长,得到时间戳偏移值;
当从所述第一媒体流中获取到视频帧或音频帧时,将获取到的视频帧或音频帧的时间戳减去所述时间戳偏移值,得到新时间戳;
在所述第二媒体流中携带获取到新时间戳的视频帧或音频帧并发送给所述第二终端。
第六方面,提供一种媒体流发送装置,应用于第一终端,所述装置包括:
采集模块,用于当所述第一终端的主播用户开始直播时,采集所述主播用户直播时的视频帧和音频帧;
发送模块,用于基于采集到的视频帧和音频帧生成媒体流并发送给服务器;
所述发送模块还用于在所述主播用户进行直播的时间段内,当开始播放所述多媒体资源时,在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器,所述第一报文包含所述多媒体资源的标识,所述第一报文用于指示所述第一终端开始播放所述多媒体资源。
在一种可能实现方式中,所述发送模块还用于在继续播放所述多媒体资源的过程中,每编码一个关键帧之前,在所述媒体流中携带伪装成视频帧的第二报文并发送给所述服务器,所述第二报文用于指示所述第一终端继续播放所述多媒体资源。
在一种可能实现方式中,所述发送模块还用于当结束播放所述多媒体资源时,在所述媒体流中携带伪装成视频帧的第三报文并发送给所述服务器,所述第三报文用于指示所述第一终端结束播放所述多媒体资源。
第七方面,提供一种媒体流发送装置,应用于第二终端,所述装置包括:
接收模块,用于当所述第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,接收服务器发送的媒体流;
播放模块,用于从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,所述第一时间点为所述观众用户进入所述直播间的时间点;
所述播放模块还用于当播放完所述第一时间点之前缓存的视频帧和音频帧后,继续从所述媒体流中获取所述第一时间点之后缓存的视频帧和音频帧进行播放。
在一种可能实现方式中,所述播放模块还用于在播放缓存的视频帧和音频帧的过程中,当检测到第一切换指令时,获取第二时间点之后实时直播的视频帧和音频帧进行播放;其中,所述第一切换指令用于从缓存播放切换至实时直播,所述第二时间点为检测到所述第一切换指令的时间点。
在一种可能实现方式中,所述播放模块还用于在播放实时直播的视频帧和音频帧的过程中,当检测到第二切换指令时,获取所述第二时间点之前缓存的视频帧和音频帧进行播放,所述第二切换指令用于从实时直播切换至缓存播放。
在一种可能实现方式中,所述装置还包括:
显示模块,用于显示直播分享页面,所述直播分享页面用于指示所述主播用户正在基于多媒体资源进行直播;
发送模块,用于当检测到对所述直播分享页面的触发操作时,向所述服务器发送媒体流获取请求,所述媒体流获取请求携带所述多媒体资源的标识。
第八方面,提供了一种服务器,包括处理器和存储器;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序,实现第一方面任一种实现方式所述的方法步骤。
第九方面,提供了一种终端,包括处理器和存储器;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序,实现第二方面任一种实现方式或第三方面任一种实现方式所述的方法步骤。
第十方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方面任一种实现方式所述的方法步骤。
本发明实施例提供的技术方案带来的有益效果至少包括:
通过在检测到第一终端的主播用户开始直播时,按照预设条件,从第一终端的媒体流中获取视频帧和音频帧进行缓存,并在检测到第二终端的观众用户通过预设方式进入该主播用户的直播间后,将缓存的视频帧和音频帧提供给第二终端。该方法可以为第二终端的观众用户提供主播用户完整的直播视频和音频。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种媒体流发送方法的实施环境的示意图。
图2是本发明实施例提供的一种媒体流发送方法的流程图。
图3是本发明实施例提供的一种媒体流发送方法的流程图。
图4是本发明实施例提供的一种媒体流发送方法的流程图。
图5是本发明实施例提供的一种媒体流发送方法的流程图。
图6是本发明实施例提供的一种缓存视频帧和音频帧的流程图。
图7是本发明实施例提供的一种媒体流发送装置的结构示意图。
图8是本发明实施例提供的一种媒体流发送装置的结构示意图。
图9是本发明实施例提供的一种媒体流发送装置的结构示意图。
图10是本发明实施例提供的一种媒体流发送装置的结构示意图。
图11是本发明实施例提供的一种媒体流发送装置的结构示意图。
图12是本发明实施例提供的一种媒体流发送装置的结构示意图。
图13是本发明实施例提供的一种终端1300的结构示意图。
图14是本发明实施例提供的一种服务器1400的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种媒体流发送方法的实施环境的示意图。参见图1,该实施环境包括:第一终端101、第一流媒体服务器102、第二流媒体服务器103和第二终端104。
第一终端101作为媒体流的提供方,是指主播用户进行直播的终端。第一终端101上安装有第一客户端,如推流客户端,在运行该推流客户端的过程中,第一终端101可以采集主播用户直播时的视频帧和音频帧,并基于采集到的视频帧和音频帧生成直播时的媒体流,并将该媒体流发送给流媒体服务器102。
第一流媒体服务器102用于接收第一终端101发送的媒体流,并将接收到的媒体流转发给第二流媒体服务器103。例如,第一流媒体服务器102可以是源流媒体服务器。
第二流媒体服务器103用于接收第一流媒体服务器102发送的媒体流,并向第二终端104发送媒体流。例如,第二流媒体服务器103可以是边缘流媒体服务器。
需要说明的是,第一流媒体服务器102和第二流媒体服务器103之间还可以有一个或多个流媒体服务器,该一个或多个流媒体服务器作为中转服务器,负责将第一流媒体服务器102发送的媒体流转发至第二流媒体服务器103。
第二终端104作为媒体流的接收方,是指观众用户播放媒体流的终端。第二终端上安装有第二客户端,如拉流客户端(即播放器),在运行该第二客户端的过程中,第二终端104可以从媒体流中获取视频帧和音频帧进行播放。
第一终端101和第一流媒体服务器102之间,以及第二流媒体服务器103 和第二终端104之间可以通过无线网络或有线网络的方式进行通信。
图2是本发明实施例提供的一种媒体流发送方法的流程图。参见图2,该方法由服务器执行,该方法包括:
201、当检测到第一终端的主播用户开始直播时,按照预设条件,从该第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存。
202、在该主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入该主播用户的直播间。
203、基于缓存的视频帧和音频帧生成第二媒体流并发送给该第二终端。
本发明实施例提供的方法,通过在检测到第一终端的主播用户开始直播时,按照预设条件,从第一终端的媒体流中获取视频帧和音频帧进行缓存,并在检测到第二终端的观众用户通过预设方式进入该主播用户的直播间后,将缓存的视频帧和音频帧提供给第二终端。该方法可以为第二终端的观众用户提供主播用户完整的直播视频和音频。
在一种可能实现方式中,该当检测到第一终端的主播用户开始直播时,按照预设条件,从该第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存,包括:
在接收该第一媒体流的过程中,当检测到该第一媒体流中携带多媒体资源的标识后,从该第一媒体流中获取视频帧和音频帧;
将获取到的视频帧和音频帧与该多媒体资源的标识对应缓存。
在一种可能实现方式中,该基于缓存的视频帧和音频帧生成第二媒体流并发送给该第二终端,包括:
当接收到该第二终端发送的媒体流获取请求,且该媒体流获取请求中携带该多媒体资源的标识时,基于与该多媒体资源的标识对应缓存的视频帧和音频帧,生成该第二媒体流并发送给该第二终端。
在一种可能实现方式中,该检测到该第一媒体流中携带多媒体资源的标识,包括:
当从该第一媒体流中获取到伪装成视频帧的第一报文时,从该第一报文中提取该多媒体资源的标识,该第一报文用于指示该第一终端开始播放该多媒体资源。
在一种可能实现方式中,该从该第一媒体流中获取到伪装成视频帧的第一报文之前,该方法还包括:
初始化该第一媒体流对应的第一标志和第二标志的取值均为第一目标值;
相应地,该从该第一报文中提取该多媒体资源的标识之后,该方法还包括:
根据该多媒体资源的标识,生成该多媒体资源的直播记录,将该第一标志和该第二标志的取值从该第一目标值修改为第二目标值,丢弃该第一报文,该直播记录用于记录该多媒体资源的标识以及指示与该多媒体资源的标识对应缓存的该视频帧和该音频帧;
其中,该第一标志的取值为该第二目标值时表示该第一终端正在基于该多媒体资源进行直播,该第二标志的取值为该第二目标值时表示该第一终端开始播放或继续播放该多媒体资源。
在一种可能实现方式中,该将该视频帧和该音频帧与该多媒体资源的标识对应缓存,包括:
当从该第一媒体流中获取到音频帧,且该第一标志的取值为该第一目标值时,将获取到的音频帧与该多媒体资源的标识对应缓存;
当从该第一媒体流中获取到视频帧,且获取到的视频帧的类型满足目标条件时,将获取到的视频帧与该多媒体资源的标识对应缓存。
在一种可能实现方式中,该目标条件包括第一条件和第二条件,
该第一条件为获取到的视频帧为关键帧,且该第二标志的取值为该第二目标值;
该第二条件为获取到的视频帧不是伪装成视频帧的报文和关键帧,且该第一标志的取值为该第二目标值。
在一种可能实现方式中,该当从该第一媒体流中获取到视频帧之后,该方法还包括:
当获取到的视频帧为关键帧,且该第二标志的取值为该第一目标值时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧,并将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃获取到的视频帧。
在一种可能实现方式中,该当从该第一媒体流中获取到伪装成视频帧的第一报文时,从该第一报文中提取该多媒体资源的标识,包括:
当从该第一媒体流中获取到伪装成视频帧的报文时,解析该报文,获取该报文的类型,该报文的类型包括第一报文、第二报文和第三报文;
当该报文为该第一报文时,执行提取该多媒体资源的标识的步骤;
其中,该第二报文用于指示该第一终端继续播放该多媒体资源,该第三报文用于指示该第一终端结束播放该多媒体资源。
在一种可能实现方式中,该获取该报文的类型之后,该方法还包括:
当该报文为该第二报文,且该第一标志的取值为该第一目标值时,丢弃该第二报文;
当该报文为该第二报文,且该第一标志的取值为该第二目标值时,从该第二报文中获取多媒体资源的标识;
当获取到的多媒体资源的标识与该多媒体资源的标识相同时,将该第二标志的取值记录为该第二目标值,丢弃该第二报文;
当获取到的多媒体资源的标识与该多媒体资源的标识不同时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧,并将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃该第二报文。
在一种可能实现方式中,该获取该报文的类型之后,该方法还包括:
当该报文为该第三报文,且该第一标志的取值为该第一目标值时,丢弃该第三报文;
当该报文为该第三报文,且该第一标志的取值为该第二目标值时,从该第三报文中获取多媒体资源的标识;
当获取到的多媒体资源的标识与该多媒体资源的标识相同时,将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃该第三报文;
当获取到的多媒体资源的标识与该多媒体资源的标识不同时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧,并将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃该第三报文。
在一种可能实现方式中,该基于缓存的视频帧和音频帧生成第二媒体流并发送给该第二终端之后,该方法还包括:
记录第一时间戳,该第一时间戳为该缓存的视频帧和音频帧的时间戳中最大的时间戳;
寻址到从该第一媒体流中获取到的视频帧所属序列的目标关键帧,该目标关键帧为时间戳与当前时间的时间间隔最小的关键帧;
从该音频帧的时间戳中,确定第二时间戳,该第二时间戳与该目标关键帧的时间戳的差值最小;
将该第二时间戳减去该第一时间戳和单帧音频持续时长,得到时间戳偏移值;
当从该第一媒体流中获取到视频帧或音频帧时,将获取到的视频帧或音频帧的时间戳减去该时间戳偏移值,得到新时间戳;
在该第二媒体流中携带获取到新时间戳的视频帧或音频帧并发送给该第二终端。
在一种可能实现方式中,该单帧音频持续时长的获取过程包括:
通过包含该第二时间戳的音频帧的音频头,获取该单帧音频持续时长。
在一种可能实现方式中,该检测到第二终端的观众用户通过预设方式进入该主播用户的直播间之后,该方法还包括:
当不存在缓存的视频帧和音频帧时,将该第一时间戳记录为目标数值,执行寻址关键帧、确定时间戳偏移值、得到新时间戳以及发送给该第二终端的步骤。
在一种可能实现方式中,该检测到第二终端的观众用户通过预设方式进入该主播用户的直播间之后,该方法还包括:
在第一条件下,在该第二媒体流中携带缓存的视频帧和音频帧并发送给该第二终端;
在第二条件下,从该第一媒体流中实时获取视频帧和音频帧后,在该第二媒体流中携带实时获取的视频帧和音频帧并发送给该第二终端。
在一种可能实现方式中,该第一条件为接收到该第二终端的第一请求,该第一请求用于请求获取缓存的视频帧和音频帧;
该第二条件为接收到该第二终端的第二请求,该第二请求用于请求获取实时直播的视频帧和音频帧。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图3是本发明实施例提供的一种媒体流发送方法的流程图。该方法由第一终端执行,参见图3,该方法包括:
301、当该第一终端的主播用户开始直播时,采集该主播用户直播时的视频帧和音频帧。
302、基于采集到的视频帧和音频帧生成媒体流并发送给服务器。
303、在该主播用户进行直播的时间段内,当开始播放该多媒体资源时,在该媒体流中携带伪装成视频帧的第一报文并发送给该服务器,该第一报文包含该多媒体资源的标识,该第一报文用于指示该第一终端开始播放该多媒体资源。
本发明实施例提供的方法,通过在开始播放多媒体资源时,将该多媒体资源的标识携带在发送给服务器的媒体流中,使得服务器在检测到多媒体资源的标识以后,将从媒体流中获取的视频帧和音频帧进行缓存。由于检测到多媒体资源的标识时表示多媒体资源开始播放,此后从媒体流中获取的视频帧和音频帧即是主播用户基于该多媒体资源进行直播过程中采集的视频帧和音频帧,这样服务器可以在接收到第二终端的媒体流获取请求时,可以将缓存的视频帧和音频帧提供给第二终端,使得第二终端可以基于获取到的该视频帧和该音频帧,从头播放主播用户基于该多媒体资源进行直播时的视频和音频,从而达到为观众用户提供主播用户基于多媒体资源进行直播时的完整视频和音频的目的。
在一种可能实现方式中,该在该媒体流中携带伪装成视频帧的第一报文并发送给该服务器之后,该方法还包括:
当采集到视频帧时,将采集到的视频帧编码为关键帧后,在该媒体流中携带该关键帧发送给该服务器。
在一种可能实现方式中,该在该媒体流中携带伪装成视频帧的第一报文并发送给该服务器之后,该方法还包括:
在继续播放该多媒体资源的过程中,每编码一个关键帧之前,在该媒体流中携带伪装成视频帧的第二报文并发送给该服务器,该第二报文用于指示该第一终端继续播放该多媒体资源。
在一种可能实现方式中,该在该媒体流中携带伪装成视频帧的第一报文并发送给该服务器之后,该方法还包括:
当结束播放该多媒体资源时,在该媒体流中携带伪装成视频帧的第三报文并发送给该服务器,该第三报文用于指示该第一终端结束播放该多媒体资源。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图4是本发明实施例提供的一种媒体流发送方法的流程图。该方法由第二终端执行,参见图4,该方法包括:
401、当该第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,接收服务器发送的媒体流。
402、从该媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,该第一时间点为该观众用户进入该直播间的时间点。
403、当播放完该第一时间点之前缓存的视频帧和音频帧后,继续从该媒体流中获取该第一时间点之后缓存的视频帧和音频帧进行播放。
本发明实施例提供的方法,通过在观众用户通过预设方式进入第一终端的主播用户的直播间后,从该媒体流中获取缓存的视频帧和音频帧进行播放,可以为第二终端的观众用户提供主播用户完整的直播视频和音频。
在一种可能实现方式中,该从该媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,包括:
从该媒体流中获取第一时间点之前缓存的视频帧和音频帧;
当接收到播放指令时,播放该第一时间点之前缓存的视频帧和音频帧。
在一种可能实现方式中,该方法还包括:
在播放缓存的视频帧和音频帧的过程中,当检测到第一切换指令时,获取第二时间点之后实时直播的视频帧和音频帧进行播放;
其中,该第一切换指令用于从缓存播放切换至实时直播,该第二时间点为检测到该第一切换指令的时间点。
在一种可能实现方式中,该方法还包括:
在播放实时直播的视频帧和音频帧的过程中,当检测到第二切换指令时,获取该第二时间点之前缓存的视频帧和音频帧进行播放,该第二切换指令用于从实时直播切换至缓存播放。
在一种可能实现方式中,该从该媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放之前,该方法还包括:
显示直播分享页面,该直播分享页面用于指示该主播用户正在基于多媒体资源进行直播;
当检测到对该直播分享页面的触发操作时,向该服务器发送媒体流获取请求,该媒体流获取请求携带该多媒体资源的标识。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图5是本发明实施例提供的一种媒体流发送方法的流程图。该方法应用于图1所示实施例的实施环境中,基于第一终端、第一流媒体服务器、第二流媒体服务器和第二终端之间的交互,参见图5,该方法包括:
500、在直播过程中,第一终端向第一流媒体服务器发送第一媒体流。
其中,该第一媒体流可以包括视频流和音频流。
本发明实施例中,当主播用户开始直播时,第一终端可以采集该主播用户直播时的视频帧和音频帧;基于采集到的视频帧和音频帧生成第一媒体流并发送给第一流媒体服务器。
例如,主播用户在第一终端上开始直播时,第一终端可以通过自带的摄像头或外接的摄像头采集主播用户直播时的视频帧和音频帧,并对采集到的视频帧进行编码、流化和封装后,得到视频流,对采集到的音频帧进行编码、流化和封装后,得到音频流。
第一终端还可以为采集的每个视频帧和音频帧打上时间戳,视频帧的时间戳用于指示该视频帧在媒体流中的时间信息,音频帧的时间戳用于指示该音频帧在媒体流中的时间信息。例如,主播用户开始直播时,第一终端采集到第一帧(视频帧或音频帧)时,给采集到的第一帧打上时间戳0ms,如果第一终端采集第二帧距离采集第一帧的时间间隔为Tms,则第一终端可以给采集到的第二帧打上时间戳Tms。其中,该时间间隔可以根据第一终端的***时间确定,例如,第一终端在采集第一帧时的***时间为t1,在采集第二帧时的***时间为 t2,则该时间间隔可以是T=t2-t1。
可见,时间戳可以用于确定各个视频帧和音频帧的采集时间的先后顺序,从而便于第二终端在播放各个视频帧和音频帧时,可以根据时间戳来确定各帧的播放顺序。
本发明实施例中,第一终端向第一流媒体服务器发送媒体流的过程中,可以执行下述步骤500A至步骤500D:
500A、在该主播用户进行直播的时间段内,当开始播放多媒体资源时,第一终端在该第一媒体流中携带伪装成视频帧的第一报文并发送给第一流媒体服务器,该第一报文包含该多媒体资源的标识。
其中,该多媒体资源可以为歌曲。该第一报文用于指示该第一终端开始播放该多媒体资源,也即是,主播用户开始基于该多媒体资源进行直播。
本发明实施例中,当主播用户想要开始基于多媒体资源进行直播时,可以在第一终端上进行相应操作,触发对多媒体资源的播放指令,当第一终端接收到对多媒体资源的播放指令时,播放该多媒体资源,并将伪装成视频帧的第一报文携带在该第一媒体流中发送给该服务器,例如,第一终端可以向视频流中***伪装成视频帧的第一报文。第一终端在***第一报文时,可以为第一报文打上第一时间戳,第一终端可以按照对其他视频帧打上时间戳的方式,给该第一报文打上时间戳,这样该第一报文中可以包含该第一时间戳,该第一时间戳用于指示该第一终端开始播放该多媒体资源的时间信息,也即是,主播用户开始基于该多媒体资源进行直播时的时间信息。
例如,主播用户在直播过程中如果想要演唱某首歌曲,则可以在第一终端显示的直播界面上选择歌曲(伴奏),然后对该歌曲进行触发操作,如点击播放按钮,当检测到该触发操作时,第一终端可以加载该歌曲文件,通过播放器播放该歌曲文件,在开始播放该歌曲文件时,向视频流中***一个伪装成视频帧的歌曲开始播放的第一报文,并打上时间戳发送给第一流媒体服务器。
需要说明的是,该步骤500A是第一终端将该多媒体资源的标识携带在该第一媒体流中发送给该服务器的一种可能实现方式。通过在发送给流媒体服务器的第一媒体流中携带伪装成视频帧的第一报文,使得流媒体服务器通过解析该第一报文,从该第一报文中提取该多媒体资源的标识,即可获知该多媒体资源开始播放了,也即是,主播用户开始在第一终端上基于该多媒体资源进行直播了。另外,流媒体服务器还可以根据该第一报文的时间戳确定多媒体资源开始播放的时间点。
500B、当采集到视频帧时,第一终端将采集到的视频帧编码为关键帧后,在该第一媒体流中携带该关键帧并发送给第一流媒体服务器。
对于视频帧而言,视频帧分为关键帧和非关键帧,非关键帧需要参考其之前的关键帧进行解码。第一报文伪装的视频帧用于告知开始基于多媒体资源进行直播的起点,该第一报文伪装的视频帧的下一个视频帧,也即是,第一终端开始基于多媒体资源进行直播后采集的视频帧。为了便于第二终端可以正常解码,第一终端需要将采集到的视频帧强制编码为关键帧。同时,第一终端可以将其它视频帧按正常流程编码,音频帧也按正常流程编码和封装后,在第一媒体流中携带视频帧和音频帧并发送给第一流媒体服务器。
500C、第一终端在继续播放该多媒体资源的过程中,每编码一个关键帧之前,在该第一媒体流中携带伪装成视频帧的第二报文并发送给第一流媒体服务器。
其中,该第二报文用于指示该第一终端继续播放该多媒体资源,也即是,主播用户继续基于该多媒体资源进行直播。
在编码第一个关键帧后,第一终端可以按照关键帧编码机制,每隔预设时长,编码一个视频帧为关键帧,或每隔预设数量,编码一个视频帧为关键帧,本发明实施例对此不做限定。每编码一个关键帧之前,第一终端可以将伪装成视频帧的第二报文携带在该第一媒体流中发送给该服务器。例如,第一终端可以向视频流中***一个伪装成视频帧的第二报文。
第一终端可以为该第二报文打上第二时间戳,第一终端可以按照对其他视频帧打上时间戳的方式,给该第二报文打上时间戳。这样该第二报文中可以包含第二时间戳,该第二时间戳用于指示该第一终端继续播放该多媒体资源的时间信息,也即是,主播用户继续基于该多媒体资源进行直播时的时间信息。
通过在发送给流媒体服务器的第一媒体流中携带伪装成视频帧的第二报文,使得流媒体服务器通过解析该第二报文,即可获知该多媒体资源继续播放中,也即是,主播用户正在第一终端上继续基于该多媒体资源进行直播。另外,流媒体服务器还可以根据该第二报文的时间戳确定多媒体资源继续播放的时间点。
500D、当结束播放该多媒体资源时,第一终端在该第一媒体流中携带伪装成视频帧的第三报文并发送给第一流媒体服务器。
其中,该第三报文用于指示该第一终端结束播放该多媒体资源,也即是,主播用户结束基于该多媒体资源进行直播。
本发明实施例中,当主播用户想要结束基于多媒体资源进行直播时,可以在第一终端上进行相应操作,触发对多媒体资源的结束播放指令。当第一终端接收到对多媒体资源的结束播放指令时,停止播放该多媒体资源,并将伪装成视频帧的第三报文携带在该第一媒体流中发送给该服务器,例如,第一终端可以向视频流中***一个伪装成视频帧的第三报文。
第一终端可以为该第三报文打上第三时间戳,第一终端可以按照对其他视频帧打上时间戳的方式,给该第三报文打上时间戳。这样,该第三报文可以包含第三时间戳,该第三时间戳用于指示该第一终端结束始播放该多媒体资源的时间信息,也即是,主播用户结束基于该多媒体资源进行直播时的时间信息。
通过在发送给流媒体服务器的第一媒体流中携带伪装成视频帧的第三报文,使得流媒体服务器通过解析该第三报文,即可获知该多媒体资源停止播放了,也即是,主播用户开始在第一终端上基于该多媒体资源进行直播了。另外,流媒体服务器还可以根据该第三报文的时间戳确定多媒体资源停止播放的时间点。
501、当接收到第一终端的第一媒体流时,第一流媒体服务器将该第一媒体流转发给第二流媒体服务器。
本发明实施例中,第二流媒体服务器时靠近观众用户的终端侧的流媒体服务器,因此,第一流媒体服务器在接收到第一终端发送的第一媒体流时,可以实时将该第一媒体流转发给第二流媒体服务器。
需要说明的是,本发明实施例仅以第一流媒体服务器直接将第一终端的第一媒体流转发给第二流媒体服务器为例进行说明,实际上,第一流媒体服务器和第二流媒体服务器之间可能存在其他一个或多个流媒体服务器,则第一流媒体服务器可以通过该一个或多个流媒体服务器进行转发,直至转发至第二流媒体服务器。
502、在接收第一媒体流的过程中,当检测到该第一媒体流中携带多媒体资源的标识后,第二流媒体服务器从该第一媒体流中获取视频帧和音频帧,并将该获取到的视频帧和音频帧与该多媒体资源的标识对应缓存。
在一种可能实现方式中,第一终端检测到该第一媒体流中携带多媒体资源的标识包括:当第一终端从第一媒体流中获取到伪装成视频帧的第一报文时,从该第一报文中提取该多媒体资源的标识,该第一报文用于指示该第一终端开始播放该多媒体资源。
本发明实施例中,第二流媒体服务器在接收第一媒体流的过程中,如果检测到该第一媒体流中携带多媒体资源的标识,则可以得知第一终端开始播放该多媒体资源了,之后,第二流媒体服务器在从第一媒体流中获取到视频帧或音频帧时,可以将其进行缓存,使得第二终端在需要时,可以从该第二流媒体服务器获取。
具体地,第二流媒体服务器可以将第一媒体流中时间戳处于第一报文的时间戳之后的视频帧和音频帧缓存下来。例如,第二流媒体服务器可以采用缓存队列的形式,将从第一媒体流中获取的视频帧和音频帧缓存。
在一种可能实现方式中,参见图6,提供了一种缓存视频帧和音频帧的流程图,如图6所示,第二流媒体服务器将该视频帧和该音频帧与该多媒体资源的标识对应缓存的过程包括下述步骤502A至步骤502I:
502A、开始接收第一终端的第一媒体流时,初始化该第一媒体流对应的第一标志和第二标志的取值均为第一目标值。
本发明实施例中,当第二流媒体服务器开始接收到第一终端的第一媒体流时,可以将该第一媒体流对应的该第一标志和第二标志的取值初始化为第一目标值。
其中,该第一标志可以用变量“RecordingAVSliceOfOneSong”表示,第二标志可以用变量“BeginOrContinuePlayingOfOneSong”表示。
第一标志的取值用于指示是否正在采集基于该多媒体资源进行直播时的视频帧和音频帧,也即是,是否正在录制多媒体资源对应的音视频片段,该音视频片断是对该多媒体资源对应的所有音频帧和视频帧的总称。第二标志的取值用于指示多媒体资源是否开始播放或继续播放,该第一标志和第二标志初始化时的取值为第一目标值。
第一标志和第二标志均可以有两个取值,如第一目标值和第二目标值,例如,第一目标值和第二目标值均可以是逻辑值,例如,第一目标值可以是False,第二目标值可以是True。
考虑到第二流媒体服务器可能会接收到多个主播用户的终端发送的第一媒体流,因此可以针对每个终端的第一媒体流,设置对应的第一标志和第二标志。当第一标志的取值为第一目标值(如False)时,表示第一终端未基于该多媒体资源进行直播,也即是,当前未采集基于该多媒体资源进行直播时的视频帧和音频帧;当第一标志的取值为该第二目标值(如True)时,表示该第一终端正在基于该多媒体资源进行直播,也即是,正在采集基于该多媒体资源进行直播时的视频帧和音频帧;当第二标志的取值为第一目标值时,表示未播放多媒体资源;当第二标志的取值为该第二目标值时,表示该第一终端开始播放或继续播放该多媒体资源。
考虑到主播用户刚开始打开第一终端的摄像头准备进行直播时,在一段时间内尚未开始播放该多媒体资源,因此,第二流媒体服务器可以在刚开始接收到第一终端的第一媒体流时,初始化该第一媒体流对应的第一标志和第二标志的取值为第一目标值。在一种可能实现方式中,第二流媒体服务器可以在接收到该第一媒体流中的第一帧(视频帧或音频帧)时,将该第一标志和第二标志的取值初始化为第一目标值。直至接收到伪装成视频帧的第一报文,即多媒体资源开始播放的报文,可以得知该多媒体资源开始播放,此时,第二流媒体服务器可以将该第一标志和第二标志的取值从第一目标值修改为第二目标值。
502B、继续接收第一终端的第一媒体流,判断从第一媒体流中获取的是否是音频帧,如果否,执行步骤502C,如果是,执行步骤502I。
在主播用户通过第一终端进行直播的过程中,第一终端会不断地采集视频帧和音频帧,并将采集到的视频帧和音频帧携带在第一媒体流中发送给第一流媒体服务器,由第一流媒体服务器转发至第二流媒体服务器,这样第二流媒体服务器可以不断地从接收到的第一媒体流中获取视频帧和音频帧。第二流媒体服务器每次从第一媒体流中获取到的可能是音频帧,也可能是视频帧。
第二流媒体服务器在接收第一媒体流的过程中,每获取到一帧,则可以根据该帧的配置信息,确定当前获取到的是视频帧,还是音频帧。例如,第二流媒体服务器可以在从第一媒体流中获取到视频帧或音频帧时,同时获取到该视频帧或音频帧的配置信息。
502C、当从第一媒体流中获取到视频帧时,判断获取到的视频帧是否为伪装成视频帧的报文,如果否,执行步骤502H;如果是,则解析该报文,获取该报文的类型,当该报文为第一报文时,执行步骤502D,当该报文为第二报文时,执行步骤502E,当该报文为第三报文时,执行步骤502F。
其中,该报文的类型包括第一报文、第二报文和第三报文。该第一报文用于指示该第一终端开始播放该多媒体资源,该第二报文用于指示该第一终端继续播放该多媒体资源,该第三报文用于指示该第一终端结束播放该多媒体资源。
502D、当从第一媒体流中获取到第一报文时,从第一报文中提取多媒体资源的标识,根据该多媒体资源的标识,生成该多媒体资源的直播记录,将该第一标志和该第二标志的取值从该第一目标值修改为第二目标值,丢弃该第一报文,执行步骤502B。
其中,该多媒体资源的直播记录用于记录该多媒体资源的标识,该直播记录还用于指示与该多媒体资源的标识对应缓存的该视频帧和该音频帧,例如,该直播记录中可以记录一个指向该多媒体资源的标识对应的视频帧和音频帧的指针。
502E、当从第一媒体流中获取到第二报文时,判断第一标志的取值是否为第二目标值,如果否,则丢弃第二报文,执行502B;如果是,则从第二报文中获取多媒体资源的标识,判断获取到的多媒体资源的标识与步骤502D中提取的多媒体资源的标识是否相同,如果否,执行步骤502G,如果是,则记录该第二标志的取值为该第二目标值,丢弃该第二报文,执行步骤502B。
其中,如果第一标志的取值不是第二目标值,则说明第一媒体流从第一终端传输至第二流媒体服务器的过程中,丢失了第一报文,此时表示第一媒体流在传输过程中出现了异常情况,此时,第二流媒体服务器可以不缓存获取到的视频帧。
本发明实施例中,当第二流媒体服务器从第一媒体流中获取到的报文为第二报文,且该第一标志的取值为该第一目标值时,丢弃该第二报文;当该报文为该第二报文,且该第一标志的取值为该第二目标值时,从该第二报文中获取多媒体资源的标识;当获取到的多媒体资源的标识与该多媒体资源的标识相同时,将该第二标志的取值记录为该第二目标值,丢弃该第二报文;当获取到的多媒体资源的标识与该多媒体资源的标识不同时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧。
502F、当从第一媒体流中获取到第三报文时,判断第一标志的取值是否为第二目标值,如果否,则丢弃第二报文,执行502B;如果是,则从第二报文中获取多媒体资源的标识,判断获取到的多媒体资源的标识与多媒体资源的标识是否相同,如果否,执行步骤502G,如果是,则记录第一标志和第二标志的取值均为该第一目标值,丢弃该第三报文,执行步骤502B。
本发明实施例中,当第二流媒体服务器从第一媒体流中获取到的报文为第三报文,且该第一标志的取值为该第一目标值时,丢弃该第三报文;当该报文为该第三报文,且该第一标志的取值为该第二目标值时,从该第三报文中获取多媒体资源的标识;当获取到的多媒体资源的标识与该多媒体资源的标识相同时,将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃该第三报文;当获取到的多媒体资源的标识与该多媒体资源的标识不同时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧。
502G、删除该多媒体资源对应的直播记录以及缓存的视频帧和音频帧,并记录该第一媒体流对应的第一标志和第二标志的取值均为第一目标值,丢弃获取到的视频帧或伪装成视频帧的报文,执行502B。
当第一媒体流在从第一终端传输至第二流媒体服务器的过程中,如果出现异常情况,如该多媒体资源未继续播放(如第一终端开始播放其他多媒体资源,也即是,第一终端开始基于其他多媒体资源进行直播),或,该多媒体资源继续播放的报文丢失,则第二流媒体服务器可以认为该多媒体资源对应的视频帧和音频帧未能完整接收,此时,可以删除缓存的该多媒体资源对应的视频帧和音频帧。
502H、当从第一媒体流中获取到的视频帧不是伪装成视频帧的报文时,判断获取到的视频帧是否为关键帧,如果否,执行步骤502I;如果是,判断第一媒体流对应的第二标志的取值是否为第二目标值,如果是,则将第一媒体流对应的第二标志的取值记录为第一目标值,执行步骤502I,如果否,则从该多媒体资源的直播记录中,获取该多媒体资源的标识,执行步骤502G。
本发明实施例中,当第二流媒体服务器从第一媒体流中获取到的视频帧为关键帧,且该第二标志的取值为该第一目标值时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧。
例如,第二流媒体服务器可以根据获取到的视频帧的配置信息,确定该视频帧是否为关键帧。如果该第一媒体流对应的第二标志的取值不是第二目标值,则表明关键帧前丢失了伪装成视频帧的第二报文。
502I、第二流媒体服务器判断第一媒体流对应的第一标志的取值是否为第二目标值,如果否,执行502B;如果是,则缓存获取到的音频帧或视频帧后,执行502B。
从上述步骤可知,第二流媒体服务器在接收第一终端的第一媒体流的过程中,出现以下两种情况时,对从第一媒体流中获取的视频帧和音频帧进行缓存:
第一种情况、当从该第一媒体流中获取到音频帧,且该第一标志的取值为该第一目标值时,将获取到的音频帧与该多媒体资源的标识对应缓存。
在接收该第一媒体流的过程中,当从第一媒体流中获取到音频帧,且该第一媒体流对应的第一标志的取值为第二目标值时,将获取到的音频帧进行缓存。
第二种情况、当从该第一媒体流中获取到视频帧,且获取到的视频帧的类型满足目标条件时,将获取到的视频帧与该多媒体资源的标识对应缓存。
该目标条件包括第一条件和第二条件,该第一条件为获取到的视频帧为关键帧,且该第二标志的取值为该第二目标值;该第二条件为获取到的视频帧不是伪装成视频帧的报文和关键帧,且该第一标志的取值为该第二目标值。
上述两种情况表明当第一媒体流在从第一终端传输至第二流媒体服务器的过程中没有出现异常情况,第二流媒体服务器可以保存完整的视频帧和音频帧,也即是,主播用户通过第一终端基于多媒体资源进行直播时采集的视频帧和音频帧。
需要说明的是,该步骤502是当检测到第一终端的主播用户开始直播时,第二终端按照预设条件,从该第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存的一种可能实现方式。通过将从第一媒体流中获取到的视频帧或音频帧进行缓存,使得第二终端在需要时,可以从该第二流媒体服务器获取相应的视频帧和音频帧。
503、当第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,第二终端向第二流媒体服务器发送媒体流获取请求,该媒体流获取请求携带该多媒体资源的标识。
其中,如果该多媒体资源为歌曲,则该多媒体资源的标识可以是歌曲的名称。
在一种可能实现方式中,该预设方式可以是通过直播分享页面进入直播间,该直播分享页面用于指示主播用户正在基于多媒体资源进行直播。相应地,第二终端可以显示直播分享页面,该直播分享页面用于指示第一终端的主播用户正在基于多媒体资源进行直播;第二终端的观众用户对该直播分享页面进行触发操作,当检测到对该直播分享页面的触发操作时,观众用户可以通过第二终端进入主播用户的直播间,进而,第二终端向第二流媒体服务器发送媒体流获取请求。
其中,该显示直播分享页面,包括:在即时通讯应用的聊天界面中,显示该直播分享页面。例如,观众A的好友可以通过即时通讯应用向观众用户A发送了一个直播分享页面,则第二终端可以在观众A与该好友的聊天界面中显示该直播分享页面。
例如,该直播分享页面可以显示“主播A正在演唱歌曲B”的提示信息。如果观众A对该歌曲B感兴趣,想要进入主播A的直播间观看主播A演唱该歌曲B的直播视频时,可以通过第二终端向第二流媒体服务器发送媒体流获取请求。例如,观众A可以对第二终端显示的直播分享页面进行点击操作,当第二终端检测到该点击操作时,第二终端可以根据该直播分享页面,获取歌曲B的名称,并将该歌曲B的名称携带在媒体流获取请求中发送给第二流媒体服务器。
504、当接收到第二终端发送的媒体流获取请求,且该媒体流获取请求中携带该多媒体资源的标识时,第二流媒体服务器基于与该多媒体资源的标识对应缓存的视频帧和音频帧,生成第二媒体流并发送给该第二终端。
本发明实施例中,当第二流媒体服务器接收到第二终端的媒体流获取请求时,可以从该媒体流获取请求中获取多媒体资源的标识,并根据该多媒体资源的标识,查询本地缓存中是否该存在与该多媒体资源的标识对应的视频帧和音频帧,如果存在,表明主播用户还在基于该多媒体资源进行直播,因此,第二流媒体服务器可以从本地缓存中获取该多媒体资源的标识对应的视频帧和音频帧,并基于获取到的视频帧和音频帧生成媒体流发送给第二终端。
需要说明的是,该步骤504是在该主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入该主播用户的直播间时,基于缓存的视频帧和音频帧生成第二媒体流并发送给该第二终端的一种可能实现方式。该方式下,当流媒体服务器接收到携带多媒体资源的标识的媒体流获取请求时,可以确认第二终端的主播用户通过预设方式进入了该主播用户的直播间。
上述步骤503和步骤504是第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,第二终端接收流媒体服务器发送的第二媒体流的一种可能实现方式。该方式下,观众用户在通过预设方式进入主播用户的直播间后,第二终端可以向流媒体服务器发送媒体流获取请求,以接收流媒体服务器返回的第二媒体流。
第二流媒体服务器在检测到第二终端的观众用户进入第一终端的主播用户的直播间后,第二流媒体服务器可以基于缓存的视频帧和音频帧,生成第二媒体流发送给第二终端。进而,第二流媒体服务器可以判断用户是希望观看缓存或直接观看实时直播,按照用户策略向第二终端推送相应的媒体流。
在一种可能实现方式中,在第一条件下,第二流媒体服务器可以在该第二媒体流中携带缓存的视频帧和音频帧并发送给该第二终端;在第二条件下,第二流媒体服务器可以从该第一媒体流中实时获取视频帧和音频帧后,在该第二媒体流中携带实时获取的视频帧和音频帧并发送给该第二终端。其中,该第一条件为接收到该第二终端的第一请求,该第一请求用于请求获取缓存的视频帧和音频帧;该第二条件为接收到该第二终端的第二请求,该第二请求用于请求获取实时直播的视频帧和音频帧。第二流媒体服务器如果接收到第一请求,可以确定用户希望观看缓存,则继续将缓存的视频帧和音频帧发送给第二终端;如果接收到第二请求,可以确定用户希望观看实时直播,则将实时直播的视频帧和音频帧发送给第二终端。
505、当接收到第二流媒体服务器发送的第二媒体流时,第二终端从第二媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,该第一时间点为该观众用户进入该直播间的时间点。
本发明实施例中,当接收到第二媒体流时,第二终端可以从该第二媒体流中获取流媒体服务器在第一时间点之前缓存的视频帧和音频帧,并自动播放该视频帧和该音频帧。该第一时间点是观众用户进入该直播间的时间点,也是第二终端发送媒体流获取请求的时间点。
例如,第二终端可以对该视频帧和音频帧进行解码,根据各个视频帧和音频帧的时间戳进行播放,例如,第二终端可以先播放时间戳小的视频帧和音频帧,将时间戳相同的视频帧和音频帧同步播放。由于该视频帧和音频帧是从主播用户开始基于该多媒体资源进行直播时起采集的视频帧和音频帧,因此第一终端可以基于视频帧和音频帧,从头播放主播用户基于该多媒体资源进行直播的视频和音频。例如,该多媒体资源为歌曲B,主播A在第一终端上直播演唱该歌曲B的视频,则第二终端播放的时主播A从头演唱该歌曲B的直播视频和音频。
相比于相关技术中,如果观众M通过看到主播A正在唱歌曲B的直播分享页面进入主播A的直播间,由于此时也许主播A已经唱到歌曲B的一半了,此时,观众M只能听到主播A演唱歌曲B的后一半部分,但是既然然观众M被歌曲B吸引,哪么观众M应该更想从头听主播A演唱的歌曲B,但是由于直播的实时性,相关技术中,观众M只能听到进入主播A的直播间那一刻起,主播 A演唱的歌曲B的后一半歌曲。而本发明实施例提供的上述技术方案,可以保障观众M从头听主播A演唱的歌曲B。
在一种可能实现方式中,第二终端也可以在接收到播放指令时,播放该第一时间点之前缓存的视频帧和音频帧。例如,第二终端在接收到第一时间点之前缓存的视频帧和音频帧后,可以先显示播放缓存选项和实时直播选项,用户可以对播放缓存选项进行触发操作,触发该播放指令,使得第二终端执行播放缓存的视频帧和音频帧的步骤。另外,第二终端还可以向第二流媒体服务器发送第一请求,使得第二流媒体服务器继续向第二终端发送缓存的视频帧和音频帧。
当然,如果用户对实时直播选项进行触发操作,当第二终端检测到该触发操作时,可以向第二流媒体服务器发送第二请求,使得第二流媒体服务器向第二终端发送实时直播的视频帧和音频帧。这样,当第二终端播放完该第一时间点之前缓存的视频帧和音频帧后,第二终端可以从该媒体流中获取实时直播的视频帧和音频帧进行播放。
上述步骤500至步骤505是第二流媒体服务器将第一终端从主播用户开始基于该多媒体资源进行直播时起,采集的视频帧和音频帧进行缓存,当接收到第二终端发送的媒体流获取请求时,将缓存的视频帧和音频帧发送给第二终端。此时,该缓存的该视频帧和该音频帧是第一时间点之前缓存的视频帧和音频帧,也即是,第一终端从主播用户开始基于该多媒体资源进行直播时,直至该第二终端发送该媒体流获取请求的时间段内采集的视频帧和音频帧。
需要说明的是,当第二终端播放完该第一时间点之前缓存的视频帧和音频帧后,第二终端可以继续从该第二媒体流中获取该第一时间点之后缓存的视频帧和音频帧进行播放。
第二终端还可以提供用户可随时切换观看缓存或实时直播的功能,例如,在播放缓存的视频帧和音频帧的过程中,当检测到第一切换指令时,第二终端可以获取第二时间点之后实时直播的视频帧和音频帧进行播放;其中,该第一切换指令用于从缓存播放切换至实时直播,该第二时间点为检测到该第一切换指令的时间点。在播放实时直播的视频帧和音频帧的过程中,当检测到第二切换指令时,获取该第二时间点之前缓存的视频帧和音频帧进行播放,该第二切换指令用于从实时直播切换至缓存播放。
当第二流媒体服务器将缓存的视频帧和音频帧携带在第二媒体流中全部发送给该第二终端后,第二流媒体服务器可能仍在继续接收第一终端的媒体流,考虑到第二终端从头播放完获取到的视频帧和音频帧后,观众用户可能想观看主播用户当前直播的实时视频,因此,第二流媒体服务器可以将当前接收到的媒体流中的视频帧和音频帧实时发送给第二终端。但是考虑到第二终端播放完获取到的视频帧和音频帧需要一段时间,因此,第二流媒体服务器当前获取到的视频帧和音频帧的时间戳可能与第二终端最后播放的一个视频帧或音频帧的时间戳相差太大,从而影响第二终端的播放效果,因此,第二流媒体服务器可以通过后续步骤,对当前获取到的视频帧和音频帧进行相应处理后再发送给第二终端。
506、当将缓存的视频帧和音频帧全部发送给该第二终端后,第二流媒体服务器继续从第一流媒体服务器接收第一终端实时发送的第一媒体流,在第二媒体流中携带从第一媒体流中实时获取到的视频帧和音频帧并发送给第二终端。
本发明实施例中,当第二流媒体服务器将缓存的视频帧和音频帧全部发送给该第二终端时,记录第一时间戳,该第一时间戳为缓存的视频帧和音频帧的时间戳中最大的时间戳;寻址到从该第一媒体流中获取到的视频帧所属序列的目标关键帧,该目标关键帧为时间戳与当前时间的时间间隔最小关键帧;从该音频帧的时间戳中,确定第二时间戳,该第二时间戳与该目标关键帧的时间戳的差值最小;将该第二时间戳减去该第一时间戳和单帧音频持续时长,得到时间戳偏移值。其中,该单帧音频持续时长的获取过程包括:通过包含该第二时间戳的音频帧的音频头,获取该单帧音频持续时长。
在一种可能实现方式中,第二流媒体服务器可以记录一个时间戳偏移值变量,该时间戳偏移值即为该时间戳偏移值变量的取值。该时间戳偏移值变量为已发送给第二终端的视频帧和音频帧的时间戳中的最大值,与第一终端的媒体流中即将发送给第二终端的视频帧或音频帧的时间戳之间的偏移值变量。
例如,第一时间戳为MaxTimestampOfAV,第二时间戳为TimestampOfF,单帧音频持续时长为DurationOfOneAudioFrame、时间戳偏移值变量为 OffsetOfAV,则第二流媒体服务器可以将 TimestampOfF-MaxTimestampOfAV-DurationOfOneAudioFrame所得到的值作为时间戳偏移值,赋值给OffsetOfAV。
该方式是第二流媒体服务器通过寻址到正在从上一级的流媒体服务器(如第一流媒体服务器或第二流媒体服务器或第一流媒体服务器之间起中转作用的其他流媒体服务器)接收的媒体流中获取的一个视频帧所属序列的目标关键帧,该目标关键帧为时间戳与当前时间的时间间隔最小的关键帧,以该目标关键帧的时间戳为起点,从音频帧缓存队列(包括缓存的所有音频帧)中,获取最接近时间戳小于该关键帧时间戳的音频帧F为真正起点,并将音频帧F的时间戳作为第二时间戳进行记录,通过音频帧F的音频头计算出单帧音频持续时长,将第二时间戳-第一时间戳-单帧音频持续时长所得到的值赋值给时间戳偏移值变量。
之后,当第二流媒体服务器接收到第一终端的媒体流时,并从该第一媒体流中获取到视频帧或音频帧时,将获取到的视频帧或音频帧的时间戳减去该时间戳偏移值,得到新时间戳;在该第二媒体流中携带获取到新时间戳的视频帧或音频帧并发送给该第二终端,使得该第二终端实时播放该第一终端的主播用户当前直播的视频和音频。通过修改每帧的时间戳为该帧当前时间戳减去时间戳偏移值,修改每帧的时间戳后,按正常流程将实时获取到的视频帧和音频帧以媒体流的形式发送给第二终端,使得第二终端可以无缝播放主播用户直播时的视频和音频。
需要说明的是,本发明实施例是以当第二流媒体服务器接收到第二终端的媒体流获取请求时,存在缓存的视频帧和音频帧为例进行说明,在一种可能实现方式中,当接收到该媒体流获取请求时,第二流媒体服务中可能不存在与该多媒体资源标识对应缓存的视频帧和音频帧,此时,第二流媒体服务器可以将该第一时间戳记录为目标数值,执行上述寻址关键帧、确定时间戳偏移值、得到新时间戳以及生成媒体流并发送给该第二终端的步骤。
例如,第二流媒体服务因为缓存过程中的异常情况删除了缓存的视频帧和音频帧。这种情况下,第二流媒体服务在接收到第二终端发送的媒体流获取请求时,可以将第一时间戳记录为目标数值,如0。
需要说明的是,该步骤506为可选步骤,通过为第二终端提供第一终端从主播用户开始基于该多媒体资源进行直播时起采集的视频帧和音频帧,这样可以保障观众用户从头观看主播用户基于多媒体资源进行直播的视频和音频,之后,再为第二终端实时提供主播用户实时直播的视频和音频,在保障观众用户从头观看主播用户基于多媒体资源进行直播的完整视频和音频的基础上,又不失直播的实时性。
由于流媒体服务器缓存较占内存,以多媒体资源为歌曲、一首歌曲的时长是3分钟为例来说,在音视频合计码率150KB时,以千兆网卡来说最多可承载 1000路媒体流,而1000路媒体流全部同时存储占用1000*150*60*3大约为50GB,按目前常用的流媒体服务器内存配置50GB以上来看,完全可以满足条件。采用本发明实施例提供的方案可以在不增加硬件投入的情况下,可有效提升观众的直播体验,为观众用户提供主播用户完整的直播视频和音频。对于歌曲直播来说,该方案使得因为对歌曲本身感兴趣而发起媒体流获取请求的观众来说,可以从头听主播用户演唱的完整歌曲。本发明实施例提供的方案提供了在互联网直播中保证观众听到完整歌曲的一种技术实现机制,包括在视频流中的歌曲播放行为的打点机制(通过第一报文、第二报文和第三报文实现)以及相应的推流端与流媒体服务器的处理机制,例如,第一终端作为推流端,将第一报文、第二报文和第三报文携带在媒体流中发送给流媒体服务器,使得流媒体服务器对相应的视频帧和音频帧进行缓存。
本发明实施例提供的方法,通过在检测到第一终端的主播用户开始直播时,按照预设条件,从第一终端的媒体流中获取视频帧和音频帧进行缓存,并在检测到第二终端的观众用户通过预设方式进入该主播用户的直播间后,将缓存的视频帧和音频帧提供给第二终端。该方法可以为第二终端的观众用户提供主播用户完整的直播视频和音频。
图7是本发明实施例提供的一种媒体流发送装置的结构示意图。参照图7,该装置包括:
缓存模块701,用于当检测到第一终端的主播用户开始直播时,按照预设条件,从该第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存;
发送模块702,用于在该主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入该主播用户的直播间时,基于缓存的视频帧和音频帧生成第二媒体流并发送给该第二终端。
在一种可能实现方式中,该缓存模块701用于:
在接收该第一媒体流的过程中,当检测到该第一媒体流中携带多媒体资源的标识后,从该第一媒体流中获取视频帧和音频帧;
将获取到的视频帧和音频帧与该多媒体资源的标识对应缓存。
在一种可能实现方式中,该发送模块用于当接收到该第二终端发送的媒体流获取请求,且该媒体流获取请求中携带该多媒体资源的标识时,基于与该多媒体资源的标识对应缓存的视频帧和音频帧,生成该第二媒体流并发送给该第二终端。
在一种可能实现方式中,参见图8,该装置还包括:
获取模块703,用于当从该媒体流中获取到伪装成视频帧的第一报文时,从该第一报文中提取该多媒体资源的标识,该第一报文用于指示该第一终端开始播放该多媒体资源。
在一种可能实现方式中,参见图9,该装置还包括:
初始化模块704,用于初始化该第一媒体流对应的第一标志和第二标志的取值均为第一目标值;
生成模块705,用于根据该多媒体资源的标识,生成该多媒体资源的直播记录,该直播记录用于记录该多媒体资源的标识以及指示与该多媒体资源的标识对应缓存的该视频帧和该音频帧;
记录模块706,用于将该第一标志和该第二标志的取值从该第一目标值修改为第二目标值,丢弃该第一报文;
其中,该第一标志的取值为该第二目标值时表示该第一终端正在基于该多媒体资源进行直播,该第二标志的取值为该第二目标值时表示该第一终端开始播放或继续播放该多媒体资源。
在一种可能实现方式中,该缓存模块701用于:
当从该第一媒体流中获取到音频帧,且该第一标志的取值为该第一目标值时,将获取到的音频帧与该多媒体资源的标识对应缓存;
当从该第一媒体流中获取到视频帧,且获取到的视频帧的类型满足目标条件时,将获取到的视频帧与该多媒体资源的标识对应缓存。
在一种可能实现方式中,该缓存模块701还用于当获取到的视频帧为关键帧,且该第二标志的取值为该第一目标值时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧;
该记录模块还用于将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃获取到的视频帧。
在一种可能实现方式中,该获取模块703用于:
当从该媒体流中获取到伪装成视频帧的报文时,解析该报文,获取该报文的类型,该报文的类型包括第一报文、第二报文和第三报文;
当该报文为该第一报文时,执行提取该多媒体资源的标识的步骤;
其中,该第二报文用于指示该第一终端继续播放该多媒体资源,该第三报文用于指示该第一终端结束播放该多媒体资源。
在一种可能实现方式中,该记录模块706还用于当该报文为该第二报文,且该第一标志的取值为该第一目标值时,丢弃该第二报文;
该获取模块703还用于当该报文为该第二报文,且该第一标志的取值为该第二目标值时,从该第二报文中获取多媒体资源的标识;
该记录模块706还用于当获取到的多媒体资源的标识与该多媒体资源的标识相同时,将该第二标志的取值记录为该第二目标值,丢弃该第二报文;
该缓存模块701还用于当获取到的多媒体资源的标识与该多媒体资源的标识不同时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧;
该记录模块706还用于将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃该第二报文。
在一种可能实现方式中,该记录模块706还用于当该报文为该第三报文,且该第一标志的取值为该第一目标值时,丢弃该第三报文;
该获取模块703还用于当该报文为该第三报文,且该第一标志的取值为该第二目标值时,从该第三报文中获取多媒体资源的标识;
该记录模块706还用于当获取到的多媒体资源的标识与该多媒体资源的标识相同时,将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃该第三报文;
该缓存模块701还用于当获取到的多媒体资源的标识与该多媒体资源的标识不同时,删除该多媒体资源的直播记录以及缓存的该视频帧和该音频帧;
该记录模块706还用于将该第一标志和该第二标志的取值均记录为该第一目标值,丢弃该第三报文。
在一种可能实现方式中,该获取模块703还用于:
记录第一时间戳,该第一时间戳为该缓存的视频帧和该音频帧的时间戳中最大的时间戳;
寻址到从该第一媒体流中获取到的视频帧所属序列的目标关键帧,该目标关键帧为时间戳与当前时间的时间间隔最小的关键帧;
从该音频帧的时间戳中,确定第二时间戳,该第二时间戳与该目标关键帧的时间戳的差值最小;
将该第二时间戳减去该第一时间戳和单帧音频持续时长,得到时间戳偏移值;
当从该第一媒体流中获取到视频帧或音频帧时,将获取到的视频帧或音频帧的时间戳减去该时间戳偏移值,得到新时间戳;
在该第二媒体流中携带获取到新时间戳的视频帧或音频帧并发送给该第二终端。
本发明实施例提供的装置,通过在检测到第一终端的主播用户开始直播时,按照预设条件,从第一终端的媒体流中获取视频帧和音频帧进行缓存,并在检测到第二终端的观众用户通过预设方式进入该主播用户的直播间后,将缓存的视频帧和音频帧提供给第二终端。该方法可以为第二终端的观众用户提供主播用户完整的直播视频和音频。
图10是本发明实施例提供的一种媒体流发送装置的结构示意图。参照图10,该装置包括:
采集模块1001,用于当该第一终端的主播用户开始直播时,采集该主播用户直播时的视频帧和音频帧;
发送模块1002,用于基于采集到的视频帧和音频帧生成媒体流并发送给服务器;
该发送模块1002还用于在该主播用户进行直播的时间段内,当开始播放该多媒体资源时,在该媒体流中携带伪装成视频帧的第一报文并发送给该服务器,该第一报文包含该多媒体资源的标识,该第一报文用于指示该第一终端开始播放该多媒体资源。
在一种可能实现方式中,该发送模块1002还用于在继续播放该多媒体资源的过程中,每编码一个关键帧之前,在该媒体流中携带伪装成视频帧的第二报文并发送给该服务器,该第二报文用于指示该第一终端继续播放该多媒体资源。
在一种可能实现方式中,该发送模块1002还用于当结束播放该多媒体资源时,在该媒体流中携带伪装成视频帧的第三报文并发送给该服务器,该第三报文用于指示该第一终端结束播放该多媒体资源。
本发明实施例提供的装置,通过在开始播放多媒体资源时,将该多媒体资源的标识携带在发送给服务器的媒体流中,使得服务器在检测到多媒体资源的标识以后,将从媒体流中获取的视频帧和音频帧进行缓存。由于检测到多媒体资源的标识时表示多媒体资源开始播放,此后从媒体流中获取的视频帧和音频帧即是主播用户基于该多媒体资源进行直播过程中采集的视频帧和音频帧,这样服务器可以将缓存的视频帧和音频帧提供给第二终端,使得第二终端可以基于获取到的该视频帧和该音频帧,从头播放主播用户基于该多媒体资源进行直播时的视频和音频,从而达到为观众用户提供主播用户基于多媒体资源进行直播时的完整视频和音频的目的。
图11是本发明实施例提供的一种媒体流发送装置的结构示意图。参照图11,该装置包括:
接收模块1101,用于当该第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,接收服务器发送的媒体流;
播放模块1102,用于从该媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,该第一时间点为该观众用户进入该直播间的时间点;
该播放模块1102还用于当播放完该第一时间点之前缓存的视频帧和音频帧后,继续从该媒体流中获取该第一时间点之后缓存的视频帧和音频帧进行播放。
在一种可能实现方式中,该播放模块1102还用于在播放缓存的视频帧和音频帧的过程中,当检测到第一切换指令时,获取第二时间点之后实时直播的视频帧和音频帧进行播放;其中,该第一切换指令用于从缓存播放切换至实时直播,该第二时间点为检测到该第一切换指令的时间点。
在一种可能实现方式中,该播放模块1102还用于在播放实时直播的视频帧和音频帧的过程中,当检测到第二切换指令时,获取该第二时间点之前缓存的视频帧和音频帧进行播放,该第二切换指令用于从实时直播切换至缓存播放。
在一种可能实现方式中,参见图12,该装置还包括:
显示模块1103,用于显示直播分享页面,该直播分享页面用于指示该主播用户正在基于多媒体资源进行直播;
发送模块1104,用于当检测到对该直播分享页面的触发操作时,向该服务器发送媒体流获取请求,该媒体流获取请求携带该多媒体资源的标识。
本发明实施例提供的装置,通过在观众用户通过预设方式进入第一终端的主播用户的直播间后,从该媒体流中获取缓存的视频帧和音频帧进行播放,可以为第二终端的观众用户提供主播用户完整的直播视频和音频。
需要说明的是:上述各个实施例提供的媒体流发送装置在媒体流发送时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的媒体流发送装置与媒体流发送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图13是本发明实施例提供的一种终端1300的结构示意图。该终端1300可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1300还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1300包括有:处理器1301和存储器1302。
处理器1301可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1301可以采用DSP(Digital Signal Processing,数字信号处理)、 FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA (Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1301也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1301可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器 1301还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1302可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1302还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1302中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1301所执行以实现本申请中方法实施例提供的媒体流发送方法。
在一些实施例中,终端1300还可选包括有:***设备接口1303和至少一个***设备。处理器1301、存储器1302和***设备接口1303之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口1303相连。具体地,***设备包括:射频电路1304、显示屏1305、摄像头 1306、音频电路1307、定位组件1308和电源1309中的至少一种。
***设备接口1303可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器1301和存储器1302。在一些实施例中,处理器1301、存储器1302和***设备接口1303被集成在同一芯片或电路板上;在一些其他实施例中,处理器1301、存储器1302和***设备接口1303中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1304用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1304通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1304将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1304包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1304可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G 及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1304还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1305用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1305是触摸显示屏时,显示屏1305还具有采集在显示屏1305的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1301进行处理。此时,显示屏1305 还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1305可以为一个,设置终端1300的前面板;在另一些实施例中,显示屏1305可以为至少两个,分别设置在终端1300的不同表面或呈折叠设计;在再一些实施例中,显示屏1305可以是柔性显示屏,设置在终端1300的弯曲表面上或折叠面上。甚至,显示屏1305还可以设置成非矩形的不规则图形,也即异形屏。显示屏1305可以采用LCD(Liquid Crystal Display,液晶显示屏)、 OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1306用于采集图像或视频。可选地,摄像头组件1306包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1306还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1307可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1301进行处理,或者输入至射频电路 1304以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1300的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1301或射频电路1304的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1307还可以包括耳机插孔。
定位组件1308用于定位终端1300的当前地理位置,以实现导航或LBS (LocationBased Service,基于位置的服务)。定位组件1308可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源1309用于为终端1300中的各个组件进行供电。电源1309可以是交流电、直流电、一次性电池或可充电电池。当电源1309包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1300还包括有一个或多个传感器1310。该一个或多个传感器1310包括但不限于:加速度传感器1311、陀螺仪传感器1312、压力传感器1313、指纹传感器1314、光学传感器1315以及接近传感器1316。
加速度传感器1311可以检测以终端1300建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1311可以用于检测重力加速度在三个坐标轴上的分量。处理器1301可以根据加速度传感器1311采集的重力加速度信号,控制触摸显示屏1305以横向视图或纵向视图进行用户界面的显示。加速度传感器1311还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1312可以检测终端1300的机体方向及转动角度,陀螺仪传感器1312可以与加速度传感器1311协同采集用户对终端1300的3D动作。处理器1301根据陀螺仪传感器1312采集的数据,可以实现如下功能:动作感应 (比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1313可以设置在终端1300的侧边框和/或触摸显示屏1305的下层。当压力传感器1313设置在终端1300的侧边框时,可以检测用户对终端1300 的握持信号,由处理器1301根据压力传感器1313采集的握持信号进行左右手识别或快捷操作。当压力传感器1313设置在触摸显示屏1305的下层时,由处理器1301根据用户对触摸显示屏1305的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1314用于采集用户的指纹,由处理器1301根据指纹传感器1314 采集到的指纹识别用户的身份,或者,由指纹传感器1314根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1301授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1314可以被设置终端1300的正面、背面或侧面。当终端1300上设置有物理按键或厂商Logo时,指纹传感器1314可以与物理按键或厂商Logo集成在一起。
光学传感器1315用于采集环境光强度。在一个实施例中,处理器1301可以根据光学传感器1315采集的环境光强度,控制触摸显示屏1305的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1305的显示亮度;当环境光强度较低时,调低触摸显示屏1305的显示亮度。在另一个实施例中,处理器1301 还可以根据光学传感器1315采集的环境光强度,动态调整摄像头组件1306的拍摄参数。
接近传感器1316,也称距离传感器,通常设置在终端1300的前面板。接近传感器1316用于采集用户与终端1300的正面之间的距离。在一个实施例中,当接近传感器1316检测到用户与终端1300的正面之间的距离逐渐变小时,由处理器1301控制触摸显示屏1305从亮屏状态切换为息屏状态;当接近传感器 1316检测到用户与终端1300的正面之间的距离逐渐变大时,由处理器1301控制触摸显示屏1305从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图13中示出的结构并不构成对终端1300的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图14是本发明实施例提供的一种服务器1400的结构示意图,该服务器1400 可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器 (centralprocessing units,CPU)1401和一个或一个以上的存储器1402,其中,该存储器1402中存储有至少一条指令,该至少一条指令由该处理器1401加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,例如存储有计算机程序的存储器,上述计算机程序被处理器执行时实现上述实施例中的媒体流发送方法。例如,该计算机可读存储介质可以是只读内存 (Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-OnlyMemory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上该仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (46)

1.一种媒体流发送方法,其特征在于,应用于服务器,所述方法包括:
当检测到第一终端的主播用户开始直播时,按照预设条件,从所述第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存;
在所述主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间;
基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端;
所述当检测到第一终端的主播用户开始直播时,按照预设条件,从所述第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存,包括:
在接收所述第一媒体流的过程中,当检测到所述第一媒体流中携带多媒体资源的标识后,从所述第一媒体流中获取视频帧和音频帧,所述多媒体资源的标识用于指示所述第一终端播放的多媒体资源;
将获取到的视频帧和音频帧与所述多媒体资源的标识对应缓存;
所述基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端,包括:
当接收到所述第二终端发送的媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成所述第二媒体流并发送给所述第二终端。
2.根据权利要求1所述的方法,其特征在于,所述检测到所述第一媒体流中携带多媒体资源的标识,包括:
当从所述第一媒体流中获取到伪装成视频帧的第一报文时,从所述第一报文中提取所述多媒体资源的标识,所述第一报文用于指示所述第一终端开始播放所述多媒体资源。
3.根据权利要求2所述的方法,其特征在于,所述从所述第一媒体流中获取到伪装成视频帧的第一报文之前,所述方法还包括:
初始化所述第一媒体流对应的第一标志和第二标志的取值均为第一目标值;
相应地,所述从所述第一报文中提取所述多媒体资源的标识之后,所述方法还包括:
根据所述多媒体资源的标识,生成所述多媒体资源的直播记录,将所述第一标志和所述第二标志的取值从所述第一目标值修改为第二目标值,丢弃所述第一报文,所述直播记录用于记录所述多媒体资源的标识以及指示与所述多媒体资源的标识对应缓存的所述视频帧和所述音频帧;
其中,所述第一标志的取值为所述第二目标值时表示所述第一终端正在基于所述多媒体资源进行直播,所述第二标志的取值为所述第二目标值时表示所述第一终端开始播放或继续播放所述多媒体资源。
4.根据权利要求3所述的方法,其特征在于,所述将所述视频帧和所述音频帧与所述多媒体资源的标识对应缓存,包括:
当从所述第一媒体流中获取到音频帧,且所述第一标志的取值为所述第一目标值时,将获取到的音频帧与所述多媒体资源的标识对应缓存;
当从所述第一媒体流中获取到视频帧,且获取到的视频帧的类型满足目标条件时,将获取到的视频帧与所述多媒体资源的标识对应缓存。
5.根据权利要求4所述的方法,其特征在于,所述目标条件包括第一条件和第二条件,
所述第一条件为获取到的视频帧为关键帧,且所述第二标志的取值为所述第二目标值;
所述第二条件为获取到的视频帧不是伪装成视频帧的报文和关键帧,且所述第一标志的取值为所述第二目标值。
6.根据权利要求4所述的方法,其特征在于,所述当从所述第一媒体流中获取到视频帧之后,所述方法还包括:
当获取到的视频帧为关键帧,且所述第二标志的取值为所述第一目标值时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧,并将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃获取到的视频帧。
7.根据权利要求3所述的方法,其特征在于,当从所述第一媒体流中获取到伪装成视频帧的第一报文时,从所述第一报文中提取所述多媒体资源的标识,包括:
当从所述第一媒体流中获取到伪装成视频帧的报文时,解析所述报文,获取所述报文的类型,所述报文的类型包括第一报文、第二报文和第三报文;
当所述报文为所述第一报文时,执行提取所述多媒体资源的标识的步骤;
其中,所述第二报文用于指示所述第一终端继续播放所述多媒体资源,所述第三报文用于指示所述第一终端结束播放所述多媒体资源。
8.根据权利要求7所述的方法,其特征在于,所述获取所述报文的类型之后,所述方法还包括:
当所述报文为所述第二报文,且所述第一标志的取值为所述第一目标值时,丢弃所述第二报文;
当所述报文为所述第二报文,且所述第一标志的取值为所述第二目标值时,从所述第二报文中获取多媒体资源的标识;
当获取到的多媒体资源的标识与所述多媒体资源的标识相同时,将所述第二标志的取值记录为所述第二目标值,丢弃所述第二报文;
当获取到的多媒体资源的标识与所述多媒体资源的标识不同时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧,并将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第二报文。
9.根据权利要求7所述的方法,其特征在于,所述获取所述报文的类型之后,所述方法还包括:
当所述报文为所述第三报文,且所述第一标志的取值为所述第一目标值时,丢弃所述第三报文;
当所述报文为所述第三报文,且所述第一标志的取值为所述第二目标值时,从所述第三报文中获取多媒体资源的标识;
当获取到的多媒体资源的标识与所述多媒体资源的标识相同时,将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第三报文;
当获取到的多媒体资源的标识与所述多媒体资源的标识不同时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧,并将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第三报文。
10.根据权利要求1所述的方法,其特征在于,所述基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端之后,所述方法还包括:
记录第一时间戳,所述第一时间戳为所述缓存的视频帧和音频帧的时间戳中最大的时间戳;
寻址到从所述第一媒体流中获取到的视频帧所属序列的目标关键帧,所述目标关键帧为时间戳与当前时间的时间间隔最小的关键帧;
从所述音频帧的时间戳中,确定第二时间戳,所述第二时间戳与所述目标关键帧的时间戳的差值最小;
将所述第二时间戳减去所述第一时间戳和单帧音频持续时长,得到时间戳偏移值;
当从所述第一媒体流中获取到视频帧或音频帧时,将获取到的视频帧或音频帧的时间戳减去所述时间戳偏移值,得到新时间戳;
在所述第二媒体流中携带获取到新时间戳的视频帧或音频帧并发送给所述第二终端。
11.根据权利要求10所述的方法,其特征在于,所述单帧音频持续时长的获取过程包括:
通过包含所述第二时间戳的音频帧的音频头,获取所述单帧音频持续时长。
12.根据权利要求10所述的方法,其特征在于,所述检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间之后,所述方法还包括:
当不存在缓存的视频帧和音频帧时,将所述第一时间戳记录为目标数值,执行寻址关键帧、确定时间戳偏移值、得到新时间戳以及发送给所述第二终端的步骤。
13.根据权利要求1所述的方法,其特征在于,所述检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间之后,所述方法还包括:
在第一条件下,在所述第二媒体流中携带缓存的视频帧和音频帧并发送给所述第二终端;
在第二条件下,从所述第一媒体流中实时获取视频帧和音频帧后,在所述第二媒体流中携带实时获取的视频帧和音频帧并发送给所述第二终端。
14.根据权利要求13所述的方法,其特征在于,所述第一条件为接收到所述第二终端的第一请求,所述第一请求用于请求获取缓存的视频帧和音频帧;
所述第二条件为接收到所述第二终端的第二请求,所述第二请求用于请求获取实时直播的视频帧和音频帧。
15.一种媒体流发送方法,其特征在于,应用于第一终端,所述方法包括:
当所述第一终端的主播用户开始直播时,采集所述主播用户直播时的视频帧和音频帧;
基于采集到的视频帧和音频帧生成媒体流并发送给服务器;
在所述主播用户进行直播的时间段内,当开始播放多媒体资源时,在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器,所述第一报文包含所述多媒体资源的标识,所述多媒体资源的标识用于指示所述第一终端播放的多媒体资源,所述第一报文用于指示所述第一终端开始播放所述多媒体资源;
所述服务器用于在接收所述媒体流的过程中,当检测到所述媒体流中携带多媒体资源的标识后,从所述媒体流中获取视频帧和音频帧;将获取到的视频帧和音频帧与所述多媒体资源的标识对应缓存;
所述服务器还用于在所述主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间;当接收到所述第二终端发送的媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成媒体流并发送给所述第二终端。
16.根据权利要求15所述的方法,其特征在于,所述在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器之后,所述方法还包括:
当采集到视频帧时,将采集到的视频帧编码为关键帧后,在所述媒体流中携带所述关键帧发送给所述服务器。
17.根据权利要求15所述的方法,其特征在于,所述在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器之后,所述方法还包括:
在继续播放所述多媒体资源的过程中,每编码一个关键帧之前,在所述媒体流中携带伪装成视频帧的第二报文并发送给所述服务器,所述第二报文用于指示所述第一终端继续播放所述多媒体资源。
18.根据权利要求15所述的方法,其特征在于,所述在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器之后,所述方法还包括:
当结束播放所述多媒体资源时,在所述媒体流中携带伪装成视频帧的第三报文并发送给所述服务器,所述第三报文用于指示所述第一终端结束播放所述多媒体资源。
19.一种媒体流发送方法,其特征在于,应用于第二终端,所述方法包括:
当所述第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,接收服务器发送的媒体流;
从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,所述第一时间点为所述观众用户进入所述直播间的时间点;
当播放完所述第一时间点之前缓存的视频帧和音频帧后,继续从所述媒体流中获取所述第一时间点之后缓存的视频帧和音频帧进行播放;
所述当所述第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,接收服务器发送的媒体流,包括:
当所述第二终端的观众用户通过所述预设方式进入所述第一终端的主播用户的直播间后,向所述服务器发送媒体流获取请求,所述媒体流获取请求携带多媒体资源的标识,所述多媒体资源的标识用于指示所述第一终端播放的多媒体资源;
所述服务器用于当接收到所述媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成所述媒体流并发送给所述第二终端。
20.根据权利要求19所述的方法,其特征在于,所述从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,包括:
从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧;
当接收到播放指令时,播放所述第一时间点之前缓存的视频帧和音频帧。
21.根据权利要求19所述的方法,其特征在于,所述方法还包括:
在播放缓存的视频帧和音频帧的过程中,当检测到第一切换指令时,获取第二时间点之后实时直播的视频帧和音频帧进行播放;
其中,所述第一切换指令用于从缓存播放切换至实时直播,所述第二时间点为检测到所述第一切换指令的时间点。
22.根据权利要求21所述的方法,其特征在于,所述方法还包括:
在播放实时直播的视频帧和音频帧的过程中,当检测到第二切换指令时,获取所述第二时间点之前缓存的视频帧和音频帧进行播放,所述第二切换指令用于从实时直播切换至缓存播放。
23.根据权利要求19所述的方法,其特征在于,所述从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放之前,所述方法还包括:
显示直播分享页面,所述直播分享页面用于指示所述主播用户正在基于多媒体资源进行直播;
当检测到对所述直播分享页面的触发操作时,向所述服务器发送媒体流获取请求,所述媒体流获取请求携带所述多媒体资源的标识。
24.一种媒体流发送***,其特征在于,所述***包括第一终端、服务器和第二终端,
所述第一终端用于采集主播用户直播时的视频帧和音频帧,并基于采集到的视频帧和音频帧生成第一媒体流发送给所述服务器;
所述服务器用于按照预设条件,从所述第一媒体流中获取视频帧和音频帧进行缓存,并在检测到所述第二终端的观众用户通过预设方式进入所述主播用户的直播间时,基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端;
所述第二终端用于从所述第二媒体流中,获取第一时间点之前缓存的视频帧和音频帧进行播放,当播放完所述第一时间点之前缓存的视频帧和音频帧后,继续从所述第二媒体流中获取所述第一时间点之后缓存的视频帧和音频帧进行播放,所述第一时间点为所述观众用户进入所述直播间的时间点;
所述按照预设条件,从所述第一媒体流中获取视频帧和音频帧进行缓存,包括:
在接收所述第一媒体流的过程中,当检测到所述第一媒体流中携带多媒体资源的标识后,从所述第一媒体流中获取视频帧和音频帧,将获取到的所述视频帧和音频帧与所述多媒体资源的标识对应缓存,所述多媒体资源的标识用于指示所述第一终端播放的多媒体资源;
所述在检测到所述第二终端的观众用户通过预设方式进入所述主播用户的直播间时,基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端,包括:
当接收到所述第二终端发送的媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成所述第二媒体流并发送给所述第二终端。
25.根据权利要求24所述的***,其特征在于,所述第一终端用于:
在所述主播用户进行直播的时间段内,当开始播放多媒体资源时,在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器,所述第一报文包含所述多媒体资源的标识;
在继续播放所述多媒体资源的过程中,每编码一个关键帧之前,在所述媒体流中携带伪装成视频帧的第二报文并发送给所述服务器;
当结束播放所述多媒体资源时,在所述媒体流中携带将伪装成视频帧的第三报文发送给所述服务器。
26.根据权利要求24所述的***,其特征在于,所述服务器用于在第一条件下,在所述第二媒体流中携带缓存的视频帧和音频帧并发送给所述第二终端,或,
所述服务器用于在第二条件下,从所述第一媒体流中实时获取视频帧和音频帧后,在所述第二媒体流中携带实时获取的视频帧和音频帧并发送给所述第二终端。
27.根据权利要求26所述的***,其特征在于,所述第一条件为接收到所述第二终端的第一请求,所述第一请求用于请求获取缓存的视频帧和音频帧;
所述第二条件为接收到所述第二终端的第二请求,所述第二请求用于请求获取实时直播的视频帧和音频帧。
28.一种媒体流发送装置,其特征在于,应用于服务器,所述装置包括:
缓存模块,用于当检测到第一终端的主播用户开始直播时,按照预设条件,从所述第一终端发送的第一媒体流中获取视频帧和音频帧进行缓存;
发送模块,用于在所述主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间时,基于缓存的视频帧和音频帧生成第二媒体流并发送给所述第二终端;
所述缓存模块用于:在接收所述第一媒体流的过程中,当检测到所述第一媒体流中携带多媒体资源的标识后,从所述第一媒体流中获取视频帧和音频帧;将获取到的视频帧和音频帧与所述多媒体资源的标识对应缓存,所述多媒体资源的标识用于指示所述第一终端播放的多媒体资源;
所述发送模块用于当接收到所述第二终端发送的媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成所述第二媒体流并发送给所述第二终端。
29.根据权利要求28所述的装置,其特征在于,所述装置还包括:
获取模块,用于当从所述媒体流中获取到伪装成视频帧的第一报文时,从所述第一报文中提取所述多媒体资源的标识,所述第一报文用于指示所述第一终端开始播放所述多媒体资源。
30.根据权利要求29所述的装置,其特征在于,所述装置还包括:
初始化模块,用于初始化所述第一媒体流对应的第一标志和第二标志的取值均为第一目标值;
生成模块,用于根据所述多媒体资源的标识,生成所述多媒体资源的直播记录,所述直播记录用于记录所述多媒体资源的标识以及指示与所述多媒体资源的标识对应缓存的所述视频帧和所述音频帧;
记录模块,用于将所述第一标志和所述第二标志的取值从所述第一目标值修改为第二目标值,丢弃所述第一报文;
其中,所述第一标志的取值为所述第二目标值时表示所述第一终端正在基于所述多媒体资源进行直播,所述第二标志的取值为所述第二目标值时表示所述第一终端开始播放或继续播放所述多媒体资源。
31.根据权利要求30所述的装置,其特征在于,所述缓存模块用于:
当从所述第一媒体流中获取到音频帧,且所述第一标志的取值为所述第一目标值时,将获取到的音频帧与所述多媒体资源的标识对应缓存;
当从所述第一媒体流中获取到视频帧,且获取到的视频帧的类型满足目标条件时,将获取到的视频帧与所述多媒体资源的标识对应缓存。
32.根据权利要求31所述的装置,其特征在于,
所述缓存模块还用于当获取到的视频帧为关键帧,且所述第二标志的取值为所述第一目标值时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧;
所述记录模块还用于将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃获取到的视频帧。
33.根据权利要求30所述的装置,其特征在于,所述获取模块用于:
当从所述媒体流中获取到伪装成视频帧的报文时,解析所述报文,获取所述报文的类型,所述报文的类型包括第一报文、第二报文和第三报文;
当所述报文为所述第一报文时,执行提取所述多媒体资源的标识的步骤;
其中,所述第二报文用于指示所述第一终端继续播放所述多媒体资源,所述第三报文用于指示所述第一终端结束播放所述多媒体资源。
34.根据权利要求33所述的装置,其特征在于,所述装置还包括:
记录模块,用于当所述报文为所述第二报文,且所述第一标志的取值为所述第一目标值时,丢弃所述第二报文;
所述获取模块还用于当所述报文为所述第二报文,且所述第一标志的取值为所述第二目标值时,从所述第二报文中获取多媒体资源的标识;
所述记录模块还用于当获取到的多媒体资源的标识与所述多媒体资源的标识相同时,将所述第二标志的取值记录为所述第二目标值,丢弃所述第二报文;
所述缓存模块还用于当获取到的多媒体资源的标识与所述多媒体资源的标识不同时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧;
所述记录模块还用于将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第二报文。
35.根据权利要求33所述的装置,其特征在于,所述装置还包括:
记录模块,用于当所述报文为所述第三报文,且所述第一标志的取值为所述第一目标值时,丢弃所述第三报文;
所述获取模块还用于当所述报文为所述第三报文,且所述第一标志的取值为所述第二目标值时,从所述第三报文中获取多媒体资源的标识;
所述记录模块还用于当获取到的多媒体资源的标识与所述多媒体资源的标识相同时,将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第三报文;
所述缓存模块还用于当获取到的多媒体资源的标识与所述多媒体资源的标识不同时,删除所述多媒体资源的直播记录以及缓存的所述视频帧和所述音频帧;
所述记录模块还用于将所述第一标志和所述第二标志的取值均记录为所述第一目标值,丢弃所述第三报文。
36.根据权利要求28所述的装置,其特征在于,所述获取模块还用于:
记录第一时间戳,所述第一时间戳为所述缓存的视频帧和所述音频帧的时间戳中最大的时间戳;
寻址到从所述第一媒体流中获取到的视频帧所属序列的目标关键帧,所述目标关键帧为时间戳与当前时间的时间间隔最小的关键帧;
从所述音频帧的时间戳中,确定第二时间戳,所述第二时间戳与所述目标关键帧的时间戳的差值最小;
将所述第二时间戳减去所述第一时间戳和单帧音频持续时长,得到时间戳偏移值;
当从所述第一媒体流中获取到视频帧或音频帧时,将获取到的视频帧或音频帧的时间戳减去所述时间戳偏移值,得到新时间戳;
在所述第二媒体流中携带获取到新时间戳的视频帧或音频帧并发送给所述第二终端。
37.一种媒体流发送装置,其特征在于,应用于第一终端,所述装置包括:
采集模块,用于当所述第一终端的主播用户开始直播时,采集所述主播用户直播时的视频帧和音频帧;
发送模块,用于基于采集到的视频帧和音频帧生成媒体流并发送给服务器;
所述发送模块还用于在所述主播用户进行直播的时间段内,当开始播放多媒体资源时,在所述媒体流中携带伪装成视频帧的第一报文并发送给所述服务器,所述第一报文包含所述多媒体资源的标识,所述多媒体资源的标识用于指示所述第一终端播放的多媒体资源,所述第一报文用于指示所述第一终端开始播放所述多媒体资源;
所述服务器用于在接收所述媒体流的过程中,当检测到所述媒体流中携带多媒体资源的标识后,从所述媒体流中获取视频帧和音频帧;将获取到的视频帧和音频帧与所述多媒体资源的标识对应缓存;
所述服务器还用于在所述主播用户进行直播的时间段内,检测到第二终端的观众用户通过预设方式进入所述主播用户的直播间;当接收到所述第二终端发送的媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成媒体流并发送给所述第二终端。
38.根据权利要求37所述的装置,其特征在于,所述发送模块还用于在继续播放所述多媒体资源的过程中,每编码一个关键帧之前,在所述媒体流中携带伪装成视频帧的第二报文并发送给所述服务器,所述第二报文用于指示所述第一终端继续播放所述多媒体资源。
39.根据权利要求37所述的装置,其特征在于,所述发送模块还用于当结束播放所述多媒体资源时,在所述媒体流中携带伪装成视频帧的第三报文并发送给所述服务器,所述第三报文用于指示所述第一终端结束播放所述多媒体资源。
40.一种媒体流发送装置,其特征在于,应用于第二终端,所述装置包括:
接收模块,用于当所述第二终端的观众用户通过预设方式进入第一终端的主播用户的直播间后,接收服务器发送的媒体流;
播放模块,用于从所述媒体流中获取第一时间点之前缓存的视频帧和音频帧进行播放,所述第一时间点为所述观众用户进入所述直播间的时间点;
所述播放模块还用于当播放完所述第一时间点之前缓存的视频帧和音频帧后,继续从所述媒体流中获取所述第一时间点之后缓存的视频帧和音频帧进行播放;
所述接收模块,用于当所述第二终端的观众用户通过所述预设方式进入所述第一终端的主播用户的直播间后,向所述服务器发送媒体流获取请求,所述媒体流获取请求携带多媒体资源的标识,所述多媒体资源标识用于指示所述第一终端播放的多媒体资源;所述服务器用于当接收到所述媒体流获取请求,且所述媒体流获取请求中携带所述多媒体资源的标识时,基于与所述多媒体资源的标识对应缓存的视频帧和音频帧,生成所述媒体流并发送给所述第二终端。
41.根据权利要求40所述的装置,其特征在于,所述播放模块还用于在播放缓存的视频帧和音频帧的过程中,当检测到第一切换指令时,获取第二时间点之后实时直播的视频帧和音频帧进行播放;其中,所述第一切换指令用于从缓存播放切换至实时直播,所述第二时间点为检测到所述第一切换指令的时间点。
42.根据权利要求41所述的装置,其特征在于,所述播放模块还用于在播放实时直播的视频帧和音频帧的过程中,当检测到第二切换指令时,获取所述第二时间点之前缓存的视频帧和音频帧进行播放,所述第二切换指令用于从实时直播切换至缓存播放。
43.根据权利要求42所述的装置,其特征在于,所述装置还包括:
显示模块,用于显示直播分享页面,所述直播分享页面用于指示所述主播用户正在基于多媒体资源进行直播;
发送模块,用于当检测到对所述直播分享页面的触发操作时,向所述服务器发送媒体流获取请求,所述媒体流获取请求携带所述多媒体资源的标识。
44.一种服务器,其特征在于,包括处理器和存储器;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序,实现权利要求1-14任一项所述的方法步骤。
45.一种终端,其特征在于,包括处理器和存储器;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序,实现权利要求15-23任一项所述的方法步骤。
46.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-23任一项所述的方法步骤。
CN201810426235.5A 2018-05-07 2018-05-07 媒体流发送方法、装置、***及服务器、终端、存储介质 Active CN108600778B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810426235.5A CN108600778B (zh) 2018-05-07 2018-05-07 媒体流发送方法、装置、***及服务器、终端、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810426235.5A CN108600778B (zh) 2018-05-07 2018-05-07 媒体流发送方法、装置、***及服务器、终端、存储介质

Publications (2)

Publication Number Publication Date
CN108600778A CN108600778A (zh) 2018-09-28
CN108600778B true CN108600778B (zh) 2020-11-03

Family

ID=63620927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810426235.5A Active CN108600778B (zh) 2018-05-07 2018-05-07 媒体流发送方法、装置、***及服务器、终端、存储介质

Country Status (1)

Country Link
CN (1) CN108600778B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109218746B (zh) 2018-11-09 2020-07-07 北京达佳互联信息技术有限公司 获取视频片段的方法、装置和存储介质
CN109698963B (zh) * 2018-12-29 2021-11-26 卓米私人有限公司 一种直播方法、装置、电子设备及可读存储介质
CN110290392B (zh) * 2019-06-28 2021-05-14 广州酷狗计算机科技有限公司 直播信息显示方法、装置、设备及存储介质
CN111010603A (zh) * 2019-12-18 2020-04-14 浙江大华技术股份有限公司 一种视频缓存转发处理方法及装置
CN113141519B (zh) * 2021-06-23 2021-09-17 大学长(北京)网络教育科技有限公司 一种直播数据处理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103458282A (zh) * 2012-06-05 2013-12-18 腾讯科技(深圳)有限公司 视频直播方法及直播装置
CN104469512A (zh) * 2013-09-25 2015-03-25 浙江大华技术股份有限公司 一种视频播放器及其控制视频播放的方法
CN104572952A (zh) * 2014-12-29 2015-04-29 乐视网信息技术(北京)股份有限公司 直播多媒体文件的识别方法及装置
CN106210919A (zh) * 2016-07-20 2016-12-07 广州酷狗计算机科技有限公司 一种播放主播歌唱视频的方法、装置和***
CN106454389A (zh) * 2016-10-10 2017-02-22 广州酷狗计算机科技有限公司 一种直播视频的播放方法与装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101272199A (zh) * 2008-05-14 2008-09-24 中兴通讯股份有限公司 一种广播节目变速播放处理方法和终端
CN101917591B (zh) * 2009-12-17 2012-11-14 新奥特(北京)视频技术有限公司 一种直播视频的回放方法及装置
CN102075795A (zh) * 2010-12-21 2011-05-25 深圳市同洲电子股份有限公司 热点电视节目发布的方法及***
US20140129221A1 (en) * 2012-03-23 2014-05-08 Dwango Co., Ltd. Sound recognition device, non-transitory computer readable storage medium stored threreof sound recognition program, and sound recognition method
CN103763581A (zh) * 2013-05-02 2014-04-30 乐视网信息技术(北京)股份有限公司 一种实现直播回看的方法和***
CN104469433B (zh) * 2013-09-13 2018-09-07 深圳市腾讯计算机***有限公司 一种视频直播回看方法及装置
US9692800B2 (en) * 2014-06-11 2017-06-27 Google Inc. Enhanced streaming media playback
CN104301741B (zh) * 2014-09-26 2018-06-22 北京奇艺世纪科技有限公司 一种数据直播***和方法
CN104581221A (zh) * 2014-12-25 2015-04-29 广州酷狗计算机科技有限公司 视频直播的方法和装置
CN106993239B (zh) * 2017-03-29 2019-12-10 广州酷狗计算机科技有限公司 直播过程中的信息显示方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103458282A (zh) * 2012-06-05 2013-12-18 腾讯科技(深圳)有限公司 视频直播方法及直播装置
CN104469512A (zh) * 2013-09-25 2015-03-25 浙江大华技术股份有限公司 一种视频播放器及其控制视频播放的方法
CN104572952A (zh) * 2014-12-29 2015-04-29 乐视网信息技术(北京)股份有限公司 直播多媒体文件的识别方法及装置
CN106210919A (zh) * 2016-07-20 2016-12-07 广州酷狗计算机科技有限公司 一种播放主播歌唱视频的方法、装置和***
CN106454389A (zh) * 2016-10-10 2017-02-22 广州酷狗计算机科技有限公司 一种直播视频的播放方法与装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于流媒体的移动视频直播***的设计与实现";彭宏;《电子技术应用》;20141231;第40卷(第9期);全文 *

Also Published As

Publication number Publication date
CN108600778A (zh) 2018-09-28

Similar Documents

Publication Publication Date Title
CN108600778B (zh) 媒体流发送方法、装置、***及服务器、终端、存储介质
CN111147878B (zh) 直播中的推流方法、装置及计算机存储介质
CN110213616B (zh) 视频提供方法、获取方法、装置及设备
CN108966008B (zh) 直播视频回放方法及装置
CN108259945B (zh) 处理播放多媒体数据的播放请求的方法和装置
CN108093268B (zh) 进行直播的方法和装置
CN110213636B (zh) 在线视频的视频帧生成方法、装置、存储介质及设备
CN109874043B (zh) 视频流发送方法、播放方法及装置
CN109660817B (zh) 视频直播方法、装置及***
CN111093108B (zh) 音画同步判断方法、装置、终端及计算机可读存储介质
CN109413453B (zh) 视频播放方法、装置、终端及存储介质
WO2022134684A1 (zh) 基于直播应用程序的互动方法、装置、设备及存储介质
CN113542839A (zh) 电子设备的投屏方法和电子设备
CN110418152B (zh) 进行直播提示的方法及装置
CN109194972B (zh) 直播流获取方法、装置、计算机设备及存储介质
CN108769738B (zh) 视频处理方法、装置、计算机设备和存储介质
CN107896337B (zh) 信息推广方法、装置及存储介质
CN111596885B (zh) 音频数据处理方法、服务器及存储介质
CN113490010B (zh) 基于直播视频的互动方法、装置、设备及存储介质
CN112995759A (zh) 互动业务处理方法、***、装置、设备及存储介质
CN112969093A (zh) 互动业务处理方法、装置、设备及存储介质
CN108833970B (zh) 直播录制的方法、装置、计算机设备及存储介质
CN111245852A (zh) 流数据传输方法、装置、***、接入设备及存储介质
CN111131272B (zh) 流服务器的调度方法、装置及***、计算设备、存储介质
CN111399796B (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