diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java index 413381c4..747eff40 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java @@ -102,4 +102,7 @@ public class ParentPlatform { @Schema(description = "是否使用自定义业务分组") private Boolean customCatalog; + + @Schema(description = "是否自动推送通道变化") + private Boolean autoPushChannel; } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java index 287b5177..53fd71b3 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java @@ -146,9 +146,9 @@ public interface CommonGBChannelMapper { int update(CommonGBChannel commonGBChannel); @Update(value = {" "}) int updateStatusById(@Param("gbId") int gbId, @Param("status") int status); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java index cedd0f0a..d9cbe1b9 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java @@ -108,7 +108,7 @@ public class ChannelProvider { sqlBuild.append(getBaseSelectSql()); sqlBuild.append("where gb_status=#{status} and id in ( "); - List commonGBChannelList = (List)params.get("ids"); + List commonGBChannelList = (List)params.get("commonGBChannelList"); boolean first = true; for (CommonGBChannel channel : commonGBChannelList) { if (!first) { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java index 2d5783c6..865b44e6 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java @@ -315,7 +315,7 @@ public class PlatformServiceImpl implements IPlatformService { }, (parentPlatform.getKeepTimeout())*1000); } - if (parentPlatform.isAutoPushChannel()) { + if (parentPlatform.getAutoPushChannel() != null && parentPlatform.getAutoPushChannel()) { if (subscribeHolder.getCatalogSubscribe(parentPlatform.getServerGBId()) == null) { log.info("[国标级联]:{}, 添加自动通道推送模拟订阅信息", parentPlatform.getServerGBId()); addSimulatedSubscribeInfo(parentPlatform); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java index 0f505ea4..db6f856b 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java @@ -197,7 +197,8 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme } catch (SipException | InvalidArgumentException | ParseException e) { log.error("未处理的异常 ", e); } - if (subscribeHolder.getCatalogSubscribe(platformId) == null && platform.isAutoPushChannel()) { + if (subscribeHolder.getCatalogSubscribe(platformId) == null + && platform.getAutoPushChannel() != null && platform.getAutoPushChannel()) { platformService.addSimulatedSubscribeInfo(platform); } } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java index 86d36228..714f4ca2 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java @@ -692,7 +692,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @Override public void addPushListItem(String app, String stream, MediaArrivalEvent event) { String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream; - redisTemplate.opsForValue().set(key, event.getHookParam()); + redisTemplate.opsForValue().set(key, event); } @Override diff --git a/src/main/java/com/genersoft/iot/vmp/streamPush/bean/StreamPush.java b/src/main/java/com/genersoft/iot/vmp/streamPush/bean/StreamPush.java index 86036a05..95b85662 100755 --- a/src/main/java/com/genersoft/iot/vmp/streamPush/bean/StreamPush.java +++ b/src/main/java/com/genersoft/iot/vmp/streamPush/bean/StreamPush.java @@ -74,7 +74,7 @@ public class StreamPush extends CommonGBChannel implements Comparable redisTemplate; - @Autowired private RedisPushStreamResponseListener redisPushStreamResponseListener; - @Autowired - private SendRtpPortManager sendRtpPortManager; - @Override public void start(Integer id, ErrorCallback callback, String platformDeviceId, String platformName ) { StreamPush streamPush = streamPushMapper.queryOne(id); @@ -76,7 +64,7 @@ public class StreamPushPlayServiceImpl implements IStreamPushPlayService { streamPush.getApp(), streamPush.getStream(), null, callId)); return; } - Assert.isTrue(streamPush.isAutoPushChannel(), "通道未推流"); + Assert.isTrue(streamPush.isStartOfflinePush(), "通道未推流"); // 发送redis消息以使设备上线,流上线后被 log.info("[ app={}, stream={} ]通道未推流,发送redis信息控制设备开始推流", streamPush.getApp(), streamPush.getStream()); MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(1, diff --git a/web_src/src/components/StreamPushList.vue b/web_src/src/components/StreamPushList.vue index d8d32835..cc0830a4 100755 --- a/web_src/src/components/StreamPushList.vue +++ b/web_src/src/components/StreamPushList.vue @@ -197,7 +197,7 @@ export default { method: 'get', url: '/api/push/start', params: { - id: id + id: row.id } }).then(function (res) { that.getListLoading = false; diff --git a/打包/config/config.ini b/打包/config/config.ini old mode 100755 new mode 100644 index cbfc0301..18b5faca --- a/打包/config/config.ini +++ b/打包/config/config.ini @@ -3,6 +3,7 @@ [api] apiDebug=1 defaultSnap=./www/logo.png +downloadRoot=./www secret=034523TF8yT83wh5Wvz73f7 snapRoot=./www/snap/ @@ -14,9 +15,10 @@ timeout_sec=15 [ffmpeg] bin=/usr/bin/ffmpeg cmd=%s -re -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s +cmd2=%s -rtsp_transport tcp -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f rtsp %s log=./ffmpeg/ffmpeg.log restart_sec=0 -snap=%s -i %s -y -f mjpeg -t 0.001 %s +snap=%s -rtsp_transport tcp -i %s -y -f mjpeg -frames:v 1 %s [general] check_nvidia_dev=1 @@ -24,10 +26,10 @@ enableVhost=0 enable_ffmpeg_log=0 flowThreshold=1024 maxStreamWaitMS=15000 -mediaServerId=GQ3TF8yT83wh5Wvz +mediaServerId=XwFtVZrtZbHJq4UV mergeWriteMS=0 resetWhenRePlay=1 -streamNoneReaderDelayMS=15000 +streamNoneReaderDelayMS=20000 unready_frame_cache=100 wait_add_track_ms=3000 wait_track_ready_ms=10000 @@ -35,26 +37,28 @@ wait_track_ready_ms=10000 [hls] broadcastRecordTs=0 deleteDelaySec=10 +fastRegister=0 fileBufSize=65536 +segDelay=0 segDur=2 segKeep=0 segNum=3 segRetain=5 [hook] -admin_params=secret=034523TF8yT83wh5Wvz73f7 -alive_interval=30.000000 +alive_interval=10.0 enable=1 on_flow_report= on_http_access= on_play=http://192.168.1.3:18082/index/hook/on_play on_publish=http://192.168.1.3:18082/index/hook/on_publish -on_record_mp4= +on_record_mp4=http://192.168.1.3:18082/index/hook/on_record_mp4 on_record_ts= on_rtp_server_timeout=http://192.168.1.3:18082/index/hook/on_rtp_server_timeout on_rtsp_auth= on_rtsp_realm= on_send_rtp_stopped=http://192.168.1.3:18082/index/hook/on_send_rtp_stopped +on_server_exited= on_server_keepalive=http://192.168.1.3:18082/index/hook/on_server_keepalive on_server_started=http://192.168.1.3:18082/index/hook/on_server_started on_shell_login= @@ -63,20 +67,23 @@ on_stream_none_reader=http://192.168.1.3:18082/index/hook/on_stream_none_reader on_stream_not_found=http://192.168.1.3:18082/index/hook/on_stream_not_found retry=1 retry_delay=3.000000 +stream_changed_schemas=rtsp/rtmp/fmp4/ts/hls/hls.fmp4 timeoutSec=20 [http] +allow_cross_domains=1 +allow_ip_range= charSet=utf-8 dirMenu=1 forbidCacheSuffix= forwarded_ip_header= keepAliveSecond=15 maxReqSize=40960 -notFound=404 Not Found

您访问的资源不存在!


ZLMediaKit(git hash:f6cba98/2023-02-06T14:18:21+08:00,branch:master,build time:2023-02-07T10:51:47)
-port=6080 +notFound=404 Not Found

您访问的资源不存在!


ZLMediaKit(git hash:f69f3b3/2023-09-09T10:59:27+08:00,branch:master,build time:2023-09-11T15:03:57)
+port=7082 rootPath=./www sendBufSize=65536 -sslport=16080 +sslport=11443 virtualPath= [multicast] @@ -86,10 +93,12 @@ udpTTL=64 [protocol] add_mute_audio=1 +auto_close=0 continue_push_ms=3000 enable_audio=1 enable_fmp4=1 enable_hls=1 +enable_hls_fmp4=0 enable_mp4=0 enable_rtmp=1 enable_rtsp=1 @@ -97,52 +106,64 @@ enable_ts=1 fmp4_demand=0 hls_demand=0 hls_save_path=./www -modify_stamp=2 +modify_stamp=1 mp4_as_player=0 mp4_max_second=300 mp4_save_path=./www +paced_sender_ms=0 rtmp_demand=0 rtsp_demand=0 ts_demand=0 [record] appName=record +enableFmp4=0 fastStart=0 fileBufSize=65536 fileRepeat=0 sampleMS=500 [rtc] +datachannel_echo=1 externIP=192.168.1.3 -port=8000 -preferredCodecA=PCMA,PCMU,opus,mpeg4-generic +max_bitrate=0 +min_bitrate=0 +port=11340 +preferredCodecA=PCMA,opus,mpeg4-generic preferredCodecV=H264,H265,AV1,VP9,VP8 rembBitRate=0 -tcpPort=8000 +start_bitrate=0 +tcpPort=11340 timeoutSec=15 [rtmp] +directProxy=1 +enhanced=0 handshakeSecond=15 keepAliveSecond=15 -modifyStamp=0 -port=1935 -sslport=19350 +port=11935 +sslport=18350 [rtp] audioMtuSize=600 +h264_stap_a=1 lowLatency=0 rtpMaxSize=10 videoMtuSize=1400 [rtp_proxy] -dumpDir= +aac_pt=101 +dumpDir=./dump +gop_cache=1 h264_pt=98 h265_pt=99 opus_pt=100 -port=10000 -port_range=40000-40500 +port=11000 +port_range=30000-40000 ps_pt=96 +rtp_g711_dur_ms=100 timeoutSec=15 +udp_recv_socket_buffer=4194304 [rtsp] authBasic=0 @@ -150,22 +171,22 @@ directProxy=1 handshakeSecond=15 keepAliveSecond=15 lowLatency=0 -port=10554 -sslport= +port=22554 +rtpTransportType=-1 +sslport=11332 [shell] maxReqSize=1024 -port=9000 +port=9900 [srt] latencyMul=4 pktBufSize=8192 -port=9000 +port=9900 timeoutSec=5 - [transcode] -acodec=pcma +acodec=mpeg4-generic decoder_h264=h264_qsv,h264_videotoolbox,h264_bm,libopenh264 decoder_h265=hevc_qsv,hevc_videotoolbox,hevc_bm enable_ffmpeg_log=0