JavaFX MediaPlayer支持的媒体编码
以下是目前支持的编码格式:
音频:
MP3;
包含非压缩PCM的AIFF;
包含非压缩PCM的WAV;
使用AAC音频的MPEG-4;(MP4)
视频:
包含VP6视频和MP3音频的FLV;
使用H.264/AVC视频压缩的MPEG-4(MP4)
播放视频文件
为了创建一个媒体播放器,你需要实现三重嵌套的媒体对象的结构,编码图形控件,以及加入一些播放功能的逻辑。如下面图3-1展示:
创建基本的视频播放框架
- /创建媒体对象:包含媒体资源
String media_URL = getClass().getResource("TestMedia.mp4").toString(); //需要把多媒体文件放置到out目录上的运行class目录树下
//or:直接使用网络资源:String media_URL = http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv;
Media media = new Media(media_URL);
//创建播放器对象,控制媒体播放行为
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true); //设置自动播放
//创建媒体播放视图
MediaView mediaView = new MediaView(mediaPlayer);
rootPane.setCenter(mediaView);
//对媒体播放器的控制(对MediaPlayer进行控制)
对媒体播放器进行控制(MediaPlayer对象)
mediaPlayer.play(); //播放
mediaPlayer.pluse(); //暂停
mediaPlayer.stop(); //停止
mediaPlayer.setAutoPlay(true); //设置自动播放
mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE); //设置循环播放(设置播放次数)
mediaPlayer.dispose(); //释放 MediaPlayer 的 Media 资源
mediaPlayer.seek(Duration seekTime); //重绕进度
mediaPlayer.getStratTime(); //获取开始时间(->Duration)
mediaPlayer.getStopTime(); //获取视频长度(->Duration)
mediaPlayer.getCurrentTime(); //获取当前时间(->Duration)
mediaPlayer.getVolumn(); //获取视频音量(->double)
mediaPlayer.setVolumn(); //设置音量 0~0.1
Duration类
主要适用于短时间(小时,分钟,秒)的计量,长时间计量使用Calendar来代替
常数参数:
Duration.UNKONW,
Duration.ZERO,
Duration.ONE,
Duration.INDEFINITE
Duration duration = new Duration(double millis) ; //描述短时间
Duration duration = Duration.millis(double millis) ;
Duration duration = Duration.minutes(double minutes) ;
Duration duration = Duration.hours(double hours) ;
durtaion.toHours(); //以小时的形式返回(->double)
durtaion.toMillis(); //以毫秒的形式放回(->double)
durtaion.toSeconds(); //以秒的形式返回(->double)
durtaion.toString();
duration.greaterThan(Duration duration2); //是否大于(->boolean);
duration.greaterOrEqualsThan(Duration duration2); //是否大于或等于(->boolean);
duration.compareTo(Duration duration2); //比较
duration.add(Duration dur2); //两个Duration对象相加;(Duration)
duration.divide(Duration dur2); //两个Duration对象相减;(Duration)
durtaion.valueOf(String time); "[number][ms|s|m|h]".
获取Media的相关信息要在Media加载完成后才能进行,如下:
Media media = new Media(getClass().getResource("sample.mp4"));
MediaPlayer mediaPlayer = new MediaPlayer(meida);
mediaPlayer.setOnReady(new Runnable(){
public void run(){
double meidaHeight = media.getHeight();
double meidaWidth = meida.getWidth();
//通过获取视频的显示数据可以解决 MediaView 窗口自适应的问题
}
});
更多Media信息的获取参照JavaFX API :
javafx.scene.media.Media
String url = getClass().getResource("music.mp3").toString();
Media media = new Meidia(url);
MediaPlayer player = new MediaPlayer(media);
player.setAutoPlaye(true); //设置自动播放
player.setCycleCount(20); //设置循环播放次数
//音频控制(通常写在控件动作中)
player.play();
player.pluse();
player.stop();
自制的基于JavaFX实现的多媒体播放控件:
github链接: https://github.com/Al-assad/Simple-Media-Player