一种直播软件支持同时多路推流的方法技术

技术编号:19391264 阅读:2633 留言:0更新日期:2018-11-10 02:54
本发明专利技术公开一种直播软件支持同时多路推流的方法,通过修改“Open Broadcaster Software”的源代码,添加支持多路直播的相关代码,修改部分界面用于让用户配置多路直播的相关信息,最后在直播时复用同一个视频编码器及其编码后的码流,再整合不同直播协议要求的音频编码数据,完成多路直播。本发明专利技术可同时将实时直播内容推送到不同的直播平台,并且支持不同协议的多路流;还可以有效的降低软件对内存和CPU资源的耗费,节约开发成本并易于后续升级与维护。

A direct stream software supporting simultaneous multiple stream injection

The invention discloses a method for supporting simultaneous multi-channel push streaming by modifying the source code of \Open Broadcaster Software\, adding relevant codes supporting multi-channel live streaming, modifying part of the interface to allow users to configure relevant information of multi-channel live streaming, and finally reusing the same video encoder and its coding in live broadcasting. After the code stream is encoded, the audio data encoded by different live protocols are integrated to complete the multicast live broadcast. The invention can simultaneously push real-time live broadcast content to different live broadcast platforms, and support multi-channel flow of different protocols; it can also effectively reduce the consumption of memory and CPU resources for software, save development costs and be easy to upgrade and maintain in the follow-up.

【技术实现步骤摘要】
一种直播软件支持同时多路推流的方法
本专利技术涉及软件开发
,具体为一种直播软件支持同时多路推流的方法。
技术介绍
“OpenBroadcasterSoftware”是一个免费且开源的用于视频录制以及直播推流的软件。它可以让用户在Windows,Mac以及Linux上简单且快速的开始推流,方便的分享用户桌面操作,游戏过程,网页浏览过程等。“OpenBroadcasterSoftware”支持多种视频编解码格式,如H264(X264)等,可以实时的将直播用户指定的多种显示来源数据合成在一起;支持多种音频编解码格式,例如AAC和OPUS等。它默认支持采用RTMP协议推流,可以无缝的推流到各种支持RTMP协议的流媒体服务器中,如YouTube,斗鱼等。“OpenBroadcasterSoftware”目前只支持采用RTMP协议进行推流,但市面上有很多的推流协议,包括一些为了特定目的自己定义的流媒体协议。“OpenBroadcasterSoftware”是一个采用插件式结构的软件,所有的功能都能通过插件的形式进行扩充,只要满足规范要求即可,因此为了让“OpenBroadcasterSoftware”可以支持其它的推流协议就必须自己重新定义一个符合“OpenBroadcasterSoftware”输出插件规范的插件,目前已经有一些知名的流媒体直播服务平台在“OpenBroadcasterSoftware”上开发出了支持自己专有的推流协议的插件。在现实应用中,有时会出现这样的应用场景,例如游戏主播A希望使用“OpenBroadcasterSoftware”在直播的时候可以将自己的直播内容同时推送到两个不同的游戏直播平台LIVE_1和LIVE_2上,平台LIVE_1采用RTMP协议,平台LIVE_2采用自定义的RTP协议。这样的应用场景就需要“OpenBroadcasterSoftware”能支持同时进行多路推流的能力,并且支持不同协议的多路流。虽然“OpenBroadcasterSoftware”是一个开源的软件,但是目前在此基础上衍生出来的直播软件均只能支持一路直播。
技术实现思路
针对上述问题,本专利技术的目的在于提供一种能够增加功能,不仅可以支持同时多路推流到不同的流媒体平台,并且支持不同的协议同时推流,还可以有效的降低软件对内存和CPU资源的耗费的直播软件支持同时多路推流的方法。技术方案如下:一种直播软件支持同时多路推流的方法,括如下步骤:步骤1:下载“OpenBroadcasterSoftware”最新代码,按照向导安装配置依赖库;步骤2:若要设计自定义的流输出协议,则在plugins/obs-outputs/目录下新建一个源码文件myrtp.c,并在其中按照“OpenBroadcasterSoftware”输出推流协议插件接口规范obs_output_info中定义的要求实现各种回调函数;若利用现有的第三方直播平台实现的协议,则将该协议实现进行二次封装,并按照“OpenBroadcasterSoftware”输出推流协议插件接口规范obs_output_info中定义的要求进行二次封装;步骤3:修改OBSBasicSettings和OBSBasic类,在OBSBasicSettings类中为增加的串流配置直播流服务器地址、秘钥、协议类型等信息,增加的新的流信息保存在OBSBasic中新增加的OBSService类型的变量中;步骤4:修改window-basic-main-outputs.hpp文件,根据步骤3配置的多路推流方案,给BasicOutputHandler类增加新的OBSOutput,增加新的OBSOutput的个数与配置推流的路数相对应;步骤5:修改window-basic-main-outputs.cpp文件中的SimpleOutput类,根据步骤4中增加的OBSOutput来分别为每一个输出流配置相应的音频编码器;步骤6:修改SimpleOutput类的构造函数,在里面按照类似rtmp协议输出的方式为步骤5增加的新的OBSOutput进行初始化,同时添加对音频编码器rtp_auidoEncoder的初始化;将新添加的输出streamOutput_rtp挂载到推流软件的用户交互界面产生的开始、停止事件回调函数指针队列中;步骤7:修改StartStreaming函数,按照类似rtmp输出启动的方式添加对streamOutput_rtp的启动,设置streamOutput_rtp的音频编码器为前面创建的rtp_auidoEncoder;步骤8:修改SimpleOutput::SetupOutputs函数,按照rtmp输出流的方式为streamOutput_rtp增加音频编码数据,来源为rtp_auidoEncoder编码器编码;步骤9:按照上述方法修改其它控制流状态开关过程涉及到的代码,并连接UI界面中的控制逻辑。进一步的,所述步骤3中在修改增加接收多路推流配置信息的OBSService类型的变量时根据需要进行修改,若只增加一路推流,则额外增加一个OBSService类型的变量,若额外增加多路推流,则用一个容器保存。更进一步的,所述步骤5中若目前主流的流媒体音频编解码方案为aac则直接复用默认的rtmp推流协议的编码器,否则增加一个新的OBSEncoder音频编码器。更进一步的,所述步骤7和步骤8中为新增加输出流设置视频编码器时,直接复用rtmp的h264Streaming。本专利技术的有益效果是:本专利技术为流行的直播软件“OpenBroadcasterSoftware”提供了多路同时推流的能力,解决了使用“OpenBroadcasterSoftware”只能单一推RTMP协议流而不能同时输出自定义推流协议的问题。可以让一个主播用户同时将自己的实时直播内容推送到不同的直播平台,并且支持不同协议的多路流。本专利技术提供的改造方法需要修改的源代码不多,增加的多路推流对现有资源最大限度的实现了复用,例如复用最耗费计算资源的视频编解码器,实现了以较小改造代价让“OpenBroadcasterSoftware”支持多路推流的能力,和原始版本的软件相比一样的运行流畅。需要进行多路视频直播的应用场景开发者按照介绍的步骤,不需要大的改动即可实现,能节约开发成本并易于后续升级与维护。附图说明图1为本专利技术的流程架构图。图2是应用实现本专利技术时的流程图。具体实施方式下面结合附图和具体实施例对本专利技术做进一步详细说明。如图1所示,“OpenBroadcasterSoftware”的内核主要分为两个部分:(1)“obs”负责用户交互界面的管理,包括生成用户界面,对用户操作进行响应等,同时还负责管理交互界面用户操作生成的配置文件;“OpenBroadcasterSoftware”是一个采用插件式构架的软件,因此大多数的额外功能都依赖于独立的插件来运行,因此“obs”还需要根据用户配置加载相应的插件,并对插件的生命周期进行管理,例如加载、销毁、停止等等;(2)“libobs”主要负责音视频编解码器的管理、输出流obsoutput的管理;本专利技术的重要步骤就是增加修改obsoutput的管理方式,obsoutput负责封装管理一路本文档来自技高网
...

【技术保护点】
1.一种直播软件支持同时多路推流的方法,其特征在于,包括如下步骤:步骤1:下载“Open Broadcaster Software”最新代码,按照向导安装配置依赖库;步骤2:若要设计自定义的流输出协议,则在plugins/obs‑outputs/目录下新建一个源码文件myrtp.c,并在其中按照“Open Broadcaster Software”输出推流协议插件接口规范obs_output_info中定义的要求实现各种回调函数;若利用现有的第三方直播平台实现的协议,则将该协议实现进行二次封装,并按照“Open Broadcaster Software”输出推流协议插件接口规范obs_output_info中定义的要求进行二次封装;步骤3:修改OBSBasicSettings和OBSBasic类,在OBSBasicSettings类中为增加的串流配置直播流服务器地址、秘钥、协议类型等信息,增加的新的流信息保存在OBSBasic中新增加的OBSService类型的变量中;步骤4:修改window‑basic‑main‑outputs.hpp文件,根据步骤3配置的多路推流方案,给BasicOutputHandler类增加新的OBSOutput,增加新的OBSOutput的个数与配置推流的路数相对应;步骤5:修改window‑basic‑main‑outputs.cpp文件中的SimpleOutput类,根据步骤4中增加的OBSOutput来分别为每一个输出流配置相应的音频编码器;步骤6:修改SimpleOutput类的构造函数,在里面按照类似rtmp协议输出的方式为步骤5增加的新的OBSOutput进行初始化,同时添加对音频编码器rtp_auidoEncoder的初始化;将新添加的输出streamOutput_rtp挂载到推流软件的用户交互界面产生的开始、停止事件回调函数指针队列中;步骤7:修改StartStreaming函数,按照类似rtmp协议输出启动的方式添加对streamOutput_rtp的启动,设置streamOutput_rtp的音频编码器为前面创建的rtp_auidoEncoder;步骤8:修改SimpleOutput::SetupOutputs函数,按照rtmp输出流的方式为streamOutput_rtp增加音频编码数据,来源为rtp_auidoEncoder编码器编码;步骤9:按照上述方法修改其它控制流状态开关过程涉及到的代码,并连接UI界面中的控制逻辑。...

【技术特征摘要】
1.一种直播软件支持同时多路推流的方法,其特征在于,包括如下步骤:步骤1:下载“OpenBroadcasterSoftware”最新代码,按照向导安装配置依赖库;步骤2:若要设计自定义的流输出协议,则在plugins/obs-outputs/目录下新建一个源码文件myrtp.c,并在其中按照“OpenBroadcasterSoftware”输出推流协议插件接口规范obs_output_info中定义的要求实现各种回调函数;若利用现有的第三方直播平台实现的协议,则将该协议实现进行二次封装,并按照“OpenBroadcasterSoftware”输出推流协议插件接口规范obs_output_info中定义的要求进行二次封装;步骤3:修改OBSBasicSettings和OBSBasic类,在OBSBasicSettings类中为增加的串流配置直播流服务器地址、秘钥、协议类型等信息,增加的新的流信息保存在OBSBasic中新增加的OBSService类型的变量中;步骤4:修改window-basic-main-outputs.hpp文件,根据步骤3配置的多路推流方案,给BasicOutputHandler类增加新的OBSOutput,增加新的OBSOutput的个数与配置推流的路数相对应;步骤5:修改window-basic-main-outputs.cpp文件中的SimpleOutput类,根据步骤4中增加的OBSOutput来分别为每一个输出流配置相应的音频编码器;步骤6:修改SimpleOutput类的构造函数,在里面按照类似rtmp协议输出的方...

【专利技术属性】
技术研发人员:唐东明
申请(专利权)人:成都睿想腾飞科技有限公司
类型:发明
国别省市:四川,51

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1