javacv部署报错No audio output stream (Is audioChannels > 0 and has start() been called?)

javacv部署到windows server 2012 r2时出现了报错No audio output stream (Is audioChannels > 0 and has start() been called?) (For more details, make sure FFmpegLogCallback.set() has been called.),那这个问题如何解决呢?

目录

遇到的问题场景描述

一、原因分析

二、解决代码

1.在代码中添加recorder.setAudioChannels(1);


遇到的问题场景描述

javacv在本地运行时正常,可以正常的录制rtsp,部署到windows server 2012 r2时出现了报错No audio output stream (Is audioChannels > 0 and has start() been called?) (For more details, make sure FFmpegLogCallback.set() has been called.),那这个问题如何解决呢?


一、原因分析

本地运行时,javacv调用默认音频,所以是正常的,部署到服务器上,服务器是没有音频的,所以出现了空指针报错,那就需要指定音频

//按上面日志异常堆栈去跟代码,最后定位这里:
public boolean recordSamples(int sampleRate, int audioChannels, Buffer... samples) throws Exception {
        if (this.audio_st == null) {
            throw new Exception("No audio output stream (Is audioChannels > 0 and has start() been called?)");
        } else if (!this.started) {
            throw new Exception("start() was not called successfully!");
        }

二、解决代码

1.在代码中添加recorder.setAudioChannels(1);

代码如下(示例):

 //2.录制视频/音频
FFmpegFrameRecorder recorder=newFFmpegFrameRecorder(outfile,grabber.getImageWidth(),grabber.getImageHeight());
recorder.setFrameRate(frameRate);// 设置帧率
recorder.setVideoBitrate(grabber.getVideoBitrate());
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);  //压缩方式264
recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
recorder.setFormat("mp4");
//添加此代码解决报错问题,指定音频频道
recorder.setAudioChannels(1);
recorder.start();
添加后重新编译,更新服务器,启动后,就不在报错了,录制正常。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值