javacv实时解析pcm音频流
- 解析代码
java
try (ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);){
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputStream);
// PCM S16LE 格式
grabber.setFormat("s16le");
// 采样率
grabber.setSampleRate(16000);
// 声道数
grabber.setAudioChannels(1);
// 音频编码
grabber.setAudioCodecName("pcm_s16le");
grabber.start();
Frame frame;
// 注意每秒帧数等于音视频帧率(默认25),而不是音频采样率16000
while ((frame = grabber.grabFrame()) != null) {
// 处理音频帧
}
}
- 模拟测试
java
File file = new File("C:/test.pcm");
byte[] bytes = Files.readAllBytes(file.toPath());