一种流媒体服务器实现方法及流媒体服务器与流程
未命名
07-12
阅读:112
评论:0

1.本发明涉及有限状态自动机和流媒体服务器技术领域,具体地说是一种流媒体服务器实现方法及流媒体服务器。
背景技术:
2.流媒体指以流的方式在网络中传送音视频数据和多媒体文件的媒体形式。其典型特征是把连续的音视频信息压缩后放到服务器上,客户端可以边下载边处理而不必等待整个文件下载完毕。该技术广泛应用于视频会议、远程教育和在线直播等系统中。如何提高流媒体的处理效率,优化处理方式成为目前需要解决的问题。
技术实现要素:
3.本发明的技术任务是针对以上不足之处,提供一种流媒体服务器实现方法及流媒体服务器,实现了流媒体内容采集、缓存、调度、转码和传输播放等功能,允许以流生产者和消费者异步的方式接入。
4.本发明解决其技术问题所采用的技术方案是:
5.一种流媒体服务器实现方法,该方法的实现包括流驱动引擎、生产者角色、消费者角色和有限状态自动机,
6.生产者和消费者负责生成流和消费流;
7.有限状态自动机用于定义流的状态,状态包括:已创建,流转中,等待关闭,已关闭;并定义流的操作,操作包括:发布、发布异常、第一个消费者到达、最后一个消费者离开;
8.流驱动引擎根据有限状态自动机的指示进行流的操作,包括创建流、销毁流。
9.流媒体服务器是流媒体应用体系的核心,负责对流媒体内容的采集、缓存、调度、转码和传输播放等功能。
10.有限状态自动机(finite-state automaton,fsa)是表示有限个状态以及在这些状态之间的转移的数学计算模型。状态机包含以下几个术语:状态(state)、转移(transition)、动作(action)、转移条件(transition condition)。
11.状态(state):将系统离散化后得到的有限的情况。
12.转移(transition):一个状态因某种行为转换为一个状态的过程。
13.动作(action):触发状态机的运转的行为。
14.转移条件(transition condition):某一状态下只有达到了某种条件才会按照状态机的转移流程转移到下一状态。
15.优选的,所述流驱动引擎使用字符串标识特定的流;
16.通过流驱动引擎创建一个没有数据的空流,空流处在已创建状态,流驱动引擎根据有限状态自动机决定更改流的流转状态还是直接关闭(销毁)这个流。
17.优选的,所述生产者负责生成流,然后将生成的流推送至流媒体服务器,一路流仅能有一个生产者;
18.所述消费者负责使用流,从流媒体服务器拉取流然后消耗掉,一路流可以有多个消费者。
19.优选的,所述生产者的流媒体内容从外部设备拉取,包括摄像机文件、流媒体文件。
20.优选的,消费者从流媒体服务器拉取的流媒体内容送往不同的终端设备,所述终端设备可接收裸流,或封装的flv数据;
21.消费者拉取流时,如果流中没有数据,则消费者将等待数据到达。
22.优选的,有限状态自动机定义的流的四种状态描述如下:
23.已创建:空流,起始状态,
24.流转中:正常流,可以被消费,
25.等待关闭:没有消费者,准备关闭流,
26.已关闭:流被销毁,终止状态;
27.有限状态自动机定义的流的四类操作描述如下:
28.发布:生产者正在发布流,
29.发布异常:生产者发布流出错,包含生产者超时、生产者断开、生产者主动关闭流;
30.第一个消费者到达:第一个消费者开始拉取流;
31.最后一个消费者离开:最后一个消费者停止拉取流。
32.优选的,有限状态自动机定义流的状态实现如下:
33.流转前的状态为:已创建,触发操作为:发布,则流转后的状态为:流转中;
34.流转前的状态为:已创建,触发操作为:发布异常,则流转后的状态为:关闭;
35.流转前的状态为:已创建,触发操作为:最后一个消费者离开,则流转后的状态为:关闭;
36.流转前的状态为:流转中,触发操作为:发布异常,则流转后的状态为:关闭;
37.流转前的状态为:流转中,触发操作为:最后一个消费者离开,则流转后的状态为:关闭中;
38.流转前的状态为:关闭中,触发操作为:第一个消费者进入,则流转后的状态为:流转中;
39.流转前的状态为:关闭中,触发操作为:发布异常,则流转后的状态为:关闭。
40.进一步的,所述有限状态自动机定义流的状态,
41.按照流生命周期定义所述流的四种状态:首先创建一个空流,流的状态为已创建;生产者从外部设备拉取流媒体内容后推送至流驱动引擎,流的状态为流转中,此时消费者可以消费该流;当所有消费者离开后,准备关闭流,流的状态为等待关闭,如果此时又有新的消费者到达,流的状态将回到流转中继续提供数据;设定时间内没有新的消费者到达的话,关闭这个流,流的状态为已关闭。
42.进一步的,所述有限状态自动机定义流的操作,
43.发布和发布异常是生产者的行为,当创建一个空流后,生产者开始执行流的发布操作,也就是向流中填充数据,此时流状态是流转中,可通知消费者来消费该流,发布过程中可能因为某些原因异常或者生产者主动放弃导致流的操作为发布异常,此时需要关闭流,并通知消费者该流已关闭;
44.第一个消费者到达和最后一个消费者离开是消费者的行为,对于消费者来说,只关心第一个消费者到达和最后一个离开的消费者这两个操作,因为单纯的数量增加或者减少(比如从3减到2或者反过来)对于流的状态没有影响。所述第一个消费者到达,用于实现异步操作,即消费者先进来,然后通知生产者发布流;最后一个消费者离开,表示流已经没有消费者消费,等待设定时间后则可安全关闭。
45.本发明还要求保护一种流媒体服务器,包括流驱动引擎、生产者角色、消费者角色和有限状态自动机,该流媒体服务器能够实现上述的方法。
46.本发明的一种流媒体服务器实现方法及流媒体服务器与现有技术相比,具有以下有益效果:
47.本方法根据流的产生和使用定义了生产者与消费者,生产者和消费者的接入是异步的;
48.本方法定义了一组有限状态自动机,将流的流转状态和控制逻辑分离,只需要查询状态机即可明确生产者与消费者的处理逻辑,便于抽取成框架处理。
附图说明
49.图1是本发明实施例提供的流媒体服务器实现方法中生产者与消费者处理流的示图;
50.图2是本发明实施例提供的流媒体服务器实现方法中流状态流转示图。
具体实施方式
51.下面结合附图和具体实施例对本发明作进一步说明。
52.本发明实施例提供了一种流媒体服务器实现方法,该方法的实现包括一个流驱动引擎、生产者角色、消费者角色和一个有限状态自动机。
53.生产者负责生成流,通常是从外部设备拉取;消费者负责使用流,通常是将流媒体内容送往播放器以及应用程序。
54.有限状态自动机定义了流的四种状态:已创建,流转中,等待关闭,已关闭;四类流操作:发布、发布异常、第一个消费者到达、最后一个消费者离开,协同生产者和消费者异步工作。
55.流驱动引擎负责根据有限状态自动机的指示进行流的操作,包括创建流、销毁流等管理功能。
56.流媒体服务器是流媒体应用体系的核心,负责对流媒体内容的采集、缓存、调度、转码和传输播放等功能。
57.有限状态自动机(finite-state automaton,fsa)是表示有限个状态以及在这些状态之间的转移的数学计算模型。状态机包含以下几个术语:状态(state)、转移(transition)、动作(action)、转移条件(transition condition)。
58.状态(state):将系统离散化后得到的有限的情况。
59.转移(transition):一个状态因某种行为转换为一个状态的过程。
60.动作(action):触发状态机的运转的行为。
61.转移条件(transition condition):某一状态下只有达到了某种条件才会按照状
态机的转移流程转移到下一状态。
62.一、流驱动引擎
63.流驱动引擎使用字符串标识特定的流,可以通过流驱动引擎创建一个没有数据的空流,空流处在“已创建”状态,流驱动引擎根据有限状态自动机决定更改流的流转状态还是直接关闭(销毁)这个流。
64.二、生产者和消费者
65.生产者负责生成流,然后将生成的流推送至流媒体服务器,一路流仅能有一个生产者;生产者的流媒体内容一般从外部设备拉取,如摄像机、流媒体文件等。
66.消费者负责使用流,从流媒体服务器拉取流然后消耗掉,一路流可以有多个消费者。消费者从流媒体服务器拉取的流媒体内容送往不同的终端设备,所述终端设备可能接收裸流,也可能是封装的flv数据;
67.消费者拉取流时,如果流中没有数据,则消费者将等待数据到达。
68.整个过程如图1所示。
69.三、有限状态自动机定义的流的四种状态描述如下表1-1所示:
70.表1-1
71.状态名称状态值描述已创建created空流,起始状态流转中flowing正常流,可以被消费等待关闭wait_close没有消费者,准备关闭流关闭close流被销毁,终止状态
72.有限状态自动机按照流生命周期定义了流的四种状态:首先创建一个空流,流的状态为“已创建”,生产者从外部设备拉取流媒体内容后并推送至流驱动引擎,流的状态为“流转中”,此时消费者可以消费该流,当所有消费者离开后,准备关闭流,流的状态为“等待关闭”,如果此时又有新的消费者到达,流的状态将回到“流转中”继续提供数据,一段时间内没有新的消费者到达的话,关闭这个流,流的状态为“关闭”。
73.四、有限状态自动机定义的流的四类操作描述如下表1-2所示:
74.表1-2
[0075][0076]
前两类操作是生产者的行为,当创建一个空流后,生产者开始执行“发布”流的操作,也就是向流中填充数据,此时流状态时“流转中”,可以通知消费者来消费了,发布过程中可能因为某些原因异常或者生产者主动放弃导致“发布异常”,此时需要关闭流,并通知
消费者流已经关闭。
[0077]
后两类是消费者行为,对于消费者来说,只关心“第一个消费者到达”和“最后一个离开的消费者”这两个操作,因为单纯的数量增加或者减少(比如从3减到2或者反过来)对于流的状态没有影响。“第一个消费者到达”这个是为了实现异步操作,也就是消费者先进来,然后通知生产者发布流,“最后一个离开的消费者”说明流已经没有消费者消费,等待一段时间后可以安全关闭了。
[0078]
五、有限状态自动机定义了流的状态流转,流转状态如下表2-1所示:
[0079]
表2-1
[0080]
流转前状态触发操作流转后状态已创建发布流转中已创建发布异常关闭已创建最后一个消费者离开关闭流转中发布异常关闭流转中最后一个消费者离开关闭中关闭中第一个消费者进入流转中关闭中发布异常关闭
[0081]
通常情况下,流的状态流转是线性的,操作上是同步的,也就是先创建,后利用模型,而有限状态自动机更精准的定义了流的状态流转,使得在操作上可以做到先消费,后发布。比如新建一个流后,其状态是“已创建”,此时消费者尝试消费该流,触发“第一个消费者到达”操作,根据有限状态自动机的指示,流处在“已创建”状态时流驱动引擎无需操作流。直到未来某个生产者触发”发布”操作,一旦正常执行发布,流中将被填充数据,等待在该流上的消费者此时可以消费流。
[0082]
流状态流转示意图如图2所示。
[0083]
本发明实施例还提供一种流媒体服务器,包括流驱动引擎、生产者角色、消费者角色和有限状态自动机,该流媒体服务器能够实现上述实施例所述的方法。
[0084]
生产者角色负责生成流,通常是是从外部设备拉取;消费者角色负责使用流,通常是将流媒体内容送往播放器以及应用程序。一路流仅能有一个生产者,一路流可以有多个消费者。
[0085]
有限状态自动机定义了流的四种状态:已创建,流转中,等待关闭,已关闭,流的四类操作:发布、发布异常、第一个消费者到达、最后一个消费者离开。
[0086]
流驱动引擎根据状态机的指示负责创建流或者销毁流,负责通知生产者开始生产或是消费者开始消费。
[0087]
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
[0088]
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
技术特征:
1.一种流媒体服务器实现方法,其特征在于,该方法的实现包括流驱动引擎、生产者角色、消费者角色和有限状态自动机,生产者和消费者负责生成流和消费流;有限状态自动机用于定义流的状态,状态包括:已创建,流转中,等待关闭,已关闭;并定义流的操作,操作包括:发布、发布异常、第一个消费者到达、最后一个消费者离开;流驱动引擎根据有限状态自动机的指示进行流的操作,包括创建流、销毁流。2.根据权利要求1所述的一种流媒体服务器实现方法,其特征在于,所述流驱动引擎使用字符串标识特定的流;通过流驱动引擎创建一个没有数据的空流,空流处在已创建状态,流驱动引擎根据有限状态自动机决定更改流的流转状态还是直接关闭这个流。3.根据权利要求1或2所述的一种流媒体服务器实现方法,其特征在于,所述生产者负责生成流,然后将生成的流推送至流媒体服务器,一路流仅能有一个生产者;所述消费者负责使用流,从流媒体服务器拉取流然后消耗掉,一路流可以有多个消费者。4.根据权利要求3所述的一种流媒体服务器实现方法,其特征在于,所述生产者的流媒体内容从外部设备拉取,包括摄像机文件、流媒体文件。5.根据权利要求3所述的一种流媒体服务器实现方法,其特征在于,消费者从流媒体服务器拉取的流媒体内容送往不同的终端设备,所述终端设备可接收裸流,或封装的flv数据;消费者拉取流时,如果流中没有数据,则消费者将等待数据到达。6.根据权利要求1所述的一种流媒体服务器实现方法,其特征在于,有限状态自动机定义的流的状态描述如下:已创建:空流,起始状态,流转中:正常流,可以被消费,等待关闭:没有消费者,准备关闭流,已关闭:流被销毁,终止状态;有限状态自动机定义的流的操作描述如下:发布:生产者正在发布流,发布异常:生产者发布流出错,包含生产者超时、生产者断开、生产者主动关闭流;第一个消费者到达:第一个消费者开始拉取流;最后一个消费者离开:最后一个消费者停止拉取流。7.根据权利要求6所述的一种流媒体服务器实现方法,其特征在于,有限状态自动机定义流的状态实现如下:流转前的状态为:已创建,触发操作为:发布,则流转后的状态为:流转中;流转前的状态为:已创建,触发操作为:发布异常,则流转后的状态为:关闭;流转前的状态为:已创建,触发操作为:最后一个消费者离开,则流转后的状态为:关闭;流转前的状态为:流转中,触发操作为:发布异常,则流转后的状态为:关闭;流转前的状态为:流转中,触发操作为:最后一个消费者离开,则流转后的状态为:关闭
中;流转前的状态为:关闭中,触发操作为:第一个消费者进入,则流转后的状态为:流转中;流转前的状态为:关闭中,触发操作为:发布异常,则流转后的状态为:关闭。8.根据权利要求2或6或7所述的一种流媒体服务器实现方法,其特征在于,所述有限状态自动机定义流的状态,按照流生命周期定义所述流的四种状态:首先创建一个空流,流的状态为已创建;生产者拉取流媒体内容后推送至流驱动引擎,流的状态为流转中,此时消费者可以消费该流;当所有消费者离开后,准备关闭流,流的状态为等待关闭,如果此时又有新的消费者到达,流的状态将回到流转中继续提供数据;设定时间内没有新的消费者到达的话,关闭这个流,流的状态为已关闭。9.根据权利要求8所述的一种流媒体服务器实现方法,其特征在于,所述有限状态自动机定义流的操作,发布和发布异常是生产者的行为,当创建一个空流后,生产者开始执行流的发布操作,也就是向流中填充数据,此时流状态是流转中,可通知消费者来消费该流,发布过程中异常或者生产者主动放弃导致流的操作为发布异常,此时需要关闭流,并通知消费者该流已关闭;第一个消费者到达和最后一个消费者离开是消费者的行为,所述第一个消费者到达,用于实现异步操作,即消费者先进来,然后通知生产者发布流;最后一个消费者离开,表示流已经没有消费者消费,等待设定时间后则可安全关闭。10.一种流媒体服务器,其特征在于,包括流驱动引擎、生产者角色、消费者角色和有限状态自动机,该流媒体服务器能够实现权利要求1至9任一项所述的方法。
技术总结
本发明公开了一种流媒体服务器实现方法及流媒体服务器,属于有限状态自动机和流媒体服务器技术领域,该方法的实现包括流驱动引擎、生产者角色、消费者角色和有限状态自动机,生产者和消费者负责生成流和消费流;有限状态自动机用于定义流的状态,状态包括:已创建,流转中,等待关闭,已关闭;并定义流的操作,操作包括:发布、发布异常、第一个消费者到达、最后一个消费者离开;流驱动引擎根据有限状态自动机的指示进行流的操作,包括创建流、销毁流。本发明实现了流媒体内容采集、缓存、调度、转码和传输播放等功能,允许以流生产者和消费者异步的方式接入。的方式接入。的方式接入。
技术研发人员:生铮 王刚 高传集
受保护的技术使用者:浪潮云信息技术股份公司
技术研发日:2023.04.13
技术公布日:2023/7/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/