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

在这里插入图片描述

在这里插入图片描述

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值