关于JMF不能播放MP3的问题解决方法

  • JMF官方下载地址
  • 问题来源
  • 其他人的解决办法
  • 一种可行的解决办法
  • 用JLayer播放MP3
    • 下载地址
    • 示例

JMF官方下载地址

JMF下载地址:JMF 2.1.1e Software Downloads

推荐下载 jmf-2_1_1e-windows-i586.exe

问题来源

本问题来自于中国大学MOOC北京大学唐大仕老师的Java程序设计课程的第11讲 网络、多媒体和数据库编程一章中11.2 多媒体编程的第一个视频。这个视频讲了使用JMF来播放MP3的一段代码。

视频地址:Java程序设计

后面我又看了CSDN上的一篇讲使用JMF来播放MP3的文章:

文章地址:Java 播放MP3

我试着写了以下一段代码:

package pkumooc;import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;/*** @author liuwenchen* @create 2020-07-31 0:00*/public class PlayerMusic {public static void main(String[] args) throws NoPlayerException, MalformedURLException, IOException {File file=new File("C:\\Users\\81228\\Desktop\\vocaloid工程\\以父之名\\以父之名.mp3");Player player= Manager.createPlayer(file.toURI().toURL());player.start();}
}

编译报错:

其他人的解决办法

关于jmf不能播放mp3的问题解决
急救!JMF报错 Unable to handle format: mpeglayer3
JMF Error: Unable to handle format: mpeglayer3

一种可行的解决办法

我把在文章急救!JMF报错 Unable to handle format: mpeglayer3里提到的方法都实践了一遍,还是没办法解决问题。
直到看见了这篇文章:JMF能否扩展支持除WAV外的格式才知道报错原因是JMF本身支持的格式有局限,只能支持wavauaiff这些格式的音频文件,对44.1KHz的MP3不能正常解码。

JMF的sound.jar支持.wav .au .aiff这些格式的音频文件,当然 PCM(Pulse Code Modulation----脉冲编码调制)文件也是可以直接播放的,如果是 .mp3,.ogg,.ape,.flac等格式的音频文件,则需要第三方jar,比如jl1.0.jar、jmp123.jar。

更全面的有关JMF支持格式的官方文档:JMF 2.1.1 - Supported Formats

于是,正确的解决办法就是将mp3转码成wav。这样就能正常播放了。

代码:

package pkumooc;import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;/*** @author liuwenchen* @create 2020-07-31 0:00*/public class PlayerMusic {public static void main(String[] args) throws NoPlayerException, MalformedURLException, IOException {File file=new File("C:\\Users\\81228\\Desktop\\vocaloid工程\\以父之名\\以父之名.wav");Player player= Manager.createPlayer(file.toURI().toURL());player.start();}
}

用JLayer播放MP3

JLayer是一个第三方Java类库,用来解码,转换,播放MP3文件。还有一个面向J2ME平台的JLayerME。

下载地址

官方地址:Download JLayer 1.0.1 (Sources + Binaries + Docs)

另一个可以下载的地址:Download jlayer-1.0.1-1.jar

示例

先导入jar包,IDEA的导入方法参照IntelliJ IDEA 2020.1添加HttpClient类库。

示例代码:

package pkumooc;import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;/*** @author liuwenchen* @create 2020-07-31 13:17*/public class TestJLayer {public static void main(String[] args) {File file = new File("C:\\Users\\81228\\Desktop\\vocaloid工程\\以父之名\\以父之名.mp3");try {Player player=new Player(new FileInputStream(file));player.play();} catch (FileNotFoundException e) {e.printStackTrace();} catch (JavaLayerException e) {e.printStackTrace();}}
}

测试了一下,JLayer能播放mp3格式的音频文件,但是不能播放wav格式的音频文件。

关于JMF不能播放MP3的问题解决方法相关推荐

  1. 关于jmf不能播放mp3的问题解决

    想写个JAVA的MP3音乐管理器,使用JMF插件,但发现运行时总报一个异常: Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Ster ...

  2. java jmf播放mp3_关于jmf不能播放mp3的问题解决

    想写个JAVA的MP3音乐管理器,使用JMF插件,但发现运行时总报一个异常: Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Ster ...

  3. ubuntu 13.10 Rhythmbox不能播放mp3 和中文乱码的问题

    1.ubuntu 13.10 Rhythmbox不能播放mp3的解决方法 软件中心搜索(ubuntu额外的版权受限软件)不带括号 2.中文乱码问题解决方法: 终端顺序操作 : 1.  sudo ged ...

  4. Java 播放MP3

    Java 播放MP3 的六种方法 1 使用官方的解决方案 2 使用第三方解决方案 (jl1.0.jar) 3 使用第三方解决方案 (jmp123.jar) 4 使用自定义解决方案(推荐) 4.1 依赖 ...

  5. 在linux中播放mp3文件格式,如何在Ubuntu中播放MP3

    如果您已经从Windows OS转向Ubuntu,那么似乎很难使用基于Linux的OS,尤其是命令行.因为大多数Linux功能都基于命令行.即使是大多数Linux用户,也喜欢运行完全依赖终端的Linu ...

  6. Java如何播放MP3格式音频文件,以及如何循环播放音频?

    首选,感谢你能在百忙之中阅读我的博客,在这里我告诉大家2中播放MP3格式音频的方法.第一种,使用自带的JavaFX技术来播放(现再最新的JDK版本中已被移除).第二种我们使用第三方库来进行播放. 点击 ...

  7. python定时播放音乐程序_python实现定时播放mp3

    python实现定时播放mp3 程序很简单,主要是 mp3play 模块的应用 import mp3play, time filename = "Should It Matter.mp3&q ...

  8. java mp3格式要jmf吗_JMF java播放MP3文件

    我在尝试 使用java播放MP3格式的文件 使用了JMF架包. 也是从网上找的各种支持的代码.但都报同一个错误. Unable to handle format: mpeglayer3, 44100. ...

  9. android播放mp3方法,Android之MediaPlayer播放音频与视频

    本节带来的是Android多媒体中的--MediaPlayer,我们可以通过这个API来播放音频和视频 该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码 和播放 ...

最新文章

  1. 微软亚研提出VL-BERT:通用的视觉-语言预训练模型
  2. mysql int(3)与int(11)的区别详解
  3. C#多线程编程系列(一)- 简介
  4. 32位linux系统支持多大内存吗,linux32位操作系统支持大内存
  5. 怎么在长方体上挖孔_华为P50将至,颜值升级!用上和三星旗舰一样的中置挖孔屏?...
  6. python人工智能算法代码_python人工智能,分类例解
  7. 通达信股票数据接口协议文档
  8. 第六章 算法algorithms
  9. 快速学习Ant Design-简介
  10. htc xv6950 刷机方法
  11. Android仿人人客户端(v5.7.1)——消息中心视图的实现
  12. Dominant Indices
  13. C++算法和数据结构之《二叉树》
  14. eclipse4.7的tomcat插件安装(三只小猫)
  15. 调整UE4屏幕分辨率
  16. 分享一个宝藏级 Java 插件
  17. 【初等数论】个人数论总结
  18. Smart3D将已经生成的OSGB格式的模型转换成S3C格式
  19. 有了SQL Server 2005 JDBC还需要SQL Server 2000 JDBC吗?
  20. ​生鲜也能卖尾货了?

热门文章

  1. Windows server 2003 开启多用户登录
  2. 【BZOJ4281】[ONTAK2015]Związek Harcerstwa Bajtockiego LCA
  3. Centos 设置SSH欢迎语
  4. 《ANSYS CFX 14.0超级学习手册》——第1章 流体力学与计算流体力学基础1.1 流体力学基础...
  5. 零基础学Android——布局管理器
  6. 图论--最近公共祖先LCA
  7. objective-c 回调函数
  8. web技术考试重点整理
  9. N1刷armbian安装SMB做文件共享
  10. V8工作原理(二):垃圾回收:垃圾数据如何自动回收