将base64字符串转换为字节数组并以mp3文件格式保存在java中
我在Linux上编写MP3文件时遇到问题。以下是我的情况: 我有一条通过JMS传递的XML消息。XML有一个元素,该元素是表示MP3音频文件的Base64编码字符串。在将XML编组到对象时,我使用JIBX。然后,JIBX将Base64编码字符串转换为字节[]。一、 然后,使用commons io项目中的FileUtils将字节[]写入文件系统将base64字符串转换为字节数组并以mp3文件格式保存在java中,java,xml,file,audio,base64,Java,Xml,File,Audio,Base64,我在Linux上编写MP3文件时遇到问题。以下是我的情况: 我有一条通过JMS传递的XML消息。XML有一个元素,该元素是表示MP3音频文件的Base64编码字符串。在将XML编组到对象时,我使用JIBX。然后,JIBX将Base64编码字符串转换为字节[]。一、 然后,使用commons io项目中的FileUtils将字节[]写入文件系统 void writeMP3File(final byte[] data, final String filePath) throws IOExceptio
void writeMP3File(final byte[] data, final String filePath) throws IOException {
final File mp3File = new File(basePath + IOUtils.DIR_SEPARATOR + filePath);
mp3File.getParentFile().mkdirs(); // Ensure any parent directories are created
FileUtils.writeByteArrayToFile(mp3File, data);
}
当我稍后尝试播放该文件时,MP3播放器将不会播放该文件。此外,当我转到文件系统并查看文件时,我得到:
>文件TestFile1.mp3TestFile1.mp3:ASCII文本,不带行终止符 我还尝试使用FileOutputStream编写文件;同样的结果也会发生。如何将字节[]写入文件并设置MPEG的文件类型。因此,我想在文件系统上看到的是: >文件TestFile1.mp3
TestFile1.mp3:MPEG-ADTS,第三层,v2.5,8kbits,8khz,单声道
我从未使用过这些技术,但是。我会说,拿一个已知的MP3文件,把它的内容作为纯文本。然后通过上面的系统发送一份副本,并将其输出与原件进行比较。看看这些技术是否有任何差异。如果我能得到原始文件的副本,我会这样做。然后,尝试将输出文件与MP3文件格式进行比较?终于解决了问题。原始发送者使用ApacheCommons编解码器Base64对MP3 Base64进行编码。然后将他们的JIBX设置设置为Base64对已经Base64编码的数据进行编码。双基64进位。仅供参考,任何遇到这个问题的人:1。使用JIBX并设置type=“byte[]”时,JIBX将自动将数据转换为Base64。2.使用FileOutputStream,您可以确保数据采用正确的文件格式。4.有一个“base64”命令是GNU核心UTIL的一部分,它将帮助验证编码是否正确。