CN107493510B - 直播间内直播流播放方法、装置、计算机存储介质及设备 - Google Patents

直播间内直播流播放方法、装置、计算机存储介质及设备 Download PDF

Info

Publication number
CN107493510B
CN107493510B CN201710851670.8A CN201710851670A CN107493510B CN 107493510 B CN107493510 B CN 107493510B CN 201710851670 A CN201710851670 A CN 201710851670A CN 107493510 B CN107493510 B CN 107493510B
Authority
CN
China
Prior art keywords
data
live
time length
streaming data
thread
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
CN201710851670.8A
Other languages
English (en)
Other versions
CN107493510A (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.)
Chenzhou Lanbing Computer Service 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 CN201710851670.8A priority Critical patent/CN107493510B/zh
Publication of CN107493510A publication Critical patent/CN107493510A/zh
Application granted granted Critical
Publication of CN107493510B publication Critical patent/CN107493510B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • 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
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/858Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
    • H04N21/8586Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL

Abstract

本发明涉及网络直播技术领域,尤其涉及直播间内直播流播放方法、装置、计算机存储介质及设备,包括利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;将解码后得到的数据存储到直播数据输出列表中并进行播放;在解码线程进行解码的过程中:判断直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值;若第一时间长度小于或等于第一时间长度阈值,则拉流线程拉取新的直播流数据并缓存到直播流数据缓存队列中;若第一时间长度大于第一时间长度阈值,则拉流线程停止拉取新的直播流数据,直至第一时间长度小于或等于第一时间长度阈值。本发明解决了直播过程出现的卡顿,使得直播过程流畅。

Description

直播间内直播流播放方法、装置、计算机存储介质及设备
技术领域
本发明涉及网络直播技术领域,尤其涉及直播间内直播流播放方法、装置、计算机存储介质及设备。
背景技术
随着直播平台的兴起,各种各样的直播软件层出不穷,从传统的PC端播放器,到浏览器中的Flash播放器,再到移动端的播放器,均可以进行直播间视频流的观看。对于直播软件而言,其核心技术是直播流的拉取和解码。
在现有的直播软件中,通常,直播流的拉取和解码在同一个线程中执行,而,对于直播流而言,直播流的分辨率越大,解码该直播流的时间越长,这样,直播流的解码过程势必会影响到直播流的拉取过程,从而出现来不及拉取新的直播流的现象,导致直播过程卡顿。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的直播间内直播流播放方法、装置、计算机存储介质及设备。
本发明实施例提供一种直播间内直播流播放方法,包括:
利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;
将所述解码线程解码后得到的数据存储到直播数据输出列表中;
将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值;
若所述第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
优选的,所述直播流数据包含视频流数据和/或音频流数据,所述直播流数据缓存队列对应包含视频流数据缓存队列和/或音频流数据缓存队列,所述解码线程对应包含视频解码线程和/或音频解码线程。
优选的,在所述利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码之前,所述方法还包括:
基于与所述直播流对应的指定路径,打开所述直播流;
调用线程创建函数,创建所述拉流线程;
获取所述直播流的数据流通道;
基于所述数据流通道,调用所述线程创建函数建立所述解码线程。
优选的,在所述调用所述线程创建函数建立所述解码线程之后,所述方法还包括:
判断所述第一时间长度是否小于第二时间长度阈值;
若所述第一时间长度小于所述第二时间长度阈值,则所述解码线程不动作;
若所述第一时间长度大于或等于所述第二时间长度阈值,则所述解码线程执行对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的步骤。
优选的,还包括:
判断所述直播流数据输出列表中的数据是否大于预设数量;
若所述直播流数据输出列表中的数据大于预设数量,则所述解码线程停止解码。
本发明实施例还提供一种直播间内直播流播放装置,包括:
解码模块,用于利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;
存储模块,用于将所述解码线程解码后得到的数据存储到直播数据输出列表中;
播放模块,用于将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值;
若所述第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
优选的,所述直播流数据包含视频流数据和/或音频流数据,所述直播流数据缓存队列对应包含视频流数据缓存队列和/或音频流数据缓存队列,所述解码线程对应包含视频解码线程和/或音频解码线程。
优选的,所述装置还包括:
打开模块,用于基于与所述直播流对应的指定路径,打开所述直播流;
创建模块,用于调用线程创建函数,创建所述拉流线程;
获取模块,用于获取所述直播流的数据流通道;
调用基于所述数据流通道,调用所述线程创建函数建立所述解码线程。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;
将所述解码线程解码后得到的数据存储到直播数据输出列表中;
将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值;
若所述第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;
将所述解码线程解码后得到的数据存储到直播数据输出列表中;
将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值;
若所述第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:
本申请利用拉流线程对直播流数据进行拉取,并利用解码线程对直播流数据进行解码,拉流线程和解码线程相互独立,从而解码过程不再影响拉流过程,另外,在利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中,判断直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值,若第一时间长度小于或等于第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到直播流数据缓存队列中,若第一时间长度大于第一时间长度阈值,则拉流线程停止拉取新的直播流数据,直至第一时间长度小于或等于第一时间长度阈值,从而避免了拉流线程的拉取速度大于解码线程的解码速度时系统内存不断被拉流线程拉取的新的直播流数据占用所出现的内存溢出,解决了直播过程出现卡顿的问题,使得直播过程流畅。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考图形表示相同的部件。在附图中:
图1示出了本发明实施例中的一种直播间内直播流播放方法的流程图;
图2示出了本发明实施例中的一种直播间内直播流播放装置的结构图;
图3示出了本发明实施例中的计算机设备的实体结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本申请实施例提供一种直播间内直播流播放方法,应用于客户端,用户通过该客户端能够观看直播间内的直播。在本申请的直播间内直播流播放方法中,解码线程和拉流线程为两个不同的线程,解码过程和拉流过程分别在这两个不同的线程中完成。
本申请的直播间内直播流播放方法,如图1所示,所述方法包括:
步骤101:利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码。
步骤102:将解码线程解码后得到的数据存储到直播数据输出列表中。
步骤103:将直播数据输出列表中的数据进行播放。
其中,在步骤101中,在解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中,判断直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值,若第一时间长度小于或等于第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到直播流数据缓存队列中,若第一时间长度大于第一时间长度阈值,则拉流线程停止拉取新的直播流数据,直至第一时间长度小于或等于第一时间长度阈值。
进一步,本申请在步骤101之前,可以执行初始化过程,即,本申请的直播间内直播流播放方法在步骤101之前还可以包括:
步骤201:基于与直播流对应的指定路径,打开直播流。
步骤202:调用线程创建函数,创建拉流线程。
步骤203:获取直播流的数据流通道。
步骤204:基于数据流通道,调用线程创建函数建立解码线程。
针对步骤201而言,与直播流对应的指定路径通常为统一资源定位符(URL),客户端通过调用打开函数(open函数),将指定的URL的流地址打开,从而完成对直播流的打开,在直播流成功打开后,执行步骤202。
在步骤202中,线程创建函数为Windows系统中的API函数CreateThread,通过调用CreateThread函数创建拉流线程(demuxerThread)。接着,执行初始化解码线程的过程。
在本申请中,直播流数据包含视频流数据和/或音频流数据,直播流数据缓存队列对应包含视频流数据缓存队列和/或音频流数据缓存队列,解码线程对应包含视频解码线程和/或音频解码线程。具体来讲,直播流数据可以仅包含视频流数据,也可以仅包含音频流数据,还可以同时包含视频流数据和音频流数据,当直播流数据只包含视频流数据时,对应地,直播流数据缓存队列仅包含视频流数据缓存队列,解码线程仅包含视频解码线程;当直播流数据仅包含音频流数据时,对应地,直播流数据缓存队列仅包含音频流数据缓存队列,解码线程仅包含音频解码线程;当直播流数据同时包含视频流数据和音频流数据时,对应地,直播流数据缓存队列同时包含视频流数据缓存队列和音频流数据缓存队列,解码线程对应包含视频解码线程和音频解码线程。
需要说明的是,本申请将仅以直播流数据同时包含视频流数据和音频流数据为例对直播间内直播流播放方法的具体实施过程进行详细描述,而,直播流数据仅包含视频流数据或者仅包含音频流数据的情况,本领域技术人员可以在不付出创造性劳动的前提下,根据本申请所给出具体实施过程获得。
在具体实施过程中,在完成步骤202之后,开始建立解码线程。具体的,针对如何建立视频解码线程而言,首先,调用findVideoStreamTrack函数,获取直播流中的视频流通道videoChannel,接着基于该视频流通道调用CreateThread函数创建视频解码线程videoDecodeThread。而,针对如何建立音频解码线程而言,首选,调用findAudioStreamTrack函数,获取直播流中的音频流通道audioChannel,接着基于该音频流通道调用CreateThread函数创建音频解码线程audioDecodeThread。
进一步,针对拉流线程而言,拉流线程执行拉流时,拉流过程具体为先拉取直播流数据再将拉取到的直播流数据缓存到直播流数据缓存队列中,具体地,拉流线程可以调用readFrame函数拉取直播流数据,并通过该直播流数据的索引值index判断该直播流数据为视频流数据还是音频流数据,若index为videoChannel,表明为视频流数据,则将该视频流数据缓存到视频流数据缓存队列中,若index为audioChannel,表明为音频流数据,则将该音频流数据缓存到音频流数据缓存队列中。
进一步,在分别将视频流数据和音频流数据缓存到视频流数据缓存队列和音频流数据缓存队列之后,将会分别计算出视频流数据缓存队列中已缓存且未解码的视频流数据的时间长度,以及音频流数据缓存队列中已缓存且未解码的音频流数据的时间长度。其中,视频流数据缓存队列中已缓存且未解码的视频流数据的时间长度VideoBufferedTimeLength为:视频流数据缓存队列中未解码的最后一个数据包的终止时间(videoBufferedPackets.last)与未解码的第一个数据包的起始时间的差值(videoBufferedPackets.begin),音频流数据缓存队列中已缓存且未解码的音频流数据的时间长度audioBufferedTimeLength为:音频流数据缓存队列中未解码的最后一个数据包的终止时间(audioBufferedPackets.last)与未解码的第一个数据包的起始时间的差值(audioBufferedPackets.begin)。
对于解码线程而言,在初始化过程之后,首先判断直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否小于第二时间长度阈值,其中,第二时间长度阈值为预设的时间长度,其可以根据实际情况进行设置,例如,可以将第二时间长度阈值设置为4s,从而,判断第一时间长度是否小于4s,若第一时间长度小于4s,则解码线程不动作,若第一时间长度大于或等于4s,则解码线程开始解码,即,执行对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的步骤。进一步来讲,判断第一时间长度是否小于第二时间长度阈值的过程可以由解码线程来执行。
需要说明的是,当同时存在音频流数据缓存队列和视频流数据缓存队列时,可以同时判断音频流数据缓存队列中已缓存且未解码的音频流数据的时间长度是否小于第二时间长度阈值,以及判断视频流数据缓存队列中已缓存且未解码的视频流数据的时间长度是否小于第二时间长度阈值,若已缓存且未解码的音频流数据的时间长度大于或等于第二时间长度阈值,则音频解码线程开始解码,若已缓存且未解码的音频流数据的时间长度小于第二时间长度阈值,则音频解码线程不动作,若已缓存且未解码的视频流数据的时间长度大于或等于第二时间长度阈值,则视频解码线程开始解码,若已缓存且未解码的视频流数据的时间长度小于第二时间长度阈值,则视频解码线程不动作。
进一步,对于解码线程而言,在步骤101中,第一时间长度阈值也可以根据实际需要进行设置,例如,将第一时间长度阈值设置为4s。需要说明的是,在本申请中,第二时间长度阈值可以与第一时间长度阈值相同,第二时间长度阈值也可以与第一时间长度阈值不相同。当第一时间长度阈值设置为4s时,且同时存在音频流数据缓存队列和视频流数据缓存队列,在步骤101中,在视频解码线程对视频流数据进行解码,以及音频解码线程对音频流数据进行解码的过程中,同时判断视频流数据缓存队列中已缓存且未解码的视频流数据的时间长度是否大于4s,以及判断音频流数据缓存队列中已缓存且未解码的音频流数据的时间长度是否大于4s,若视频流数据缓存队列中已缓存且未解码的视频流数据的时间长度,和/或,音频流数据缓存队列中已缓存且未解码的音频流数据的时间长度均大于4s,则拉流线程停止拉取新的直播流数据,若音频流数据缓存队列中已缓存且未解码的音频流数据的时间长度和视频流数据缓存队列中已缓存且未解码的视频流数据的时间长度均小于或等于4s,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到对应的缓存队列中。
在本申请中,针对步骤102和步骤103而言,当直播流数据包含视频流数据和音频流数据时,直播数据输出列表对应包含视频输出列表(videoOutput)和音频输出列表(audioOutput),解码后的视频流数据将会被存储到videoOutput中,解码后的音频流数据将会被存储到audioOutput中。
进一步,本申请的直播间内直播流播放方法还可以包括:判断直播流数据输出列表中的数据是否大于预设数量,若直播流数据输出列表中的数据大于预设数量,则解码线程停止解码。例如,以视频流数据为例,对应的预设数量可以为2帧,从而,可以判断视频流数据输出列表中的图像数据是否大于2帧,若大于2帧,则表明当前视频足够,则视频解码线程停止解码。
基于同一发明构思,本发明实施例还提供一种直播间内直播流播放装置,如图2所示,包括:
解码模块201,用于利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;
存储模块202,用于将所述解码线程解码后得到的数据存储到直播数据输出列表中;
播放模块203,用于将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值;
若所述第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
优选的,所述直播流数据包含视频流数据和/或音频流数据,所述直播流数据缓存队列对应包含视频流数据缓存队列和/或音频流数据缓存队列,所述解码线程对应包含视频解码线程和/或音频解码线程。
优选的,所述装置还包括:
打开模块,用于基于与所述直播流对应的指定路径,打开所述直播流;
创建模块,用于调用线程创建函数,创建所述拉流线程;
获取模块,用于获取所述直播流的数据流通道;
调用基于所述数据流通道,调用所述线程创建函数建立所述解码线程。
优选的,所述装置还包括:
第一判断模块,用于判断所述第一时间长度是否小于第二时间长度阈值;
第一处理模块,用于若所述第一时间长度小于所述第二时间长度阈值,则所述解码线程不动作;
第二处理模块,用于若所述第一时间长度大于或等于所述第二时间长度阈值,则所述解码线程执行对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的步骤。
优选的,所述装置还包括:
第二判断模块,用于判断所述直播流数据输出列表中的数据是否大于预设数量;
第三处理模块,用于若所述直播流数据输出列表中的数据大于预设数量,则所述解码线程停止解码。
基于同一发明构思,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;
将所述解码线程解码后得到的数据存储到直播数据输出列表中;
将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值;
若所述第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
本发明实施例还提供了一种计算机设备,如图3所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机设备可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以计算机设备为手机为例:
图3示出的是与本发明实施例提供的计算机设备相关的部分结构的框图。参考图3,该计算机设备包括:存储器301和处理器302。本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图3对计算机设备的各个构成部件进行具体的介绍:
存储器301可用于存储软件程序以及模块,处理器302通过运行存储在存储器301的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储数据(比如音频数据、电话本等)等。此外,存储器301可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器302是计算机设备的控制中心,通过运行或执行存储在存储器301内的软件程序和/或模块,以及调用存储在存储器301内的数据,执行各种功能和处理数据。可选的,处理器302可包括一个或多个处理单元;优选的,处理器302可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
在本发明实施例中,该计算机设备所包括的处理器302可以具有以下功能:
利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;
将所述解码线程解码后得到的数据存储到直播数据输出列表中;
将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值;
若所述第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
总之,本申请利用拉流线程对直播流数据进行拉取,并利用解码线程对直播流数据进行解码,拉流线程和解码线程相互独立,从而解码过程不再影响拉流过程,另外,在利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中,判断直播流数据缓存队列中已缓存且未解码的直播流数据的第一时间长度是否大于第一时间长度阈值,若第一时间长度小于或等于第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到直播流数据缓存队列中,若第一时间长度大于第一时间长度阈值,则拉流线程停止拉取新的直播流数据,直至第一时间长度小于或等于第一时间长度阈值,从而避免了拉流线程的拉取速度大于解码线程的解码速度时系统内存不断被拉流线程拉取的新的直播流数据占用所出现的内存溢出,解决了直播过程出现卡顿的问题,使得直播过程流畅。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (8)

1.一种直播间内直播流播放方法,其特征在于,包括:
利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;其中,所述直播流数据包含视频流数据和音频流数据,所述直播流数据缓存队列对应包含视频流数据缓存队列和音频流数据缓存队列;所述解码线程对应包含视频解码线程和音频解码线程;
将所述解码线程解码后得到的数据存储到直播数据输出列表中;
将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述视频流数据缓存队列和所述音频流数据缓存队列中已缓存且未解码的所述视频流数据和所述音频流数据的第一时间长度是否大于第一时间长度阈值;
若所述已缓存且未解码的所述视频流数据和所述音频流数据的第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述已缓存且未解码的所述视频流数据或所述音频流数据的第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
2.如权利要求1所述的方法,其特征在于,在所述利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码之前,所述方法还包括:
基于与所述直播流对应的指定路径,打开所述直播流;
调用线程创建函数,创建所述拉流线程;
获取所述直播流的数据流通道;
基于所述数据流通道,调用所述线程创建函数建立所述解码线程。
3.如权利要求2所述的方法,其特征在于,在所述调用所述线程创建函数建立所述解码线程之后,所述方法还包括:
判断所述第一时间长度是否小于第二时间长度阈值;
若所述第一时间长度小于所述第二时间长度阈值,则所述解码线程不动作;
若所述第一时间长度大于或等于所述第二时间长度阈值,则所述解码线程执行对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的步骤。
4.如权利要求1所述的方法,其特征在于,还包括:
判断所述直播流数据输出列表中的数据是否大于预设数量;
若所述直播流数据输出列表中的数据大于预设数量,则所述解码线程停止解码。
5.一种直播间内直播流播放装置,其特征在于,包括:
解码模块,用于利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;其中,所述直播流数据包含视频流数据和音频流数据,所述直播流数据缓存队列对应包含视频流数据缓存队列和音频流数据缓存队列;所述解码线程对应包含视频解码线程和音频解码线程;
存储模块,用于将所述解码线程解码后得到的数据存储到直播数据输出列表中;
播放模块,用于将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述视频流数据缓存队列和所述音频流数据缓存队列中已缓存且未解码的所述视频流数据和所述音频流数据的第一时间长度是否大于第一时间长度阈值;
若所述已缓存且未解码的所述视频流数据和所述音频流数据的第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述已缓存且未解码的所述视频流数据或所述音频流数据的第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
6.如权利要求5所述的装置,其特征在于,所述装置还包括:
打开模块,用于基于与所述直播流对应的指定路径,打开所述直播流;
创建模块,用于调用线程创建函数,创建所述拉流线程;
获取模块,用于获取所述直播流的数据流通道;
调用基于所述数据流通道,调用所述线程创建函数建立所述解码线程。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;其中,所述直播流数据包含视频流数据和音频流数据,所述直播流数据缓存队列对应包含视频流数据缓存队列和音频流数据缓存队列;所述解码线程对应包含视频解码线程和音频解码线程;
将所述解码线程解码后得到的数据存储到直播数据输出列表中;
将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述视频流数据缓存队列和所述音频流数据缓存队列中已缓存且未解码的所述视频流数据和所述音频流数据的第一时间长度是否大于第一时间长度阈值;
若所述已缓存且未解码的所述视频流数据和所述音频流数据的第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述已缓存且未解码的所述视频流数据或所述音频流数据的第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
利用解码线程对直播流数据缓存队列中已缓存且未解码的直播流数据进行解码;其中,所述直播流数据包含视频流数据和音频流数据,所述直播流数据缓存队列对应包含视频流数据缓存队列和音频流数据缓存队列;所述解码线程对应包含视频解码线程和音频解码线程;
将所述解码线程解码后得到的数据存储到直播数据输出列表中;
将所述直播数据输出列表中的数据进行播放;
其中,在所述解码线程对所述直播流数据缓存队列中已缓存且未解码的直播流数据进行解码的过程中:
判断所述视频流数据缓存队列和所述音频流数据缓存队列中已缓存且未解码的所述视频流数据和所述音频流数据的第一时间长度是否大于第一时间长度阈值;
若所述已缓存且未解码的所述视频流数据和所述音频流数据的第一时间长度小于或等于所述第一时间长度阈值,则拉流线程拉取新的直播流数据,并将拉取到的新的直播流数据缓存到所述直播流数据缓存队列中;
若所述已缓存且未解码的所述视频流数据或所述音频流数据的第一时间长度大于所述第一时间长度阈值,则所述拉流线程停止拉取新的直播流数据,直至所述第一时间长度小于或等于所述第一时间长度阈值。
CN201710851670.8A 2017-09-19 2017-09-19 直播间内直播流播放方法、装置、计算机存储介质及设备 Active CN107493510B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710851670.8A CN107493510B (zh) 2017-09-19 2017-09-19 直播间内直播流播放方法、装置、计算机存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710851670.8A CN107493510B (zh) 2017-09-19 2017-09-19 直播间内直播流播放方法、装置、计算机存储介质及设备

Publications (2)

Publication Number Publication Date
CN107493510A CN107493510A (zh) 2017-12-19
CN107493510B true CN107493510B (zh) 2020-03-17

Family

ID=60652669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710851670.8A Active CN107493510B (zh) 2017-09-19 2017-09-19 直播间内直播流播放方法、装置、计算机存储介质及设备

Country Status (1)

Country Link
CN (1) CN107493510B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108600774B (zh) * 2018-04-26 2021-01-05 北京金和网络股份有限公司 基于二级分配的直播通道分配方法及播流方法
CN110213636B (zh) * 2018-04-28 2023-01-10 腾讯科技(深圳)有限公司 在线视频的视频帧生成方法、装置、存储介质及设备
CN110677715B (zh) * 2019-10-11 2022-04-22 北京达佳互联信息技术有限公司 一种解码方法、解码器、电子设备及存储介质
CN111093107A (zh) * 2019-12-18 2020-05-01 深圳市麦谷科技有限公司 播放实时直播流的方法和装置
CN112261445B (zh) * 2020-10-21 2022-07-12 深圳市创维软件有限公司 流媒体播放方法、装置、设备及计算机可读存储介质
CN112261412B (zh) * 2020-11-09 2021-04-27 中科智云科技有限公司 基于pid的视频流轮询解码的拉流控制系统及方法
CN112533016B (zh) * 2020-11-27 2021-12-14 四川弘和通讯有限公司 基于预警信息触发手机html5低延时直播视频的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002209201A (ja) * 2001-01-10 2002-07-26 Toshiba Corp 映像受信端末
CN103078810A (zh) * 2012-12-31 2013-05-01 中国科学院自动化研究所 一种高效率富媒体展现系统和方法
CN105025351A (zh) * 2014-04-30 2015-11-04 深圳Tcl新技术有限公司 流媒体播放器缓冲的方法及装置
CN105916058A (zh) * 2016-05-05 2016-08-31 青岛海信宽带多媒体技术有限公司 一种流媒体缓冲播放方法、装置及显示设备
CN105992043A (zh) * 2015-10-15 2016-10-05 乐视致新电子科技(天津)有限公司 一种数据处理的方法及装置
CN106921873A (zh) * 2017-02-28 2017-07-04 北京小米移动软件有限公司 直播控制方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002209201A (ja) * 2001-01-10 2002-07-26 Toshiba Corp 映像受信端末
CN103078810A (zh) * 2012-12-31 2013-05-01 中国科学院自动化研究所 一种高效率富媒体展现系统和方法
CN105025351A (zh) * 2014-04-30 2015-11-04 深圳Tcl新技术有限公司 流媒体播放器缓冲的方法及装置
CN105992043A (zh) * 2015-10-15 2016-10-05 乐视致新电子科技(天津)有限公司 一种数据处理的方法及装置
CN105916058A (zh) * 2016-05-05 2016-08-31 青岛海信宽带多媒体技术有限公司 一种流媒体缓冲播放方法、装置及显示设备
CN106921873A (zh) * 2017-02-28 2017-07-04 北京小米移动软件有限公司 直播控制方法及装置

Also Published As

Publication number Publication date
CN107493510A (zh) 2017-12-19

Similar Documents

Publication Publication Date Title
CN107493510B (zh) 直播间内直播流播放方法、装置、计算机存储介质及设备
US20170171278A1 (en) Method and electronic device for continuously playing video
US10476928B2 (en) Network video playback method and apparatus
US9021390B1 (en) Methods and apparatus for optimized pausing of an embedded application to render pop-up window
US11397555B2 (en) Background pre-loading and refreshing of applications with audio inhibition
US20180176658A1 (en) Video advertisement filtering method, apparatus and device
CN103618942A (zh) 智能电视及其浏览器网页视频的播放方法和装置
WO2017092422A1 (zh) 基于安卓平台的多媒体处理方法、装置及移动终端设备
EP3866481A1 (en) Audio/video switching method and apparatus, and computer device and readable storage medium
CN109086105B (zh) 一种页面布局转换方法、装置及电子设备
US11889135B2 (en) Video stream playing control method and apparatus, and storage medium
WO2019114330A1 (zh) 一种视频播放方法、装置和终端设备
US10321206B2 (en) Method for switching an audio/video application, apparatus and smart TV
CN106131644A (zh) 音视频的播放方法及显示设备
CN109040773A (zh) 一种视频改进方法、装置、设备及介质
CN103873929A (zh) 一种对多媒体数据的播放方法和装置
CN104219555A (zh) 一种安卓系统终端中的视频显示装置和方法
WO2020078207A1 (zh) 一种视频播放方法及装置
CN114040245A (zh) 视频播放方法、装置、计算机存储介质和电子设备
US20230062695A1 (en) Information display control method and apparatus, electronic device and storage medium
WO2020220649A1 (zh) 在线列表与本地列表的同窗切换方法、及计算设备
CN108241748B (zh) 获取直播音乐名称的方法、装置、介质及设备
CN113163255B (zh) 视频播放方法、装置、终端及存储介质
CN109859293B (zh) 用于安卓设备的动画多状态切换方法和装置
CN110544480B (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
TR01 Transfer of patent right

Effective date of registration: 20230925

Address after: No. 170A24, Wuling Xintiandi, Yanquan South Road, Beihu District, Chenzhou City, Hunan Province, 423000

Patentee after: Chenzhou Lanbing Computer Service Co.,Ltd.

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

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

TR01 Transfer of patent right