CN100452033C - 一种实现流媒体直播的方法 - Google Patents
一种实现流媒体直播的方法 Download PDFInfo
- Publication number
- CN100452033C CN100452033C CNB2005100357749A CN200510035774A CN100452033C CN 100452033 C CN100452033 C CN 100452033C CN B2005100357749 A CNB2005100357749 A CN B2005100357749A CN 200510035774 A CN200510035774 A CN 200510035774A CN 100452033 C CN100452033 C CN 100452033C
- Authority
- CN
- China
- Prior art keywords
- live
- input source
- sampled data
- live input
- source
- 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
Images
Abstract
本发明利用Microsoft提供的Windows Media Format SDK中的流媒体读写技术,获得各个直播输入源的采样数据,根据一定的系统筛选采样数据的策略,使每个时刻只能有一个直播输入源的采样数据被系统所采纳,然后修改筛选出来的采样数据的呈现时间,解决了将多个单独的直播输入源整合为一个连续播放的直播输出源的问题,人们得以按需自由地将所要欣赏的直播输入源组合为一个统一的直播输出源,给人们的流媒体欣赏带来更好的体验。
Description
技术领域
本发明涉及Windows Media流媒体技术,尤其涉及一种将多个直播输入源整合为一个直播输出源的方法。
背景技术
在流媒体技术中,可以在多个发布点(Publishing Point)上存在多个单独的直播源。媒体播放器可以分别播放各个单独的直播源,但不能将各个单独的直播源整合为一个输出源连续播放。
对于多个直播源的情况,可以使用ASX(Advanced Stream Redirector)文件实现直播源信息的重定向。ASX文件是一个文本文件,包含了直播源对应发布点的URL(Uniform Resource Locator)。一个ASX文件可以包含多个URL,当使用媒体播放器打开ASX文件时,播放器会根据ASX文件中的信息用相应的协议去打开指定位置上的直播源。
使用ASX文件这种方法时,媒体播放器会依次从头到尾去检查每一个URL,直到发现一个有效的URL。但是,利用ASX文件的方式每次只能播放一个直播源,当直播源出现异常或者直播源结束后媒体播放器不会自动跳转继续播放其它的直播源。如果每个直播源的播出和结束时间都比较固定,那么媒体播放器仍然每次只能播放一个直播源,除非由人操作媒体播放器再次打开ASX文件。因此存在着无法将多个单独的直播源整合为一个连续播放的直播输出源的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种将多个单独的直播输入源整合为一个连续播放的直播输出源的方法。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种实现流媒体直播的方法,该方法包括以下步骤:
a、连接直播输入源并获得直播输入源的信息,并指定需要进行采样的媒体流;
b、对直播输入源进行数据采样并根据一定的系统筛选决策方案选出合适的采样数据;
c、对采样数据的呈现时间进行修改,使不同输入源的采样数据能够有效的衔接起来,形成一个连续的直播输出源。
所述步骤a中通过创建读接口对象并调用其函数连接直播输入源,直播输入源的信息包括直播输入源包含的媒体流的数量以及媒体流的编号,根据媒体流的编号可以指定需要进行采样的媒体流。
所述步骤b中对直播输入源进行数据采样并对采样数据进行分片处理,得到采样数据片的媒体内容、呈现时间和持续时间。
所述步骤b中系统筛选决策方案包括基于时间顺序的决策方案和基于优先级的决策方案。
基于时间顺序的决策方案为:将一个特定的时间周期划分为若干的时间段,每个直播输入源对应一个时间段,系统就根据当前时间来决定选择哪个直播输入源的采样。
存在一个特殊并且可靠的直播输入源,用于弥补空白时间的采样数据。
所述基于优先级的决策方案为:为每个直播输入源指定一个特定并且唯一的优先级,系统根据优先级的顺序选择优先级相对高的直播输入源的采样数据推送到直播输出源。
存在一个优先级最低的直播输入源,用于弥补高优先级直播输入源出现异常或中断时的采样数据。
步骤c中对采样数据片的呈现时间进行修改,并且保证呈现时间的逐渐递增,使不同输入源的采样数据有效的衔接起来,形成一个连续的直播输出源。
所述步骤a之前还包括创建一个检测工作线程,按照一定的时间间隔去检测各个直播输入源是否已经启动,如果直播输入源已经启动,则停止检测;否则继续定时对各个直播输入源进行检测。
所述创建检测工作线程之前,还编辑系统配置文件,通知系统直播输入源的数目以及每个直播输入源所对应的发布点,并选择合适的系统筛选采样数据的决策方案。
由上述技术方案可见,本发明利用Windows Media流媒体的读写技术,获得各个直播输入源的采样数据,根据一定的系统筛选采样数据的策略,使每个时刻只能有一个直播输入源的采样数据被系统所采纳,然后修改筛选出来的采样数据的呈现时间,解决了将多个单独的直播源整合为一个连续播放的直播输出源的问题,人们得以按需自由地将所要欣赏的直播输入源组合为一个统一的直播输出源,给人们的流媒体欣赏带来更好的体验。
附图说明
图1为本发明实现流媒体直播方法的示意图;
图2为本发明实现流媒体直播方法的流程图。
具体实施方式
为了解决目前媒体播放器无法连续播放多个发布点上的单独的直播输入源的问题,本发明提出了一种利用Windows Media的流读写技术,实现将多个单独的直播输入源整合为一个连续播放的直播输出源的方法及系统。以下参照附图并结合具体实施例,对本发明进一步详细说明。
如图1所示,每个直播输入源对应一个读接口对象,系统通过WindowsMedia Format SDK提供的读接口对象从各个发布点获得直播输入源的采样(sample)数据,将每个直播输入源的采样数据分解成无数个离散的采样数据片,并且得到每个“采样数据片”的媒体数据、呈现时间(Presentation Time)和持续时间(Duration)。根据一定的系统筛选采样数据的策略,使每个时刻只能有一个直播输入源的采样数据被系统所采纳。系统利用WindowsMedia Format SDK提供的写接口对象,根据呈现时间和持续时间的关系,修改筛选出来的采样数据的呈现时间,并且保证呈现时间的逐渐递增,就使得不同输入源的采样数据经过系统的整合,能够有效的衔接起来,然后推送直播输出源对应的发布点形成一个稳定连续的直播输出源。
以下以Windows Media Server上的发布点为例,结合图2详细说明本发明的实现过程,假设本例中所有的直播输入源的属性和编码方式都相同:
步骤101、编辑系统配置文件,通知系统需要整合的播输入源的数目以及每个直播输入源所对应的发布点,并选择合适的系统筛选采样数据的决策方案。
步骤102、启动系统创建一个检测工作线程,按照一定的时间间隔去检测各个直播输入源是否已经启动,如果直播输入源已经启动,则停止检测;否则继续定时对各个直播输入源进行检测。
步骤103、连接直播输入源并获得直播输入源的信息,并指定需要进行采样的媒体流。
对检测到已经启动的直播输入源,通过调用WMCreateReader函数创建一个类型为IWMReader的读接口对象,通过调用读接口对象的QueryInterface函数,得到IWMReaderAdvanced接口对象。
调用IWMReade对象的Open函数连接直播输入源,同时通过Open函数的第二个参数指定IWMStatusCallback回调接口指针,用于获得直播输入源的状态信息。当直播输入源成功连接后,系统会调用IWMStatusCallback接口的回调函数,通知哪个直播输入源已经连接成功。
调用IWMReaderAdvanced接口对象的SetManualStreamSelection函数,参数为TURE,表示获取直播输入源的所有媒体流。
通过调用读接口对象的QueryInterface函数,得到IWMProfile对象。
调用IWMProfile对象的GetStreamCount函数,获得直播输入源包含的媒体流的数量。
通过循环调用的方式,通过IWMProfile对象的GetStream函数,得到每一个媒体流的IWMStreamConfig接口对象,再调用IWMStreamConfig对象的GetStreamNumber函数,获得媒体流的编号。
然后调用IWMReaderAdvanced对象的SetReceiveStreamSamples函数,将媒体流编号作为第一个参数,TURE作为第二个参数,表示该媒体流将以压缩的形式通过IWMReaderCallbackAdvanced::OnStreamSample回调函数获得。
步骤104、对直播输入源进行数据采样及分片处理。
调用读接口对象的Start函数,开始对直播输入源进行数据采样。读接口对象会自动对数据进行分片处理,分片的数据采样通过IWMReaderCallbackAdvanced::OnStreamSample回调函数返回,得到每个采样数据片的媒体数据、呈现时间和持续时间。
步骤105、根据一定的系统筛选采样数据的决策方案,选出合适的数据分片。
在IWMReaderCallbackAdvanced::OnStreamSample回调函数中,会连续不断的收到来自不同直播输入源的数据分片,可以通过pvContext参数来区分不同的输入源,系统根据开始设置好的筛选策略,选出合适的数据分片。
有基于时间顺序或者基于优先级的两种决策方案可供选择。
基于时间顺序的决策方案为:将一个特定的时间周期划分为若干的时间段,每个直播输入源对应一个时间段,系统就根据当前时间来决定选择哪个直播输入源的采样。通过为每个直播输入源分配一个发布点,然后配置多输入单输出系统每个时间段对应的直播输入源,系统启动后会依据当前时间选择对应直播输入源的采样数据作为输出。对于这种方案,有可能存在着一些空白时间,在这段时间内某个直播源在其对应的时间段结束之前就已经结束而下一个直播输入源尚未开始。如果在空白时间段不采取补救措施,就会导致没有任何采样数据推送到直播输出源,造成直播中断。为此可以准备一个特殊并且可靠的直播输入源,用于弥补空白时间的采样数据,这样就可以保证稳定连续的直播输出。
基于优先级的决策方案为:为每个直播输入源指定一个特定并且唯一的优先级,系统会根据优先级的顺序选择优先级相对高的直播输入源的采样数据推送到直播输出源。对于这种方案,有可能存在着某些直播输入源出现异常或中断的情况,此时如果不采取补救措施,也会导致没有任何采样数据推送到直播输出源,造成直播中断。为此可以准备一个特殊并且可靠的备用直播输入源,并将其优先级设为最低。当高优先级的直播输入源正常时,系统会将其采样数据推送到直播输出源;当高优先级的直播输入源出现异常时,系统会将备用的直播输入源的采样数据推送到直播输出源,直到高优先级的直播输入源恢复正常,系统又会选择高优先级的直播输入源的采样数据推送到直播输出源,这样就可以保证稳定连续的直播输出。
步骤106、对数据分片的呈现时间进行修改,送出到直播输出源。
调用CreateWriter创建一个类型为IWMWrite的写接口对象,通过调用写接口对象QueryInterface函数,得到IWMWriterAdvanced接口对象。
调用IWMWrite对象的SetProfile函数为输出直播源设置Profile。
调用IWMWriterAdvanced对象的SetLiveSource函数,参数为TURE,表示写对象的输出为直播形式。
调用IWMWriter对象的GetInputCount函数,获得写接口对象中包含的输入流的数量。循环调用IWMWriter对象的SetInputProps函数,设置每一个输入流中的数据都以压缩的方式提交给写接口对象。
调用IWMWrite对象QueryInterface函数,得到IWMHeaderInfo接口对象。调用IWMHeaderInfo对象的SetAttribute为输出直播源设置属性;调用IWMHeaderInfo对象的QueryInterface函数,得到IWMHeaderInfo3接口对象;通过调用IWMHeaderInfo3对象的AddCodecInfo函数设置输出直播源的编码方式。输出直播源的属性和编码方式都保持和输入直播源一致。
指定输出直播源的发布点。如果发布点设置在本地,则调用IWMWriterNetworkSink的相关接口函数来实现;如果发布点设置在远端主机,则调用IWMWriterPushSink的相关接口函数来实现。
调用IWMWriter对象的BeginWriting函数,启动写接口对象。
对于每个筛选出来的数据分片,调用IWMWriterAdvanced对象的WriteStreamSample函数,对数据分片的呈现时间进行修改,并且保证呈现时间的逐渐递增,使不同输入源的采样数据经过系统的整合,能够有效的衔接起来,可以形成一个连续稳定的直播输出源。
步骤107、停止输出直播源。
系统停止时,调用IWMWriter对象的EndWriting函数,停止输出直播源的工作;对每一个直播输入源,调用IWMReader对象的Stop和IWMReader对象的Close函数,停止数据采样并断开和直播输入源的连接。
由上述的实施例可见,本发明利用Windows Media流媒体读写技术,获得各个直播输入源的采样数据,根据一定的系统筛选采样数据的策略,使每个时刻只能有一个直播输入源的采样数据被系统所采纳,然后修改筛选出来的采样数据的呈现时间,解决了将多个单独的直播源整合为一个连续播放的直播输出源的问题,人们得以按需自由地将所要欣赏的直播输入源组合为一个统一的直播输出源,给人们的流媒体欣赏带来更好的体验。
Claims (11)
1、一种实现流媒体直播的方法,其特征在于,该方法包括以下步骤:
a、连接直播输入源并获得直播输入源的信息,并指定需要进行采样的媒体流;
b、对直播输入源进行数据采样并根据一定的系统筛选决策方案选出合适的采样数据;
c、对采样数据的呈现时间进行修改,使不同输入源的采样数据能够有效的衔接起来,形成一个连续的直播输出源。
2、根据权利要求1所述实现流媒体直播的方法,其特征在于,步骤a中通过创建读接口对象并调用其函数连接直播输入源,直播输入源的信息包括直播输入源包含的媒体流的数量以及媒体流的编号,根据媒体流的编号可以指定需要进行采样的媒体流。
3、根据权利要求1所述实现流媒体直播的方法,其特征在于,步骤b中对直播输入源进行数据采样并对采样数据进行分片处理,得到采样数据片的媒体内容、呈现时间和持续时间。
4、根据权利要求1所述实现流媒体直播的方法,其特征在于,步骤b中所述系统筛选决策方案包括基于时间顺序的决策方案和基于优先级的决策方案。
5、根据权利要求4所述实现流媒体直播的方法,其特征在于,基于时间顺序的决策方案为:将一个特定的时间周期划分为若干的时间段,每个直播输入源对应一个时间段,系统就根据当前时间来决定选择哪个直播输入源的采样。
6、根据权利要求4所述实现流媒体直播的方法,其特征在于,所述基于优先级的决策方案为:为每个直播输入源指定一个特定并且唯一的优先级,系统根据优先级的顺序选择优先级相对高的直播输入源的采样数据推送到直播输出源。
7、根据权利要求5所述实现流媒体直播的方法,其特征在于,存在一个特殊并且可靠的直播输入源,用于弥补空白时间的采样数据。
8、根据权利要求6所述实现流媒体直播的方法,其特征在于,存在一个优先级最低的直播输入源,用于弥补高优先级直播输入源出现异常或中断时的采样数据。
9、根据权利要求3所述实现流媒体直播的方法,其特征在于步骤c中对采样数据片的呈现时间进行修改,并且保证呈现时间的逐渐递增,使不同输入源的采样数据有效的衔接起来,形成一个连续的直播输出源。
10、根据权利要求1到9中任一项所述的实现流媒体直播的方法,其特征在于,所述步骤a之前还包括创建一个检测工作线程,按照一定的时间间隔去检测各个直播输入源是否已经启动,如果直播输入源已经启动,则停止检测;否则继续定时对各个直播输入源进行检测。
11、根据权利要求10所述的实现流媒体直播的方法,其特征在于所述创建检测工作线程之前,还编辑系统配置文件,通知系统直播输入源的数目以及每个直播输入源所对应的发布点,并选择合适的系统筛选采样数据的决策方案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100357749A CN100452033C (zh) | 2005-07-02 | 2005-07-02 | 一种实现流媒体直播的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100357749A CN100452033C (zh) | 2005-07-02 | 2005-07-02 | 一种实现流媒体直播的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1889073A CN1889073A (zh) | 2007-01-03 |
CN100452033C true CN100452033C (zh) | 2009-01-14 |
Family
ID=37578352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100357749A Active CN100452033C (zh) | 2005-07-02 | 2005-07-02 | 一种实现流媒体直播的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100452033C (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6389467B1 (en) * | 2000-01-24 | 2002-05-14 | Friskit, Inc. | Streaming media search and continuous playback system of media resources located by multiple network addresses |
US6519648B1 (en) * | 2000-01-24 | 2003-02-11 | Friskit, Inc. | Streaming media search and continuous playback of multiple media resources located on a network |
-
2005
- 2005-07-02 CN CNB2005100357749A patent/CN100452033C/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6389467B1 (en) * | 2000-01-24 | 2002-05-14 | Friskit, Inc. | Streaming media search and continuous playback system of media resources located by multiple network addresses |
US6519648B1 (en) * | 2000-01-24 | 2003-02-11 | Friskit, Inc. | Streaming media search and continuous playback of multiple media resources located on a network |
Non-Patent Citations (2)
Title |
---|
Windows Media 与Real网络流媒体案例教程. 白煜,辛向晖,全文,清华大学出版社. 2004 |
Windows Media 与Real网络流媒体案例教程. 白煜,辛向晖,全文,清华大学出版社. 2004 * |
Also Published As
Publication number | Publication date |
---|---|
CN1889073A (zh) | 2007-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101207699B (zh) | 一种机顶盒升级的方法 | |
CN103414949B (zh) | 一种基于智能电视的多媒体编辑系统与方法 | |
US20050228861A1 (en) | Minute file creation method, minute file management method, conference server, and network conference system | |
CN100558157C (zh) | 一种在网络电视轮播节目中插播广告的方法及系统 | |
CN101127210A (zh) | 实现歌曲播放过程中歌词同步的方法和装置 | |
CN106254867A (zh) | 基于画面组对视频文件进行转码的方法及系统 | |
US20090007208A1 (en) | Program, data processing method, and system of same | |
CN104835513A (zh) | 音频定时播放方法、装置及系统 | |
CN100499412C (zh) | 应用程序执行设备 | |
US7774375B2 (en) | Media foundation topology | |
CN108260019A (zh) | 弹幕显示方法、装置及可读存储介质 | |
CN101771845A (zh) | 一种文件的播放处理方法、装置及播放器 | |
KR100788698B1 (ko) | 디스플레이 서비스 방법 및 그 방법을 수행할 수 있는네트워크 디바이스와 저장 매체 | |
US20110102684A1 (en) | Automatic capture of data for acquisition of metadata | |
CN100452033C (zh) | 一种实现流媒体直播的方法 | |
CN104080017A (zh) | 一种播放标记文件的方法、装置及系统 | |
CN103747280A (zh) | 一种创建节目单的方法及电子设备 | |
CN103237215A (zh) | 播放方法和播放设备 | |
CN105933797B (zh) | 基于网络协议电视的直播节目启播方法及装置 | |
US20040268369A1 (en) | Media foundation media sink | |
EP1401206A2 (en) | Stream Data Processing Apparatus | |
CN105120323A (zh) | 一种分布式播放器任务调度的方法及系统 | |
CN102752525B (zh) | 一种基于脚本创建播出表单的方法及装置 | |
CN101764952A (zh) | 一种基于时段的字幕单编辑、审查和播出方法 | |
CN102376325A (zh) | 一种多音频文件的混合播放系统及其控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C57 | Notification of unclear or unknown address | ||
DD01 | Delivery of document by public notice |
Addressee: Zhu Siquan Document name: the First Notification of an Office Action |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |