Browse Source

ffmpeg工具固定通道版本

master
wangwei 11 months ago
parent
commit
82605691e6
5 changed files with 69 additions and 20 deletions
  1. +5
    -2
      loadCmd.properties
  2. +19
    -0
      src/main/java/com/github/bluesbruce/spring/config/CmdParam.java
  3. +2
    -2
      src/main/java/com/github/bluesbruce/spring/mqttService/send/MqttProviderConfig.java
  4. +41
    -15
      src/main/java/com/github/bluesbruce/spring/service/FFrtmpServer.java
  5. +2
    -1
      src/main/java/com/github/bluesbruce/spring/service/RtmpLiveService.java

+ 5
- 2
loadCmd.properties View File

@@ -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

+ 19
- 0
src/main/java/com/github/bluesbruce/spring/config/CmdParam.java View File

@@ -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;
}

+ 2
- 2
src/main/java/com/github/bluesbruce/spring/mqttService/send/MqttProviderConfig.java View File

@@ -28,7 +28,7 @@ public class MqttProviderConfig {
*/
@PostConstruct
public void init(){
//connect();
connect();
}

/**
@@ -44,7 +44,7 @@ public class MqttProviderConfig {
//设置为true表示每次连接服务器都是以新的身份
options.setCleanSession(true);
//设置连接用户名
options.setUserName("");
options.setUserName("ffmpge");
//设置连接密码
options.setPassword("".toCharArray());
//设置超时时间,单位为秒

+ 41
- 15
src/main/java/com/github/bluesbruce/spring/service/FFrtmpServer.java View File

@@ -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路径,true表示本条命令已经包含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);
}

+ 2
- 1
src/main/java/com/github/bluesbruce/spring/service/RtmpLiveService.java View File

@@ -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());

Loading…
Cancel
Save