JavaCV的摄像头实战之七:推流(带声音)

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.DataLine;

import javax.sound.sampled.TargetDataLine;

import java.nio.ByteBuffer;

import java.nio.ByteOrder;

import java.nio.ShortBuffer;

import java.util.concurrent.ScheduledThreadPoolExecutor;

import java.util.concurrent.TimeUnit;

/**

  • @author willzhao

  • @version 1.0

  • @description 音频相关的服务

  • @date 2021/12/3 8:09

*/

@Slf4j

public class AudioService {

// 采样率

private final static int SAMPLE_RATE = 44100;

// 音频通道数,2表示立体声

private final static int CHANNEL_NUM = 2;

// 帧录制器

private FFmpegFrameRecorder recorder;

// 定时器

private ScheduledThreadPoolExecutor sampleTask;

// 目标数据线,音频数据从这里获取

private TargetDataLine line;

// 该数组用于保存从数据线中取得的音频数据

byte[] audioBytes;

// 定时任务的线程中会读此变量,而改变此变量的值是在主线程中,因此要用volatile保持可见性

private volatile boolean isFinish = false;

/**

  • 帧录制器的音频参数设置

  • @param recorder

  • @throws Exception

*/

public void setRecorderParams(FrameRecorder recorder) throws Exception {

this.recorder = (FFmpegFrameRecorder)recorder;

// 码率恒定

recorder.setAudioOption(“crf”, “0”);

// 最高音质

recorder.setAudioQuality(0);

// 192 Kbps

recorder.setAudioBitrate(192000);

// 采样率

recorder.setSampleRate(SAMPLE_RATE);

// 立体声

recorder.setAudioChannels

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值