Skip to content

zhichao281/ABLMediaServer

Repository files navigation

我们的官网 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方式往上级推流