我想在Discord语音频道中录制音频,并使用Discord机器人将其保存到文件中。
我收到音频每20毫秒作为pcm编码字节[],我想保存到一个文件。MP3是首选,但我没有其他文件格式的问题,如ogg(它可能更容易)。
我正在使用JDA版本4。阿尔法0_82
我还包括lavaplayer版本1.3。17
用于其他功能。如果这些库是一个很好的库,这将是很有帮助的,但是如果我必须包含更多的库,这是没有问题的。
此问题说明如何将pcm转换为wav。我将不和谐音频复制到列表中
private List<byte[]> rescievedBytes=new ArrayList<>();
@Override
public void handleCombinedAudio(CombinedAudio combinedAudio) {
try {
rescievedBytes.add(combinedAudio.getAudioData(VOLUME));
}catch (OutOfMemoryError e) {
//close connection
}
}
之后,我将
列表
复制到字节[]
中,并创建了wav
文件。
try {
int size=0;
for (byte[] bs : rescievedBytes) {
size+=bs.length;
}
byte[] decodedData=new byte[size];
int i=0;
for (byte[] bs : rescievedBytes) {
for (int j = 0; j < bs.length; j++) {
decodedData[i++]=bs[j];
}
}
getWavFile(getNextFile(), decodedData);
} catch (IOException|OutOfMemoryError e) {
e.printStackTrace();
}
private void getWavFile(File outFile, byte[] decodedData) throws IOException {
AudioFormat format = new AudioFormat(8000, 16, 1, true, false);
AudioSystem.write(new AudioInputStream(new ByteArrayInputStream(
decodedData), format, decodedData.length), AudioFileFormat.Type.WAVE, outFile);
}
如果重新采样的音频变得太大(
OutOfMemoryError
),则会中止转换。
我有一个传递客户端PCM或ADPCM数据的服务器。 我最初决定使用PCM是因为我不想处理编码和解码。 我让PCM工作,但在每一个音频块之间,我听到毛刺。(有点像剪辑) 所以我想原因可能是延迟/高质量的音频和所有这些东西。 所以我决定使用ADPCM来减少数据量。我用JavaScript编写了一个adpcm到pcm解码器。这是个麻烦。我希望,由于数据计数减少了,也许这会阻止小故障(数据将赶上正在播放的
据我所知,html5中没有可用的音频流。即使有音频标签。 也就是说,您必须始终提供一个文件,而不是传递某种音频流。 所以,我们知道最常用的格式是ogg和mp3(不是免费的)。也可以使用wav,但由于其尺寸不常用。 我的问题是,我可以把一个文件假装成一个流,比如说创建wav文件(带有riff头)并指定PCM格式细节(频率、频道、等等),然后将其作为前几个字节传递,然后通过线路发送PCM流(实际上是音
我正在通过电线接收一个交错的16位PCM样本。每个样本都有签名 我把它读作Int16bit数组,让我们调用这个all_data。因此每个数组条目都是一个16位的样本。 因为它是交错的,所以我将它提取成2个通道,R-L-R-L,最后得到2个(16位)数组,大小是ALL_DATA数组的一半。 之后,我查看每个示例,并将其规范化为Float32Array,因为这是web audio API所使用的。 v
本文向大家介绍使用WindowsAPI实现播放PCM音频的方法,包括了使用WindowsAPI实现播放PCM音频的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了使用WindowsAPI实现播放PCM音频的方法,同前面一篇使用WindowsAPI获取录音音频的方法原理具有相似之处,这里就不再详细介绍具体的函数与结构体的参数,相同的部分加以省略,只介绍主要的功能部分代码。如下所示: 1. w
有没有办法截取或只是-读取音频输出在android设备?
如果一些文件是带音频的视频,而一些文件只是音频,是否可以连接多个文件。最终结果应该如下所示: 我认为这一定是可能的,因为我也可以结合一个大的音频文件和一个小的视频与FFMPEG。结果将是一个视频文件,其中最后一帧只是冻结,但音频仍然播放。我想实现相同的结果,要么冻结最后一帧或简单的黑色帧。这可能吗?