diff --git a/loadCmd.properties b/loadCmd.properties index f993549..730203c 100644 --- a/loadCmd.properties +++ b/loadCmd.properties @@ -1,10 +1,13 @@ #推流地址(eg:阿里云地址) pushUrl=rtmp://192.168.10.101:19350/rlive/stream_12?sign=LeL5Wchx +#多路推流 +pushUrlMap=tee "[f=flv]rtmp://192.168.10.101:19350/rlive/stream_12?sign=LeL5Wchx | [f=flv]rtmp://192.168.10.101:19350/rlive/stream_17?sign=64FIaU8X" pushUrl2=rtmp://192.168.10.101:19350/rlive/stream_17?sign=64FIaU8X #拉流地址(eg:吊舱拉流的地址) playUrl=http://192.168.10.101:18000/flv/live/34020000001110000001_34020000001320000099_0200000099.flv -#固定通道 1 获取通道 2 -type=1 +#固定通道 1 获取通道 2 多线程双路 3 单线程多路 4 +type=4 mqttUrl=tcp://106.15.120.154 mqttTopic=/v1/123987/rtmp/live +time=60000 \ No newline at end of file diff --git a/src/main/java/com/github/bluesbruce/spring/config/CmdParam.java b/src/main/java/com/github/bluesbruce/spring/config/CmdParam.java index dd43f72..c9b27a1 100644 --- a/src/main/java/com/github/bluesbruce/spring/config/CmdParam.java +++ b/src/main/java/com/github/bluesbruce/spring/config/CmdParam.java @@ -2,12 +2,31 @@ package com.github.bluesbruce.spring.config; public class CmdParam { private String pushUrl;// + private String pushUrlMap;// private String pushUrl2;// private String playUrl;// private int type;//1 鍥哄畾閫氶亾 2 閫氶亾鏈嶅姟 String mqttUrl; + int time; + + public int getTime() { + return time; + } + + public void setTime(int time) { + this.time = time; + } + private String mqttTopic; + public String getPushUrlMap() { + return pushUrlMap; + } + + public void setPushUrlMap(String pushUrlMap) { + this.pushUrlMap = pushUrlMap; + } + public String getPushUrl2() { return pushUrl2; } diff --git a/src/main/java/com/github/bluesbruce/spring/mqttService/send/MqttProviderConfig.java b/src/main/java/com/github/bluesbruce/spring/mqttService/send/MqttProviderConfig.java index afb31aa..4bb2ab4 100644 --- a/src/main/java/com/github/bluesbruce/spring/mqttService/send/MqttProviderConfig.java +++ b/src/main/java/com/github/bluesbruce/spring/mqttService/send/MqttProviderConfig.java @@ -28,7 +28,7 @@ public class MqttProviderConfig { */ @PostConstruct public void init(){ - //connect(); + connect(); } /** @@ -44,7 +44,7 @@ public class MqttProviderConfig { //璁剧疆涓簍rue琛ㄧず姣忔杩炴帴鏈嶅姟鍣ㄩ兘鏄互鏂扮殑韬唤 options.setCleanSession(true); //璁剧疆杩炴帴鐢ㄦ埛鍚 - options.setUserName(""); + options.setUserName("ffmpge"); //璁剧疆杩炴帴瀵嗙爜 options.setPassword("".toCharArray()); //璁剧疆瓒呮椂鏃堕棿锛屽崟浣嶄负绉 diff --git a/src/main/java/com/github/bluesbruce/spring/service/FFrtmpServer.java b/src/main/java/com/github/bluesbruce/spring/service/FFrtmpServer.java index c46c744..428fccc 100644 --- a/src/main/java/com/github/bluesbruce/spring/service/FFrtmpServer.java +++ b/src/main/java/com/github/bluesbruce/spring/service/FFrtmpServer.java @@ -22,25 +22,37 @@ public class FFrtmpServer implements ApplicationRunner { @Override public void run(ApplicationArguments args) { try { - CommandManager manager = new CommandManagerImpl(); + /*CommandManager manager = new CommandManagerImpl(); // -rtsp_transport tcp //娴嬭瘯澶氫釜浠讳綍鍚屾椂鎵ц鍜屽仠姝㈡儏鍐 //false琛ㄧず浣跨敤閰嶇疆鏂囦欢涓殑ffmpeg璺緞锛宼rue琛ㄧず鏈潯鍛戒护宸茬粡鍖呭惈ffmpeg鎵鍦ㄧ殑瀹屾暣璺緞 //manager.start("tomcat", "ffmpeg -i http://192.168.10.101:18000/flv/live/34020000001110000002_34020000001320000071_0200000071.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.10.101:19350/rlive/stream_9?sign=f8a15b6n",false); //manager.start("tomcat", "ffmpeg -i rtsp://192.168.144.25:554/stream=0 -vcodec copy -acodec copy -f flv -y rtmp://221.226.114.142:19350/rlive/stream_9?sign=f8a15b6n",false); //manager.start("tomcat1", "ffmpeg -i rtsp://192.168.144.25:554/stream=0 -vcodec copy -acodec copy -f flv -y rtmp://221.226.114.142:19350/rlive/stream_11?sign=rHtBg3sz",false); - manager.start("test1", CommandBuidlerFactory.createBuidler() - .add("ffmpeg").add("-i",cmdParam.getPlayUrl()) - .add("-rtsp_transport","tcp") - .add("-vcodec","copy") - .add("-acodec","copy") - .add("-f","flv") - .add("-b:v", "2M") - .add("-maxrate", "2M") - .add("-bufsize", "1M") - .add("-y").add(cmdParam.getPushUrl())); - Thread.sleep(10000); - manager.start("test2", CommandBuidlerFactory.createBuidler() + if (cmdParam.getType()==1) { + manager.start("test0", CommandBuidlerFactory.createBuidler() + .add("ffmpeg").add("-i", cmdParam.getPlayUrl()) + .add("-rtsp_transport","tcp") + .add("-vcodec","copy") + .add("-acodec","copy") + .add("-f","flv") + .add("-b:v", "2M") + .add("-maxrate", "2M") + .add("-bufsize", "1M") + .add("-y").add(cmdParam.getPushUrl())); + }else if (cmdParam.getType()==3) { + manager.start("test1", CommandBuidlerFactory.createBuidler() + .add("ffmpeg").add("-i", cmdParam.getPlayUrl()) + .add("-rtsp_transport","tcp") + .add("-vcodec","copy") + .add("-acodec","copy") + .add("-f","flv") + .add("-b:v", "2M") + .add("-maxrate", "2M") + .add("-bufsize", "1M") + .add("-y").add(cmdParam.getPushUrl())); + Thread.sleep(5000); + manager.start("test2", CommandBuidlerFactory.createBuidler() .add("ffmpeg").add("-i",cmdParam.getPlayUrl()) .add("-rtsp_transport","tcp") .add("-vcodec","copy") @@ -50,9 +62,23 @@ public class FFrtmpServer implements ApplicationRunner { .add("-maxrate", "2M") .add("-bufsize", "1M") .add("-y").add(cmdParam.getPushUrl2())); - Thread.sleep(300000); + }else if (cmdParam.getType()==4){ + //鍗曡繘绋 澶氳矾 + manager.start("test4", CommandBuidlerFactory.createBuidler() + .add("ffmpeg").add("-i", cmdParam.getPlayUrl()) + .add("-rtsp_transport", "tcp") + .add("-vcodec", "copy") + .add("-acodec", "copy") + .add("-b:v", "2M") + .add("-maxrate", "2M") + .add("-bufsize", "1M") + //澶氳矾鎺ㄦ祦娴嬭瘯 + .add("-map", "0") + .add("-f").add(cmdParam.getPushUrlMap())); + } + Thread.sleep(cmdParam.getTime()); // 鍋滄鍏ㄩ儴浠诲姟 - manager.stopAll(); + manager.stopAll();*/ }catch (Exception e){ log.error("",e); } diff --git a/src/main/java/com/github/bluesbruce/spring/service/RtmpLiveService.java b/src/main/java/com/github/bluesbruce/spring/service/RtmpLiveService.java index 29eae76..705fc87 100644 --- a/src/main/java/com/github/bluesbruce/spring/service/RtmpLiveService.java +++ b/src/main/java/com/github/bluesbruce/spring/service/RtmpLiveService.java @@ -42,7 +42,7 @@ public class RtmpLiveService { log.info(infoList.toString()); if (infoList.size()>0){ jsonObject.put("code", -1); - jsonObject.put("msg", "鎺ㄦ祦鏈嶅姟宸插惎鍔"); //鎺ㄦ祦澶辫触 + jsonObject.put("msg", "鎺ㄦ祦鏈嶅姟宸插惎鍔紝璇峰嬁閲嶅鍚姩"); //鎺ㄦ祦澶辫触 mqttProviderConfig.publish(2,false,reTopic,jsonObject.toJSONString()); return; } @@ -52,6 +52,7 @@ public class RtmpLiveService { //TODO 鑾峰彇閫氶亾鏈嶅姟鎺ㄦ媺娴佸湴鍧 JSONObject object = getChenl(); if (!ObjectUtils.isEmpty(object)){ + code = object.get("code").toString(); object.put("code", 0); object.put("msg", "鑾峰彇閫氶亾鎴愬姛"); mqttProviderConfig.publish(2,false,reTopic,object.toJSONString());