我正在以编程方式删除/编辑.mp3音频文件的部分。一个示例场景是在3分钟(0:00-3:00)的音频文件中从1:00-2:00静音/删除音频。在这种情况下,我们是否有任何有用的库?
我知道如何使用Javax Sound API(包:javax.sound
)为.wav音频文件实现此功能,但看来该API不支持.mp3文件
如果我使用.wav,这就是我想从技术上实现的方式
AudioInputStream read()
方法将音频文件转换为原始音频数据(byte[]
)audioInputStream.getFrameLength()
和audioInputStream.getFrameRate()
API)audioInputStream.getFrameLength()
和audioInputStream.getFrameRate()
API)AudioInputStream
-AudioSystem.getAudioInputStream(ByteArrayInputStream)
引用资料
AudioInputStream
AudioSystem
最佳答案
就.wav文件而言,我认为您处于正确的轨道。
帧到时间的转换取决于采样率。例如,44100 fps的放置时间为0.5 =帧位置22050。原始数据可能每帧包含多个字节。 16位编码当然是2个字节,立体声16位是每帧4个字节。
在进行处理之前,通常有必要将字节数据与带符号的PCM浮点数(从-1到1)进行转换。
要使用mp3文件,必须首先解压缩文件,进行编辑,然后再压缩回mp3。可以在以下位置的git hub上找到用于mp3编码/解码的库:pdudits/soundlibs很大程度上取决于声音文件在压缩之前的格式。
我不知道从这些工具获取.mp3文件的PCM帧的具体细节。我记得在将数据发送到回放输出之前,必须对JORBIS中的代码进行修改以拦截数据。如果您必须经历类似的事情才能让JLayer为您工作,我不会感到惊讶。
关于java - 是否有Java库可以通过编程方式删除.mp3音频文件的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58943416/