java - MediaPlayer 是否仅播放具有比特率模式的 mp3 文件:变量?
问题描述
我正在构建一个 mp3 播放器应用程序,某些 mp3 文件无法播放。每次播放时都是相同的 mp3 文件。没有错误被抛出,当我点击播放它们时,一切正常,就好像音频即将播放一样,但是没有音频出来,就像歌曲冻结一样。
使用 MediaInfo 工具(来自 mac 应用商店),我比较了 2 个有效的文件和 2 个无效的文件,并对结果进行了截图。(红色表示字段值不同,黑色表示相同)
左边的 2 是有效的,右边的 2 是无效的。我能看到的唯一区别是导致问题的歌曲具有比特率模式:恒定。这可能是导致问题的原因吗?如果是这样,有没有办法使用java找到音频文件比特率模式?以及如何将其从常量更改为变量?
尽管我认为没有必要,因为我所有其他歌曲都可以,但我将在下面发布一些代码。
String songPath = "";
Media mediaFile = MediaHandler.strToMedia(songPath);
MediaHandler.newSong(mediaFile);
MediaHandler.playSong();
MediaHandler 类:
public class MediaHandler {
private static MediaPlayer player;
private static Media media;
public static MediaPlayer getPlayer(){
return player;
}
public static Media strToMedia(String songPath) {
File song = new File(songPath);
return new Media(song.toURI().toString());
}
public static void newSong(Media mediaFile) {
if (player != null){
player.stop();
}
MediaHandler.media = mediaFile;
newPlayer();
}
private static void newPlayer() {
player = new MediaPlayer(media);
}
public static void playSong() {
player.play();
}
}
解决方案
有没有办法使用java找到音频文件比特率模式?
您可以使用MediaInfo图形界面来发现问题,也可以使用其命令行界面(从 Java 调用命令行)或其库 (DyLib) 界面(从 Java 调用 API)。
从MediaInfo macOS 版本中获取命令行接口或 DyLib 接口,然后调用命令行或获取 Java 和 MediaInfo 之间的“胶水” +实现对 MediaInfo 的 Java 调用。
推荐阅读
- node.js - For循环不等待等待
- python - 使用 add_indicator 或 add_if_then 的时间优先级和负载约束
- ssl - VBScript 中的 MSXML2.ServerXMLHTTP.6.0 对象 - SSL 证书链信任问题
- swift - 为什么 MKPolyline 在用户绘图时滞后?
- ios - 我想对我的应用程序使用分页。我有一个这样的 API:
- bash - 如何在 MacOS 中使用 bash 打开和关闭应用程序
- mongodb - 如何按mongodb中的值数组排序
- css - ion-item / ion-native 背景颜色
- reactjs - React:要重用的材料 ui 样式按钮不适应样式
- go - 如何处理长时间运行的服务器响应和将其视为停止连接的负载均衡器