小黄花778 2023-06-01 10:43 采纳率: 100%
浏览 103
已结题

在使用ffmpeg推流过程中,几分钟或者十几分钟后时间不固定,会断掉报错av_interleaved_write_frame(): Broken pipe。

在使用ffmpeg推流过程中,几分钟或者十几分钟后时间不固定,会断掉报错av_interleaved_write_frame(): Broken pipe。流媒体服务器用的是srs,部署在Linux系统。

报错的日志:

img

Java代码:

 @Async("taskExecutor")
    public void plugFlow(String rtspUrl,String myStream) {
        Logger log = LoggerFactory.getLogger(MonitorVideo.class);
        BufferedReader br = null;
        try {
            String basePath = "/usr/local/ffmpeg/bin/ffmpeg ";
            String command = basePath +
                    "-i " + rtspUrl +" "+
                    "-c copy -f flv " +
                    "rtmp://127.0.0.1/live/"+myStream;
            log.info("【command】:{}",command);
            log.info("rtmp://127.0.0.1/live/"+myStream);
            Process process = Runtime.getRuntime().exec(command);
            br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String line = null;
            while ((line = br.readLine()) != null) {
                log.info("视频推流信息{}", line);
            }
        } catch (Exception e) {
            log.error("ffmpeg推流失败:",e);
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    log.error("RequestUtil,IOException:",e);
                }
            }
        }
    }

  • 写回答

4条回答 默认 最新

  • 阳光宅男xxb 2023-06-07 07:40
    关注

    Java程序中使用Runtime.getRuntime().exec()推FFmpeg流的话,输入流和错误流会不断有流进入存储在JVM的缓冲区中,如果缓冲区的流不被读取被填满时,就会造成runtime的阻塞。解决方法就是单独两个线程,分别处理process的getInputStream()和getErrorSteam(),防止缓冲区被撑满,导致阻塞。
    具体的代码,你可以参考下这个:https://www.codenong.com/cs109200577/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 赞助了问题酬金15元 6月1日
  • 创建了问题 6月1日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表