java执行ffmpeg推流几秒钟后中断

代码片段

String command = "";
command += "ffmpeg -rtsp_transport tcp"; // ffmpeg开头,-re代表按照帧率发送,在推流时必须有
command += " -i \"" + id + "\""; // 指定要推送的视频
command += " -q 0 -f mpegts -codec:v mpeg1video -s 700x400 " + fileName; // 指定推送服务器,-f:指定格式   1280  720
//linux 改成这样执行,不然没有效果
//exec = Runtime.getRuntime().exec(new String[]{"sh","-c",cmd});

process = Runtime.getRuntime().exec(command);
//必须加上这两个,不然推流会停止
new Thread(new DealProcessStream(process.getInputStream())).start();
new Thread(new DealProcessStream(process.getErrorStream())).start();

logger.info("开启ffmpeg进程耗时:{}毫秒,token={}", (System.currentTimeMillis() - startTime), token);
process.waitFor();

原因: 必须要加入一下代码

new Thread(new DealProcessStream(process.getInputStream())).start();
new Thread(new DealProcessStream(process.getErrorStream())).start();

java执行ffmpeg推流几秒钟后中断_第1张图片

java执行ffmpeg推流几秒钟后中断_第2张图片

参考文章
https://www.cnblogs.com/MacrossFT/p/12038479.html

你可能感兴趣的:(音视频,java,网络协议,tcp/ip)