AudioFileIO 在给出日志警告“没有空间找到另一个帧”后使输入流保持打开状态

问题描述 投票:0回答:0

我正在尝试使用以下代码在 Java 中读取文件音频长度:

return AudioFileIO.read(new File(audio)).getAudioHeader().getTrackLength() * 1000;

这有效并给我(大致)音频文件的长度,但使输入流保持打开状态,这意味着以后我不能删除文件,至少在运行时不能。 这是有问题的,因为我在这里使用临时文件并且需要清除目录。

这是我在控制台中得到的输出:

Mai 06, 2023 10:30:13 PM org.jaudiotagger.tag.id3.AbstractID3v2Frame readIdentifier
WARNING: tmp0.mp3:No space to find another frame:
Mai 06, 2023 10:30:13 PM org.jaudiotagger.tag.id3.ID3v24Tag readFrames
WARNING: tmp0.mp3:Invalid Frame:tmp0.mp3:No space to find another frame
Mai 06, 2023 10:30:13 PM org.jaudiotagger.audio.mp3.MP3File readV2Tag
SEVERE: Could not invoke DirectBuffer method - illegal access`

这是文件元数据,根据(https://www.checkfiletype.com):

File Size   36 kB
File Type   MP3
File Type Extension mp3
MIME Type   audio/mpeg
ID3 Size    45
MPEG Audio Version  2
Audio Layer 3
Audio Bitrate   128 kbps
Sample Rate 24000
Channel Mode    Single Channel
MS Stereo   Off
Intensity Stereo    Off
Copyright Flag  False
Original Media  True
Emphasis    None
Encoder Settings    Lavf58.76.100
Duration    2.30 s (approx)

我似乎无法完全理解导致它发出警告的问题所在。元数据是否有问题?如果是这样,我该怎么做才能解决它?我通过 API 获取 .mp3。 我可以使用不同的课程吗? AudioSystem/AudioInputStream 类也没有工作并抛出错误,说文件类型不受支持。

提前致谢!

java audio mp3 inputstream jaudiotagger
© www.soinside.com 2019 - 2024. All rights reserved.