13 Star 53 Fork 2

厦门云视听信息技术有限公司 / ABLMediaServer

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

我们的官网 https://www.yunshihome.com/

我们的QQ群:873666268

一、功能说明

  • ABLMediaServer是一款高性能流媒体服务器,其在Windows平台采用高性能的完成端口网络模型,在Linux平台则采用epoll,同时配备线程池用于媒体数据的接收、转换和发送。

  • 该服务器具有强劲的性能和稳定的运行,经过压力测试表明,在转发性能、CPU占用率和运行稳定性方面具有明显优势。ABLMediaServer能够接收通过ffmpeg命令或其他标准的rtsp、rtmp推流函数推送的rtsp流、rtmp流,并能够代理拉流,接收国标GB28181流。

  • 服务器经过转换后,能够输出标准的rtsp码流、rtmp码流、http-flv、ws-flv码流(支持H265视频输出)、http-mp4(视频支持H264、H265,音频支持AAC)、hls码流(视频支持H264、H265,音频支持AAC)、GB28181码流(国标PS流)。

  • 此外,流媒体服务器支持录像功能,包括智能录像删除、录像查询、录像文件点播和录像文件极速下载。对于http-flv、ws-flv、http-mp4协议点播时,支持暂停继续和拖动播放;对于rtsp点播录像文件时,支持慢放(1/16、1/8、1/4、1/2)、快放(2、4、8、16)、正常速度以及拖动播放。

  • 该服务器还支持秒级(基本上在1秒以内)图片抓拍,并能够对抓拍的图片进行查找和以http协议下载。同时,服务器支持H265转码为H264,转码输出视频支持指定分辨率、宽高、码率大小等参数。在Windows平台上,支持英伟达显卡硬件加速转码。

  • 经过测试,Linux平台最大并发转码能力为40路H265(在至强E5 2650 V3的硬件环境下),而Windows平台为35路H265(在i9 + 英伟达RTX 2080的硬件环境下)。

  • 最后,服务器支持对转码后的视频打入自定义水印,水印的字符内容、字体大小、字体颜色和字体位置均可在配置文件中配置。

                                                                         【欢迎加入高性能流媒体服务QQ群 873666268 】

二、ABLMediaServer主要功能

网络协议媒体输入 
   rtsp、rtmp外部主动推流输入 
     1、rtsp外部主动推流    (支持 视频:H264、H265 ,音频:AAC、G711A、G711U)	
     2、rtmp外部主动推流    (支持 视频:H264、H265 ,音频:AAC)	
	 3、国标GB28181输入     (支持 视频:H264、H265 ,音频:AAC、G711A、G711U) 
	 
   rtsp、rtmp、http-flv 拉流输入:
     1、rtsp     拉流       (支持 视频:H264、H265 ,音频:AAC、G711A、G711U)	
     2、rtmp     拉流       (支持 视频:H264、H265 ,音频:AAC)	
	 3、http-flv 拉流       (支持 视频:H264、H265 ,音频:AAC)
	 
网络协议媒体 输出:
   被动拉流输出 
     1、rtsp                (支持 视频:H264、H265 ,音频:AAC、G711A、G711U)	
     2、rtmp                (支持 视频:H264、H265 ,音频:AAC)
	 3、GB28181码流         (支持 视频:H264、H265 ,音频:AAC、G711A、G711U)
     4、http-flv            (支持 视频:H264、H265 ,音频:AAC)
     5、http-hls            (支持 视频:H264、H265 ,音频:AAC) 
	 6、http-mp4            (支持 视频:H264、H265 ,音频:AAC)  
	 7、websocket-flv       (支持 视频:H264、H265 ,音频:AAC)
  
   rtsp、rtmp、gb28181 主动推流输出:
     1、rtsp推流            (支持 视频:H264、H265 ,音频:AAC、G711A、G711U)	
     2、rtmp推流            (支持 视频:H264、H265 ,音频:AAC)		  
     3、GB28181推流         (支持 视频:H264、H265 ,音频:AAC、G711A、G711U)	

三、简明使用例子 1) 首先要配置 ABLMediaServer.ini 里面的 本机的IP地址 localipAddress 、recordPath 项。

	 1  本机的IP地址,最好需要配置准确(如果不配置程序会自动获取一个地址代替,如果本机有多个地址可能会不准确,如果配置则使用配置的IP地址,这样就准确),
	   因为调用 getMediaList 获取可用媒体源的json中,会使用到本机的IP地址来拼接 rtsp、rtmp、http-flv、ws-flv、hls、http-mp4 的播放url 。
	   调用 getMediaList 返回的json串中有如下url子项:
		"url": {
			"rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001",
			"rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001",
			"http-flv": "http://10.0.0.239:8088/Media/Camera_00001.flv",
			"ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001.flv",
			"http-mp4": "http://10.0.0.239:5088/Media/Camera_00001.mp4",
			"http-hls": "http://10.0.0.239:9088/Media/Camera_00001.m3u8"
		}		    
	  
	    其中的 10.0.0.239 就是可以从 localipAddress 配置项 精确获取 。
	  
	 2、录像路径配置 recordPath,如果不需要录像,可以忽略录像路径配置
		# 录像文件保存路径,如果不配置录像文件保存在应用程序所在的路径下的record子路径,如果配置路径则保存在配置的路径的record里面 
		# 注意:如果需要录像存储,存储的硬盘千万不要分区,整个硬盘作为一个区,因为服务器没有执行两个以上的盘符操作。
		# 录像保存路径配置 windows平台的路径配置 比如 D:\video ,Linux 平台配置 /home/video
		# 录像路径使用了默认路径,就一直使用默认路径,如果使用了配置路径就一直使用配置路径,确保使用的路径的硬盘空间为最大的,如果需要更换路径,要把原来的录像路径的视频全部删除。
        # 1路高清5M的摄像头,如果录像的话,每小时产生2G大小左右的录像文件。可以根据这个来计算需要购买多大的硬盘,接入多少路摄像头,需要设置录像文件最大的保存时间 	

 2)、  媒体输出规则: [network protocol]://[ip]:[port]/[app]/[stream][.extend]
 
          【注:如果自己不想拼接播放url ,可以调用http函数 /index/api/getMediaList,返回可播放媒
		   体源中有各种播放协议的url, 详见下面的函数 /index/api/getMediaList 】
	
	        说明: 
			      [network protocol]  有 rtsp、rtmp、http、ws 
				  [ip]                就是服务器所在的IP地址 
  				  [port]              各个网络协议分享时设置的端口号,详见 ABLMediaServer.ini 的配置文件,里面有相应的网络协议配置端口
				  [app]               各种网络协议发送过来设置的一级名字
				  [stream]            各种网络协议发送过来设置的二级名字
				  [.extend]           扩展名字,主要为为了访问服务器时,服务器需要识别网络协议需要客户端发送过来的扩展名。
				                        rtsp、rtmp        不需要扩展名,
									    http-flv 、ws-flv 扩展名为 .flv 
				                        hls 方式访问时,  扩展名为 .m3u8 
									    http-mp4访问时    扩展名为 .mp4 
									   
			      比如服务器IP为 190.15.240.11 ,app 为 Media ,stream 为 Camera_00001 ,假定端口都是默认 ,那么各种网络访问url如下:
					 rtsp:  
						rtsp://190.15.240.11:554/Media/Camera_00001
						
					 rtmp:  
						rtmp://190.15.240.11:1935/Media/Camera_00001

					 http-flv: 
						http://190.15.240.11:8088/Media/Camera_00001.flv
						
					 http-mp4: 
						http://190.15.240.11:5088/Media/Camera_00001.mp4
					
					 websocket-flv:  
						ws://190.15.240.11:6088/Media/Camera_00001.flv
						
					 http-hls:  
						http://190.15.240.11:9088/Media/Camera_00001.m3u8

3)、使用ffmpeg往 ABLMediaServer 推送rtsp 码流 【假定 源摄像机rtsp RUL为 rtsp://admin:abldyjh2020@192.168.1.120:554 , ABLMediaServer 所在服务器地址为 190.15.240.11 】
    【推送rtsp方式说明:视频支持 H264、H265 ,音频支持AAC、G711A、G711U 】
	
	ffmpeg -rtsp_transport tcp -i rtsp://admin:abldyjh2020@192.168.1.120:554 -vcodec copy -acodec copy -f rtsp -rtsp_transport tcp rtsp://190.15.240.11:554/Media/Camera_00001
	
   媒体输出: 
     rtsp: 【rtsp输出格式说明:视频支持 H264、H265 ,音频支持AAC、G711A、G711U 】
	    rtsp://190.15.240.11:554/Media/Camera_00001
		
	 rtmp: 【rtmp输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        rtmp://190.15.240.11:1935/Media/Camera_00001	 

	 http-flv: 【http-flv输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        http://190.15.240.11:8088/Media/Camera_00001.flv
		
	 ws-flv: 【http-flv输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        ws://190.15.240.11:6088/Media/Camera_00001.flv
		
	 http-hls: 【http-hls输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        http://190.15.240.11:9088/Media/Camera_00001.m3u8
		
4)、使用ffmpeg往 ABLMediaServer 推送rtmp 码流 【假定 源摄像机rtsp RUL为 rtsp://admin:abldyjh2020@192.168.1.120:554 , ABLMediaServer 所在服务器地址为 190.15.240.11 】
    【推送rtmp方式说明:视频支持 H264 ,音频支持AAC 】
	
	ffmpeg -rtsp_transport tcp -i rtsp://admin:abldyjh2020@192.168.1.120:554 -acodec copy -vcodec copy -f flv rtmp://190.15.240.11:1935/Media/Camera_00001
	
      rtsp: 【rtsp输出格式说明:视频支持 H264、H265 ,音频支持AAC、G711A、G711U 】
	    rtsp://190.15.240.11:554/Media/Camera_00001
		
	  rtmp: 【rtmp输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        rtmp://190.15.240.11:1935/Media/Camera_00001	 

	  http-flv: 【http-flv输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        http://190.15.240.11:8088/Media/Camera_00001.flv

	 ws-flv: 【http-flv输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        ws://190.15.240.11:6088/Media/Camera_00001.flv

	 http-hls: 【http-hls输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
         http://190.15.240.11:9088/Media/Camera_00001.m3u8
		
5)、使用ffmpeg往 ABLMediaServer 推送rtsp的文件码流 【假定媒体文件为:F:\video\MP4有声音\H264_AAC_2021-02-10_1080P.mp4  , ABLMediaServer 所在服务器地址为 190.15.240.11 】
    【推送rtsp方式说明:视频支持 H264、H265 ,音频支持AAC、G711A、G711U 】
	
	ffmpeg -re -stream_loop -1 -i F:\video\MP4有声音\H264_AAC_2021-02-10_1080P.mp4 -vcodec copy -acodec copy -rtsp_transport tcp -f rtsp rtsp://190.15.240.11:554/Media/Camera_00001
	
    媒体输出:
      rtsp: 【rtsp输出格式说明:视频支持 H264、H265 ,音频支持AAC、G711A、G711U 】
	    rtsp://190.15.240.11:554/Media/Camera_00001
		
	  rtmp: 【rtmp输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        rtmp://190.15.240.11:1935/Media/Camera_00001	 

	  http-flv: 【http-flv输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        http://190.15.240.11:8088/Media/Camera_00001.flv

	 ws-flv: 【http-flv输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
        ws://190.15.240.11:6088/Media/Camera_00001.flv

	 http-hls: 【http-hls输出格式说明:视频支持 H264、H265 ,音频支持AAC 】
         http://190.15.240.11:9088/Media/Camera_00001.m3u8

  【特别注明:可以往10000 的udp端口推送TS码流,推送成功后,可以调用 http函数getMediaList来获取接入的rtp码流 】
     ffmpeg.exe -re -stream_loop -1 -i F:\video\H264_20191021094432.mp4 -vcodec copy -f rtp_mpegts rtp://127.0.0.1:100000
		

6)、流媒体输出播放验证
     如果视频是rtsp方式,可以采用VLC进行播放验证 

     如果rtmp、http-flv 协议,视频为h264 ,可以采用VLC播放验证、或者B站的 flv.js 播放器验证 如果rtmp、http-flv 协议,视频为h265 ,可以采用EasyPlayer.js 播放器验证,【注:VLC 、flv.js 不支持Rtmp的H265视频、也不支持http-flv的265视频 】

7)、申请代理rtsp、rtmp、flv 拉流 、申请删除代理拉流 
	 1) 申请代理rtsp、rtmp、flv 拉流
	    
		   URL: /index/api/addStreamProxy
		   
		        参数:               参数说明            参数参考值
				secret                   服务器密码        比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
				vhost                                      比如  _defaultVhost_
				app                      应用名            比如 Media
				stream                   媒体流名          比如 Camera_00001            【/app/stream 组合起来不能重复】
				url                      代理拉流url       比如 rtsp://admin:abldyjh2020@192.168.1.120:554 或者 rtmp://190.15.240.36:1935/Media/Camera_00001 或者  http://190.15.240.36:8088/Media/Camera_00001.flv 
				isRtspRecordURL                            代理拉流的url是否是rtsp录像回放的url 默认0 ,1 是【可选参数】,如果是rtsp录像回放的url,可以进行控制代理拉流,比如 暂停、继续、控制倍速播放,拖动播放等等 ,参考
				                                           函数 /index/api/controlStreamProxy 
				enable_mp4                是否录像         1 录像,0 不录像             【可选参数】
				enable_hls                是否hls切片       1 进行hls 切片 ,0 不切片   【可选参数】
			    convertOutWidth           转码宽            转码输出宽 如果指定宽、高   【可选参数】[1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 就说明 H265 进行转码为 H264 
			    convertOutHeight          转码高            转码输出高 如果指定宽、高   【可选参数】[1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 就说明 H265 进行转码为 H264  
			    H264DecodeEncode_enable   H264是否解码      H264分辨率高再编码降分辨率,【可选参数】有时候需要H264视频进行先解码再重新编码降低分辨率,可以设置 H264DecodeEncode_enable 为 1 ,降下来的分辨率为 convertOutWidth 、 convertOutHeight
				
           http  GET 方式 		
		        1 请求rtsp拉流样例
		            http://190.15.240.11:7088/index/api/addStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&url=rtsp://admin:abldyjh2020@192.168.1.120:554&enable_mp4=0

		   http POST 方式  
                1 请求rtsp拉流样例		
                   http请求 url 样例
                     http://190.15.240.11:7088/index/api/addStreamProxy					   
				   body 参数 , json 格式	  
		             {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","url":"rtsp://admin:abldyjh2020@192.168.1.120:554","enable_mp4":0}
					 
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "success",   # success 为成功 
					"key": 93            # 成功时返回大于0的值,为代理拉流的Key ,删除代理拉流时需要用的   
				}
				
	 2) 控制代理拉流,比如 暂停、继续、控制倍速播放,拖动播放等等 
		     URL: /index/api/controlStreamProxy
		   
		     参数:
				secret  服务器密码 ,比如  035c73f7-bb6b-4889-a715-d9eb2d1925cc
				key                  比如  93 ,调用 addStreamProxy 返回的 key 的值 
				command              比如  pause、resume、seek、scale 对于对应意思:暂停、继续、拖动播放、倍速播放 
		        value  (字符串)      比如  1、2、4、8、16(倍速播放) ,360、1800、3600(拖动播放),2022-06-10T14:17:20.000(拖动播放)
				                           value 为可选参数,当 command 为 pause,resume 时,value 不用 ,当 command 为seek,sacale
										   是,需要填写value的值 
				
		    http GET 方式 
		        http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=pause
			   
			http  POST 方式 
			    http URL :
			      http://190.15.240.11:7088/index/api/controlStreamProxy
				  
			    body 参数 Json格式 
			       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"pause"} 
			       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"sacale","value":"2"} 
			   
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "success",   # success 为成功 ,如果失败是其他值 
				}		
	
	         【注:发送http请求 可以使用curl、postman、或者其他标准的http工具 】
			 
			
	 3) 申请删除代理rtsp、rtmp、flv 拉流
		     URL: /index/api/delStreamProxy
		   
		     参数:
				secret  服务器密码 ,比如  035c73f7-bb6b-4889-a715-d9eb2d1925cc
				key                  比如  93 ,调用 addStreamProxy 返回的 key 的值 
		   
		    http GET 方式 
		        http://190.15.240.11:7088/index/api/delStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
			   
			http  POST 方式 
			    http URL :
			      http://190.15.240.11:7088/index/api/delStreamProxy
				  
			    body 参数 Json格式 
			       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93} 
			   
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "success",   # success 为成功 ,如果失败是其他值 
				}		
	
	         【注:发送http请求 可以使用curl、postman、或者其他标准的http工具 】
			 
			 
	   
 8)、申请代理rtsp、rtmp、推流 、申请删除代理拉流 
	 1) 申请代理rtsp、rtmp 推流(注意:不是国标GB28181推流) 
	    
		     URL: /index/api/addPushProxy
		   
		     参数:     参数说明          参考值
				secret  服务器密码 ,比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
				vhost                比如 _defaultVhost_
				app     应用名       比如 Media
				stream  媒体流名     比如 Camera_00001
				url     代理推流url  比如 rtsp://190.15.240.36:554/Media/Camera_00001 或者 rtmp://190.15.240.36:1935/Media/Camera_00001 
				
           http  GET 方式 			   
		         http://190.15.240.11:7088/index/api/addPushProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&url=rtsp://190.15.240.36:554/Media/Camera_00001

		   http  POST 方式  
                http URL 
                  http://190.15.240.11:7088/index/api/addPushProxy

				http Body 参数 (json格式) 					  
		          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","url":"rtsp://190.15.240.36:554/Media/Camera_00001"}
		
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "success",   # success 为成功 
					"key": 93            # 成功时返回大于0的值,为代理推流的Key ,删除代理推流时需要用的   
				}
			
	 2) 申请删除代理rtsp、rtmp 推流
		     URL: /index/api/delPushProxy
		   
		     参数:      参数说明          参数参考值
				secret  服务器密码 ,      比如  035c73f7-bb6b-4889-a715-d9eb2d1925cc
				key     主键ID             比如  93 ,调用 /index/api/addPushProxy 返回的 key 的值 
		   
		    http GET 方式 
		        http://190.15.240.11:7088/index/api/delPushProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
			   
			http POST 方式 
			    http URL 
				  http://190.15.240.11:7088/index/api/delPushProxy
				  
				http Body json 格式  
			      {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
			   
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "success",   # success 为成功 ,如果失败是其他值 
				}		
	   		   
9)、创建GB28181接收端口、删除GB28181接收端口 

     1 	创建GB28181接收端口
			 
		     URL: /index/api/openRtpServer
			 功能:
			      创建GB28181接收端口,如果该端口接收超时,会自动回收,不用调用  /index/api/closeRtpServer
		   
		     参数:                      参数说明           参数参考值
				secret                    服务器密码        比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
				vhost                                       比如 _defaultVhost_
				app                       应用名            比如 gb28181 、rtp 等等 
				stream_id                 媒体流名          比如 44030012343220234234 (最好是国标编号)
				payload                   PS负载值          国标SDP里面PS负载值 ,比如 96,98 ,108 ,一定要从国标SDP里面获取 
				port                      端口号            0 ,由服务器自动分配,别的值 比如 26324 为指定端口
				enable_tcp                是否为tcp         0 为 udp ,1 为tcp 方式 
				enable_mp4                是否录像          1 录像,0 不录像            【可选参数】
				enable_hls                是否hls切片       1 进行hls 切片 ,0 不切片   【可选参数】
			    convertOutWidth           转码宽            转码输出宽 如果指定宽、高   【可选参数】[1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 就说明 H265 进行转码为 H264 
			    convertOutHeight          转码高            转码输出高 如果指定宽、高   【可选参数】[1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 就说明 H265 进行转码为 H264  
			    H264DecodeEncode_enable   H264是否解码      H264分辨率高再编码降分辨率,【可选参数】有时候需要H264视频进行先解码再重新编码降低分辨率,可以设置 H264DecodeEncode_enable 为 1 ,降下来的分辨率为 convertOutWidth 、 convertOutHeight
				
             http  GET 方式 			   
		        http://190.15.240.11:7088/index/api/openRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=gb28181&stream_id=44030012343220234234&payload=96&port=0&enable_tcp=0&enable_mp4=0

		     http  POST 方式    
			    http URL
				  http://190.15.240.11:7088/index/api/openRtpServer
				  
				http 参数值 
		           {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream_id":"Camera_00001","payload":96,"port":0,"enable_tcp":0,"enable_mp4":0}
		
			返回Body:
				  {
					"code": 0,           # 0为操作成功,其他值为操作失败
					"port": 8356,        # 端口号
					"memo": "success",   # success 为成功 
					"key": 93            # 成功时返回大于0的值,GB28181接收实例key ,关闭时需要   
				  }
	
       2    删除 GB28181接收端口		
		     URL: /index/api/closeRtpServer
			 功能:
			      删除GB28181接收端口 
		   
		     参数:              参数说明     参数参考值   
				secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
			    key              主键值ID     比如  93 ,  调用 /index/api/openRtpServer 返回的 key 的值 
		   
		    http GET 方式 
		       http://190.15.240.11:7088/index/api/closeRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
			   
			http  POST 方式 
			   http URL 
			     http://190.15.240.11:7088/index/api/closeRtpServer
				 
			   http Body 参数 json 格式
			     {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
			   
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "success",   # success 为成功 ,如果失败是其他值 
				}				
				
 10)、创建GB28181发送端口、删除GB28181发送端口 

     1 	创建GB28181发送端口
			 
		     URL: /index/api/startSendRtp
			 功能:
			      创建GB28181发送端口,如果该发送端端口没有数据发送,会自动回收,不用调用  /index/api/stopSendRtp
		   
		     参数:              参数说明              参数参考值
				secret           服务器密码            比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
				vhost                                  比如 _defaultVhost_
				app              应用名                比如 gb28181 、rtp 等等 
				stream           媒体流名              比如 44030012343220234234 (最好是国标编号)
				payload          PS负载值              国标SDP里面PS负载值 ,比如 96,98 ,108 ,rtp打包时需要
				ssrc             同步源                ssrc
				src_port         发送端绑定的端口号    指定服务器在发送国标流时绑定的端口号,如果为 0 ,由服务器自动分配,别的值 比如 26324 为指定端口
				dst_url          目标IP                目标IP地址 
				dst_port         目标端口              目标端口 
				is_udp           是否设置udp           是否设置为UDP通讯,0 TCP,1 udp
				
				
             http  GET 方式 			   
		        http://190.15.240.11:7088/index/api/startSendRtp?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=gb28181&stream=44030012343220234234&payload=96&ssrc=5224&src_port=26324&dst_url=190.15.240.11&dst_port=9824&is_udp=1

		     http  POST 方式    
			    http URL
				  http://190.15.240.11:7088/index/api/startSendRtp
				  
				http 参数值 
		           {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","payload":96,"ssrc":2432,"src_port":26324,"dst_url":"190.15.240.11","dst_port":9824,"is_udp":1}
		
			返回Body:
				  {
					"code": 0,           # 0为操作成功,其他值为操作失败
					"port": 8356,        # 端口号
					"memo": "success",   # success 为成功 
					"key": 93            # 成功时返回大于0的值,GB28181发送码流实例key ,关闭时需要   
				  }
	
       2    删除 GB28181发送端口		
		     URL: /index/api/stopSendRtp
			 功能:
			      删除GB28181发送端口 
		   
		     参数:              参数说明     参数参考值   
				secret           服务器密码   比如  035c73f7-bb6b-4889-a715-d9eb2d1925cc
			    key              主键值ID     比如  93 ,  调用 /index/api/startSendRtp 返回的 key 的值 
		   
		    http GET 方式 
		       http://190.15.240.11:7088/index/api/stopSendRtp?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
			   
			http  POST 方式 
			   http URL 
			     http://190.15.240.11:7088/index/api/stopSendRtp
				 
			   http Body 参数 json 格式
			     {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
			   
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "success",   # success 为成功 ,如果失败是其他值 
				}				
				
11)、获取流媒体服务器所有可用的媒体源
		 URL: /index/api/getMediaList
		 
		 功能:
			 获取流媒体服务器所有媒体源

		 参数:              参数说明     参数参考值
			secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc        【必填参数】
			app              应用名       比如 rtp、gb28181、Media 等等 ,自己起的名字     【可选参数】
			stream           媒体流名     比如 Camera_00001、44303403343034243200234 等等  【可选参数】
			
			参数填写样例说明:
		  样例1(app、stream 都不填写) 
			   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
			    
			  返回所有在线的媒体源
			 
		  样例2 (只填写 app )
			   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
			   app     rtp 
			   返回 app 等于 rtp 的所有媒体源
			   
		  样例3 (填写 app = rtp , stream = 44303403343034243200234)
			   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
			   app     rtp 
			   stream  44303403343034243200234 
			  返回 app 等于 rtp、并且 stream 等于 44303403343034243200234 的所有媒体源
			  
		  样例4 (填写 stream = 44303403343034243200234)
			   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
			   stream  44303403343034243200234 
			   返回 stream 等于 44303403343034243200234 的所有媒体源
			  
         http  GET 方式 
           http://127.0.0.1:7088/index/api/getMediaList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
		   
		http  POST 方式 
		   http URL 
			 http://190.15.240.11:7088/index/api/getMediaList
			 
		   http Body 参数 json 格式
			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
			 
		 返回Body:
			{
				"code": 0,
				"memo": "success",
				"mediaList": [
					{
						"key": 34,    
						"app": "Media",  
						"stream": "Camera_00001",
						"status": false ,          【 false 尚未录像,true 正在录像 】
						"sourceURL": "rtsp://10.0.0.239:554/Media/Camera_00001",
						"sourceType": 23,
						"readerCount": 0,
						"videoCodec": "H264",
						"width": 1920,
						"height": 1080,
						"networkType": 24,
						"audioCodec": "AAC",
						"audioChannels": 1,
						"audioSampleRate": 16000,
						"url": {
							"rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001",
							"rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001",
							"http-flv": "http://10.0.0.239:8088/Media/Camera_00001.flv",
							"ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001.flv",
							"http-mp4": "http://10.0.0.239:5088/Media/Camera_00001.mp4",
							"http-hls": "http://10.0.0.239:9088/Media/Camera_00001.m3u8"
						}
					}
				]
			}	
			
          【注释:可以根据 "networkType": 24, 这个字段值区分 媒体接入的类型 ,具体详见网络类型的对照表 】				
  1. 删除 某一个媒体源 URL: /index/api/delMediaStream 功能: 某一个媒体源,这媒体源,可以是rtp推流、rtmp推流,各种方式代理拉流接入的,国标接入 等等。

    参数: 参数说明 参数参考值
    secret 服务器密码 比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc key 主键值ID 比如 93 , 调用 /index/api/getMediaList 返回的 key 的值

	http GET 方式 
	   http://190.15.240.11:7088/index/api/delMediaStream?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
	   
	http  POST 方式 
	   http URL 
		 http://190.15.240.11:7088/index/api/delMediaStream
		 
	   http Body 参数 json 格式
		 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
	   
	返回Body:
		{
			"code": 0,           # 0为操作成功,其他值为操作失败
			"memo": "success",   # success 为成功 ,如果失败是其他值 
		}				
		
13)、获取流媒体服务器所有往外部输出码流列表,包括外部请求的rtsp、rtmp、http-flv、ws-flv、hls 列表
                                      也包括服务器代理rtsp推流、rtmp推流列表
									  也包括服务器以国标方式往上级推rtp流列表
					【必要时可以调用 /index/api/delOutList 接口删除某一个列表对象,比如删除某一路国标推流、删除某一路rtsp推流、 删除某一路rtmp推流】
		 URL: /index/api/getOutList
		 
		 功能:
			 获取流媒体服务器所有输出流列表

		 参数:              参数说明     参数参考值
			secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
			
         http  GET 方式 
           http://44.35.33.239:7088/index/api/getOutList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc	
		   
		http  POST 方式 
		   http URL 
			 http://44.35.33.239:7088/index/api/getOutList
			 
		   http Body 参数 json 格式
			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
			 
		 返回Body:
				{
					"code": 0,
					"memo": "success",
					"outList": [
						{ 
							"key": 103,                【请求客户端的标识ID ,可以调用  /index/api/delOutList 删除 该请求】
							"app": "Media",
							"stream": "Camera_00001",
							"sourceURL": "rtsp://44.35.33.239:554/Media/Camera_00001",  【表示外界以rtsp方式向服务器请求码流】
							"videoCodec": "H264",
							"audioCodec": "AAC",
							"audioChannels": 1,
							"audioSampleRate": 16000,
							"networkType": 24,         【网络类型为24 ,标识为rtsp 方式】
							"dst_url": "44.35.33.39",  【 请求码流客户端IP   】
							"dst_port": 43801          【 请求码流客户端端口 】
						},
						{
							"key": 85,                 【请求客户端的标识ID ,可以调用  /index/api/delOutList 删除 该请求】
							"app": "Media",
							"stream": "Camera_00001",
							"sourceURL": "http://localhost:8088/Media/Camera_00001.flv",【表示外界以 http-flv 方式向服务器请求码流】 
							"videoCodec": "H264",
							"audioCodec": "AAC",
							"audioChannels": 1,
							"audioSampleRate": 16000,
							"networkType": 25,         【网络类型为25 ,标识为 http-flv 方式】
							"dst_url": "44.35.33.39",  【 请求码流客户端IP   】
							"dst_port": 43806          【 请求码流客户端端口 】  
						}
					]
				}			

              【注释:可以根据 "networkType": 24, 这个字段值区分 媒体输出的类型 ,具体详见网络类型的对照表 】				
  1. 删除 某一个服务器所有往外部输出码流列表 URL: /index/api/delOutList 功能: 删除某一个流媒体服务器所有往外部输出码流列表,包括外部请求的rtsp、rtmp、http-flv、ws-flv、hls 点播 。国标推流、rtsp推流、rtmp 推流 等等

    参数: 参数说明 参数参考值
    secret 服务器密码 比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc key 主键值ID 比如 93 , 调用 /index/api/getOutList 返回的 key 的值

	http GET 方式 
	   http://190.15.240.11:7088/index/api/delOutList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
	   
	http  POST 方式 
	   http URL 
		 http://190.15.240.11:7088/index/api/delOutList
		 
	   http Body 参数 json 格式
		 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
	   
	返回Body:
		{
			"code": 0,           # 0为操作成功,其他值为操作失败
			"memo": "success",   # success 为成功 ,如果失败是其他值 
		}	

15)根据条件组合,删除任意一个或一组或者全部媒体输入列表 URL: /index/api/close_streams

   功能
      删除任意一个或一组或者全部媒体输入列表 
	    
		secret           服务器密码            比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc                           【必填参数】
		vhost                                  比如 _defaultVhost_                                                 【可选参数】
		app              应用名                比如 gb28181 、rtp 等等                                             【可选参数】
		stream           媒体流名              比如 Camera_00001、dsafdsafassdafadsfas、等等                       【可选参数】
		force            是否强制关闭          1 强制关闭,不管是否有人在观看、0 非强制关闭,当有人观看时不关闭。  【必填参数】
		
	 http GET 方式 
        示例1: http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=live&force=1
	            【表示强行关闭 app 等于 live 的码流接入】
        示例2: http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=live&stream=Camera_00001&force=1
	            【表示强行关闭 app 等于 live, 并且 stream 等于 Camera_00001  的码流接入 】
        示例3: http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&force=1
	            【表示强行关闭 所有码流(app全部、stream全部) 接入 】
			   
	 http pos 方式 
        示例1: http URL:
		          http://190.168.24.112:7088/index/api/close_streams
		        body:
		          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","app":"live","force":1}
				
	             【表示强行关闭 app 等于 live 的码流接入】
				 
        示例2: http URL:
		          http://190.168.24.112:7088/index/api/close_streams
		        body:
		          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","app":"live","stream":"Camera_00001","force":1}
				  
	           【表示强行关闭 app 等于 live, 并且 stream 等于 Camera_00001  的码流接入 】
			   
        示例3: http URL:
		          http://190.168.24.112:7088/index/api/close_streams
		        body:
		          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","force":1}
		
	           【 表示强行关闭 所有码流(app全部、stream全部) 接入 】

 16)、 开始录像、停止录像
	 1) 申请开始录像
	    
		     URL: /index/api/startRecord
		   
		     参数:     参数说明          参考值
				secret  服务器密码 ,比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
				vhost                比如 _defaultVhost_
				app     应用名       比如 Media
				stream  媒体流名     比如 Camera_00001
				
           http  GET 方式 			   
		         http://190.15.240.11:7088/index/api/startRecord?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001

		   http  POST 方式  
                http URL 
                  http://190.15.240.11:7088/index/api/startRecord

				http Body 参数 (json格式) 					  
		          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001"}
		
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "MediaSource: /Media/Camera_00001 start Record",   #  "code": 0 为成功 
				}
			
	 2) 申请停止录像
		     URL: /index/api/stopRecord
		   
		     参数:     参数说明          参考值
				secret  服务器密码 ,比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
				vhost                比如 _defaultVhost_
				app     应用名       比如 Media
				stream  媒体流名     比如 Camera_00001
				
           http  GET 方式 			   
		         http://190.15.240.11:7088/index/api/stopRecord?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001

		   http  POST 方式  
                http URL 
                  http://190.15.240.11:7088/index/api/stopRecord

				http Body 参数 (json格式) 					  
		          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001"}
		
			返回Body:
				{
					"code": 0,           # 0为操作成功,其他值为操作失败
					"memo": "success",   # success 为成功 
				}

17 获取系统配置参数 URL: /index/api/getServerConfig 功能: 获取服务器的配置参数

	 参数:              参数说明     参数参考值   
		secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc
   
	http GET 方式 
	   http://190.15.240.11:7088/index/api/getServerConfig?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
	   
	http  POST 方式 
	   http URL 
		 http://190.15.240.11:7088/index/api/getServerConfig
		 
	   http Body 参数 json 格式
		 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
	   
	返回Body:
		{
			"code": 0,
			"params": [
				{
					"secret": "035c73f7-bb6b-4889-a715-d9eb2d1925cc",
					"memo": "server password"
				},
				{
					"ServerIP": "44.35.33.239",
					"memo": "ABLMediaServer ip address"
				},
				{
					"mediaServerID": "ABLMediaServer_00001",
					"memo": "media Server ID "
				},
				{
					"hook_enable": 0,
					"memo": "hook_enable = 1 open notice , hook_enable = 0 close notice "
				},
				{
					"enable_audio": 1,
					"memo": "enable_audio = 1 open Audio , enable_audio = 0 Close Audio "
				},
				{
					"httpServerPort": 7088,
					"memo": "http api port "
				},
				{
					"rtspPort": 554,
					"memo": "rtsp port "
				},
				{
					"rtmpPort": 1935,
					"memo": "rtmp port "
				},
				{
					"httpFlvPort": 8088,
					"memo": "http-flv port "
				},
				{
					"hls_enable": 0,
					"memo": "hls whether enable "
				},
				{
					"hlsPort": 9088,
					"memo": "hls port"
				},
				{
					"wsPort": 6088,
					"memo": "websocket flv port"
				},
				{
					"mp4Port": 5088,
					"memo": "http mp4 port"
				},
				{
					"ps_tsRecvPort": 10000,
					"memo": "recv ts , ps Stream port "
				},
				{
					"hlsCutType": 2,
					"memo": "hlsCutType = 1 hls cut to Harddisk,hlsCutType = 2  hls cut Media to memory"
				},
				{
					"h265CutType": 1,
					"memo": " 1 h265 cut TS , 2 cut fmp4 "
				},
				{
					"RecvThreadCount": 128,
					"memo": " RecvThreadCount "
				},
				{
					"SendThreadCount": 128,
					"memo": "SendThreadCount"
				},
				{
					"GB28181RtpTCPHeadType": 2,
					"memo": "rtp Length Type"
				},
				{
					"ReConnectingCount": 40320,
					"memo": "Try reconnections times ."
				},
				{
					"maxTimeNoOneWatch": 9999999,
					"memo": "maxTimeNoOneWatch ."
				},
				{
					"pushEnable_mp4": 0,
					"memo": "pushEnable_mp4 ."
				},
				{
					"fileSecond": 180,
					"memo": "fileSecond ."
				},
				{
					"fileKeepMaxTime": 1,
					"memo": "fileKeepMaxTime ."
				},
				{
					"httpDownloadSpeed": 6,
					"memo": "httpDownloadSpeed ."
				},
				{
					"RecordReplayThread": 32,
					"memo": "Total number of video playback threads ."
				}
			]
		}
			
	18)、查询录像列表
		 URL: /index/api/queryRecordList
		 
		 功能:
			 查询某一路输入源的录像列表(可以查询代理拉流输入、推流输入、国标输入等等 )

		 参数:              参数说明     参数参考值
			secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc        【必填参数】
			vhost                         比如 _defaultVhost_                              【可选参数】 
			app              应用名       比如 rtp、gb28181、Media 等等 ,自己起的名字     【必填参数】
			stream           媒体流名     比如 Camera_00001、44303403343034243200234 等等  【必填参数】
		    starttime        开始时间     比如 20220116154810 年月日时分秒                 【必填参数】
		    endtime          结束时间     比如 20220116155115 年月日时分秒                 【必填参数】
			
		【注意:1、开始时间必须小于 当前时间减去切片时长的时间 2、从 开始时间 至 结束时间 不能超过3天】
			  
         http  GET 方式 
           http://10.0.0.239:7088/index/api/queryRecordList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=Media&stream=Camera_00001&starttime=20220116154810&endtime=20220116155115
		   
		http  POST 方式 
		   http URL 
			 http://190.15.240.11:7088/index/api/queryRecordList
			 
		   http Body 参数 json 格式
			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","starttime":"20220116154810","endtime":"20220116155115"}
			 
		 返回Body:
			{
				"code": 0,
				"app": "Media",
				"stream": "Camera_00001",
				"starttime": "20220116154810",
				"endtime": "20220116155115",
				"recordFileList": [
					{
						"file": "20220116154810.mp4",
						"url": {
							"rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810",
							"rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810",
							"http-flv": "http://10.0.0.239:8088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.flv",
							"ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.flv",
							"http-mp4": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.mp4?download_speed=1",
							"download": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.mp4?download_speed=6"
						}
					},
					{
						"file": "20220116155110.mp4",
						"url": {
							"rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110",
							"rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110",
							"http-flv": "http://10.0.0.239:8088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.flv",
							"ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.flv",
							"http-mp4": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.mp4?download_speed=1",
							"download": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.mp4?download_speed=6"
						}
					}
				]
			}
  19)、消息通知使用 
        功能说明:消息通知是流媒体服务器的一些消息比如无人观看、fmp4录像切片完成、播放时流地址不存在等等信息能及时的通知到另外一个http服务器上,需要此功能
		          消息通知功能用在什么地方,比如说无人观看消息通知,当收到无人观看消息时,国标服务器可以关闭国标发流,断开代理拉流,断开推流等等操作 
		          要使用此功能把配置文件的参数hook_enable 值设置为 1,同时通知的http服务器地址、端口号一定要设置对,下面列举出配置文件中的相关参数
			 
			hook_enable=1                                                                  #事件通知部分,当 hook_enable=1 时,开启事件通知,hook_enable=0时关闭事件通知 
            on_stream_arrive=http://10.0.0.238:7088/index/hook/on_stream_arrive            #当某一路的码流达到时会通知一次
			on_stream_none_reader=http://10.0.0.238:8080/index/hook/on_stream_none_reader  #当某一路流无人观看时,会触发该通知事件,接收端收到后可以进行断流操作
            on_stream_disconnect=http://10.0.0.238:7088/index/hook/on_stream_disconnect    #当某一路码流断开时会通知一次
			on_stream_not_found=http://10.0.0.238:8080/index/hook/on_stream_not_found      #播放时,找不到播放的码流,通过配合on_stream_none_reader事件可以完成按需拉流
			on_record_mp4=http://10.0.0.238:8080/index/hook/on_record_mp4                  #录制完毕一段mp4文件通知
			
            【注:http url的 IP,端口 是代表消息接收服务器的IP,端口,一定要填写正确,url 地址要合法,不要有空格 】
			1、当某一路码流到达时会发送通知:
				POST /index/hook/on_stream_arrive HTTP/1.1  # 根据 /index/hook/on_stream_arrive 这个可以判断是某一路码流到达
				Accept: */*
				Accept-Language: zh-CN,zh;q=0.8
				Connection: keep-alive
				Content-Length: 105
				Content-Type: application/json
				Host: 127.0.0.1
				Tools: ABLMediaServer-5.2.9(2022-03-28)
				User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

			  {
			   "app":"Media",                            # app 
			   "stream":"Camera_00001",                  # stream  
			   "mediaServerId":"ABLMediaServer_00001",   # 流媒体服务器编号 ,在配置文件可以配置,如果集群流媒体服务器时,可以给每台流媒体服务器起个编号 
			   "networkType":23,                         # 媒体流来源网络编号,可参考附表  
			   "key":130                                 # 媒体流来源编号,可以根据这个key进行关闭流媒体 可以调用delMediaStream或close_streams 函数进行关闭
			  }
			
			2、无人观看消息通知样例:
				POST /index/hook/on_stream_none_reader HTTP/1.1  # 根据 /index/hook/on_stream_none_reader 这个可以判断是无人观看消息通知
				Accept: */*
				Accept-Language: zh-CN,zh;q=0.8
				Connection: keep-alive
				Content-Length: 105
				Content-Type: application/json
				Host: 127.0.0.1
				Tools: ABLMediaServer-5.2.9(2022-03-28)
				User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

			  {
			   "app":"Media",                            # app 
			   "stream":"Camera_00001",                  # stream  
			   "mediaServerId":"ABLMediaServer_00001",   # 流媒体服务器编号 ,在配置文件可以配置,如果集群流媒体服务器时,可以给每台流媒体服务器起个编号 
			   "networkType":23,                         # 媒体流来源网络编号,可参考附表  
			   "key":130                                 # 媒体流来源编号,可以根据这个key进行关闭流媒体 可以调用delMediaStream或close_streams 函数进行关闭
			  }
			  
			 3、 fmp4录像切片录像完成一个文件时会发送一个消息通知 
				POST /index/hook/on_record_mp4 HTTP/1.1  # 根据 /index/hook/on_record_mp4 这个可以判断是mp4录像切片完毕一个通知 
				Accept: */*
				Accept-Language: zh-CN,zh;q=0.8
				Connection: keep-alive
				Content-Length: 127
				Content-Type: application/json
				Host: 127.0.0.1
				Tools: ABLMediaServer-5.2.9(2022-03-28)
				User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

				{
				  "app":"Media",                          # app 
				  "stream":"Camera_00001",                # stream  
				  "mediaServerId":"ABLMediaServer_00001", # 流媒体服务器编号 ,在配置文件可以配置,如果集群流媒体服务器时,可以给每台流媒体服务器起个编号 
				  "networkType":70,                       # 媒体流来源网络编号,可参考附表     
				  "fileName":"20220312212546.mp4"         # 录像切片完成的文件名字    
				} 

			4、当某一路码流断开时会发送通知:
				POST /index/hook/on_stream_disconnect HTTP/1.1  # 根据 /index/hook/on_stream_disconnect 这个可以判断是某一路码流断开
				Accept: */*
				Accept-Language: zh-CN,zh;q=0.8
				Connection: keep-alive
				Content-Length: 105
				Content-Type: application/json
				Host: 127.0.0.1
				Tools: ABLMediaServer-5.2.9(2022-03-28)
				User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

			  {
			   "app":"Media",                            # app 
			   "stream":"Camera_00001",                  # stream  
			   "mediaServerId":"ABLMediaServer_00001",   # 流媒体服务器编号 ,在配置文件可以配置,如果集群流媒体服务器时,可以给每台流媒体服务器起个编号 
			   "networkType":23,                         # 媒体流来源网络编号,可参考附表  
			   "key":130                                 # 媒体流来源编号,可以根据这个key进行关闭流媒体 可以调用delMediaStream或close_streams 函数进行关闭
			  }

			 5、 当播放一个url,如果不存在时,会发出一个消息通知 
				POST /index/hook/on_stream_not_found HTTP/1.1  # 根据 /index/hook/on_stream_not_found ,Http接收服务器得知流不不存在 
				Accept: */*
				Accept-Language: zh-CN,zh;q=0.8
				Connection: keep-alive
				Content-Length: 127
				Content-Type: application/json
				Host: 127.0.0.1
				Tools: ABLMediaServer-5.2.9(2022-03-28)
				User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

				{
				  "app":"Media",                          # app      不存在的app
				  "stream":"Camera_00001",                # stream   不存在的stream 
				  "mediaServerId":"ABLMediaServer_00001"  # 流媒体服务器编号 ,在配置文件可以配置,如果集群流媒体服务器时,可以给每台流媒体服务器起个编号 
				} 
				
  20) 图片抓拍 
		 URL: /index/api/getSnap
		 
		 功能:
			 查询某一接入的媒体源进行抓拍

		 参数:              参数说明     参数参考值
			secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc        【必填参数】
			vhost                         比如 _defaultVhost_                              【可选参数】 
			app              应用名       比如 rtp、gb28181、Media 等等 ,自己起的名字     【必填参数】
			stream           媒体流名     比如 Camera_00001、44303403343034243200234 等等  【必填参数】
			timeout_sec      超时时长     10  即本次抓拍最大超时时长 单位 秒               【必填参数】
			  
         http  GET 方式 
           http://127.0.0.1:7088/index/api/getSnap?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&timeout_sec=10
		   
		http  POST 方式 
		   http URL 
			 http://190.15.240.11:7088/index/api/getSnap
			 
		   http Body 参数 json 格式
			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","timeout_sec":10}
  
        抓拍成功返回:
		{
			"code": 0,
			"memo": "success , Catpuring takes time 219 millisecond .",
			"url": "http://10.0.0.239:7088/Media/Camera_00001/2022031910034501.jpg"
		}
	
	21)图片列表查询
		 URL: /index/api/queryPictureList
		 
		 功能:
			 查询某一路输入源的抓拍图片列表 

		 参数:              参数说明     参数参考值
			secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc        【必填参数】
			vhost                         比如 _defaultVhost_                              【可选参数】 
			app              应用名       比如 rtp、gb28181、Media 等等 ,自己起的名字     【必填参数】
			stream           媒体流名     比如 Camera_00001、44303403343034243200234 等等  【必填参数】
		    starttime        开始时间     比如 20220317081201 年月日时分秒                 【必填参数】
		    endtime          结束时间     比如 20220319231201 年月日时分秒                 【必填参数】
			
		【注意:1、开始时间必须小于 当前时间减去切片时长的时间 2、从 开始时间 至 结束时间 不能超过7天】
	
         http  GET 方式 
           http://10.0.0.239:7088/index/api/queryPictureList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=Media&stream=Camera_00001&starttime=20220317081201&endtime=20220319231201
		   
		http  POST 方式 
		   http URL 
			 http://190.15.240.11:7088/index/api/queryPictureList
			 
		   http Body 参数 json 格式
			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","starttime":"20220317081201","endtime":"20220319231201"}

          成功返回Body值 
			{
			"code": 0,
			"app": "Media",
			"stream": "Camera_00001",
			"starttime": "20220317081201",
			"endtime": "20220319231201",
			"PictureFileList": [
				{
					"file": "2022031816153857.jpg",
					"url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816153857.jpg"
				},
				{
					"file": "2022031816153958.jpg",
					"url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816153958.jpg"
				},
				{
					"file": "2022031816154059.jpg",
					"url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816154059.jpg"
				},
		 	]
		  }	
	
 22、修改某一路的水印相关参数
 
		URL: index/api/setTransFilter
	 
	 功能:
		 修改某一路的水印相关参数,比水印的内容、颜色、字体大小、字体位置、字体透明度 

	 参数:              参数说明     参数参考值
		secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc        【必填参数】
		vhost                         比如 _defaultVhost_                              【可选参数】 
		app              应用名       比如 rtp、gb28181、Media 等等 ,自己起的名字     【必填参数】
		stream           媒体流名     比如 Camera_00001、44303403343034243200234 等等  【必填参数】
		text             水印内容     比如 某某市某某公安局                  【必填参数】
		size             字体大小     20、30 、40 、50                       【必填参数】
		color            字体颜色     red,green,blue,white,black,
		alpha            透明度       0.1 ~  0.9 ,
		left             水印x坐标    比如 5 、 10 、20 
		top              水印y坐标    比如 5 、 10 、 20 
		trans            是否转换     固定为 1
	
	 http  POST 方式 
		 http://127.0.0.1:7088/index/api/setTransFilter
		 
	 Body 参数内容为 
			{
			"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc",
			"app" : "live",
			"stream" : "test",
			"text" : "ABL",
			"size" : 60,
			"color" : "red",
			"alpha" : 0.8,
			"left" : 40,
			"top" : 40,
			"trans" : 1
			}
			
	23、为了功能更新的需要,增加设置参数值的接口,可以单独设置 ABLMediaServer.ini 的某一个值,并且服务器不用重启,立即起效 
	
		URL: index/api/setConfigParamValue
	 
		 功能:
			为了功能更新的需要,增加设置参数值的接口,可以单独设置 ABLMediaServer.ini 的某一个值,并且服务器不用重启,立即起效 

		 参数:              参数说明     参数参考值
			secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc        【必填参数】
			vhost                         比如 _defaultVhost_                              【可选参数】 
			key              参数名       比如 saveGB28181Rtp (保存接入的国标PS流)、 saveProxyRtspRtp (保存rtsp代理拉流的rtp流)
			                              还有 ABLMediaServer.ini 里面的配置参数,如果参数值不填就设置空,不是空格 
											mediaServerID = ABLMediaServer_00001
											secret = 035c73f7-bb6b-4889-a715-d9eb2d1925cc
											localipAddress = 
											maxTimeNoOneWatch = 9999999
											recordPath =  
											picturePath =  
											maxSameTimeSnap = 16
											snapOutPictureWidth = 0
											snapOutPictureHeight = 0
											snapObjectDestroy = 1
											snapObjectDuration = 120
											captureReplayType = 1
											pictureMaxCount = 30
											pushEnable_mp4 = 0
											fileSecond = 300
											videoFileFormat = 1
											fileKeepMaxTime = 3
											httpDownloadSpeed = 6
											fileRepeat = 0
											H265ConvertH264_enable = 0
											H265DecodeCpuGpuType = 0
											H264DecodeEncode_enable = 0
											filterVideo_enable = 0
											filterVideo_text = ABL水印测试123
											FilterFontSize = 30
											FilterFontColor = red
											FilterFontLeft = 5
											FilterFontTop = 5
											FilterFontAlpha = 0.6
											convertOutWidth = 720
											convertOutHeight = 480
											convertMaxObject = 26
											convertOutBitrate = 1024
											hook_enable = 0
											noneReaderDuration = 15
											on_server_started = http://10.0.0.238:4088/index/hook/on_server_started
											on_server_keepalive = http://10.0.0.238:4088/index/hook/on_server_keepalive
											on_stream_arrive = http://10.0.0.238:4088/index/hook/on_stream_arrive
											on_stream_not_arrive = http://10.0.0.238:4088/index/hook/on_stream_not_arrive
											on_stream_none_reader = http://10.0.0.238:4088/index/hook/on_stream_none_reader
											on_stream_disconnect = http://10.0.0.238:4088/index/hook/on_stream_disconnect
											on_stream_not_found = 
											on_record_mp4 = http://10.0.0.238:4088/index/hook/on_record_mp4
											on_delete_record_mp4 = http://10.0.0.238:4088/index/hook/on_delete_record_mp4
											on_record_progress = http://10.0.0.238:4088/index/hook/on_record_progress
											on_record_ts = http://10.0.0.238:4088/index/hook/on_record_ts
											httpServerPort = 7088
											rtspPort = 554
											rtmpPort = 1935
											httpMp4Port = 5088
											wsFlvPort = 6088
											httpFlvPort = 8088
											ps_tsRecvPort = 10000
											hls_enable = 0
											hlsPort = 9088
											hlsCutTime = 3
											hlsCutType = 2
											h265CutType = 1
											enable_audio = 1
											G711ConvertAAC = 0
											IOContentNumber = 16
											ThreadCountOfIOContent = 8
											RecvThreadCount = 128
											SendThreadCount = 128
											RecordReplayThread = 32
											GB28181RtpTCPHeadType = 2
											ReConnectingCount = 40320
											MaxDiconnectTimeoutSecond = 36
											ForceSendingIFrame = 1				                               
			value            参数值         详见 ABLMediaServer.ini 的参数值及参数值说明
			
		 http  GET 方式 
		  比如:
			 打开保存国标PS标志
			   http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveGB28181Rtp&value=1
			 关闭存国标PS标志
			   http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveGB28181Rtp&value=0
	
			 打开保存代理拉rtsp流标志
			   http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveProxyRtspRtp&value=1
			 关闭保存代理拉rtsp流标志
			   http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveProxyRtspRtp&value=0

    24)安全停止服务器 
		 URL: /index/api/shutdownServer
		 
		 功能:
			 安全停止服务器,如果服务器正在录像、抓拍等等操作,需要调用该函数安全停止服务器,这样录制的mp4才能正常播放

		 参数:              参数说明     参数参考值
			secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc        【必填参数】
			  
         http  GET 方式 
           http://127.0.0.1:7088/index/api/shutdownServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
		   
		http  POST 方式 
		   http URL 
			 http://127.0.0.1:7088/index/api/shutdownServer
			 
		   http Body 参数 json 格式
			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
			 
		 返回Body:
			{
				"code": 0,
				"memo": "ABLMediaServer shutdown Successed !"
			}	
			
    25)重新启动服务器
		 URL: /index/api/restartServer
		 
		 功能:
			 安全重启服务器,如果服务器正在录像、抓拍等等操作,需要调用该函数安全重启服务器,这样录制的mp4才能正常播放

		 参数:              参数说明     参数参考值
			secret           服务器密码   比如 035c73f7-bb6b-4889-a715-d9eb2d1925cc        【必填参数】
			  
         http  GET 方式 
           http://127.0.0.1:7088/index/api/restartServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
		   
		http  POST 方式 
		   http URL 
			 http://127.0.0.1:7088/index/api/restartServer
			 
		   http Body 参数 json 格式
			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
			 
		 返回Body:
			{
				"code": 0,
				"memo": "ABLMediaServer restartServer Successed ! "
			}	

			
	26) 为了方便某些特殊场合,服务器支持udp的10000 端口接入国标PS码流,就是人们常说的单端口模式,url的命名规则为 /rtp/ssrc ,其中ssrc为下级rtp打包
	     的16进制的值转换为大小的字符串,即可sprintf(url,"rtp/%X",ssrc) ,具体接入的url名字可以调用 getMediaList 查询出接入的国标流 。需要注意的是 
		 下级 rtp 打包时每路视频的rtp中的ssrc不能相同。
		 
		  
    27) 网络类型的对照表
      1 媒体输入网络类型对照表 
	  
	      整形值     代表意义
          21         以rtmp方式推送接入流媒体服务器
		  23         以rtsp方式推送接入流媒体服务器
		  30         服务器以rtsp方式主动拉流接入
		  31         服务器以rtmp方式主动拉流接入  
		  32         服务器以flv方式主动拉流接入
		  33         服务器以hls方式主动拉流接入
		  50         代理拉流接入服务器  
		  60         服务器以国标28181的UDP方式接入
		  61         服务器以国标28181的TCP方式接入
		  
          80         服务器录像文件点播以读取fmp4文件输入
		  81         服务器录像文件点播以读取TS文件输入
		  82         服务器录像文件点播以读取PS文件输入
		  83         服务器录像文件点播以读取FLV文件输入

	  2 媒体输出网络类型对照表 	  
	     整形值     代表意义
	      22         服务器以rtsp被动方式往外发送码流 ,即常见的vlc点播 
		  24         服务器以rtmp被动方式往外发送码流 ,即常见的vlc点播 
		  25         服务器以flv被动方式往外发送码流 ,即常见的vlc点播 、浏览器播放 
		  26         服务器以hls被动方式往外发送码流 ,即常见的vlc点播 、浏览器播放 
          27         服务器以ws-flv被动方式往外发送码流 ,EasyPlayer.js插件播放、浏览器播放 
		  28         服务器以http-mp4被动方式往外发送码流 ,即常见的vlc点播 、浏览器播放 
		  
		  40         服务器以rtsp主动方式往外发送码流 ,即常见的rtsp推流
		  41         服务器以rtmp主动方式往外发送码流 ,即常见的rtmp推流
		  65         服务器以国标GB28181主动UDP方式往外发送码流 ,即常见的国标以UDP方式往上级推流
		  66         服务器以国标GB28181主动TCP方式往外发送码流 ,即常见的国标以TCP方式往上级推流
木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

ABLMediaServer高性能流媒体服务器,windows平台采用高性能的完成端口网络模型、Linux下采用epoll,加上线程池进行媒体数据 展开 收起
MulanPSL-2.0
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/yunshiting/ABLMediaServer.git
git@gitee.com:yunshiting/ABLMediaServer.git
yunshiting
ABLMediaServer
ABLMediaServer
master

搜索帮助