JavaFX:播放视频和音频

JavaFX MediaPlayer支持的媒体编码

以下是目前支持的编码格式:

音频:

MP3;

含非压缩PCM的AIFF;

包含非压缩PCM的WAV;

使用AAC音频的MPEG-4;(MP4)

视频:

包含VP6视频和MP3音频的FLV;

使用H.264/AVC视频压缩的MPEG-4(MP4)


播放视频文件

为了创建一个媒体播放器,你需要实现三重嵌套的媒体对象的结构,编码图形控件,以及加入一些播放功能的逻辑。如下面图3-1展示:


创建基本的视频播放框架

 
    
  1. /创建媒体对象:包含媒体资源
  2. String media_URL = getClass().getResource("TestMedia.mp4").toString(); //需要把多媒体文件放置到out目录上的运行class目录树下
  3. //or:直接使用网络资源:String media_URL = http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv;
  4. Media media = new Media(media_URL);
  5. //创建播放器对象,控制媒体播放行为
  6. MediaPlayer mediaPlayer = new MediaPlayer(media);
  7. mediaPlayer.setAutoPlay(true); //设置自动播放
  8. //创建媒体播放视图
  9. MediaView mediaView = new MediaView(mediaPlayer);
  10. rootPane.setCenter(mediaView);
  11. //对媒体播放器的控制(对MediaPlayer进行控制)

对媒体播放器进行控制(MediaPlayer对象)
 
     
  1. mediaPlayer.play(); //播放
  2. mediaPlayer.pluse(); //暂停
  3. mediaPlayer.stop(); //停止
  4. mediaPlayer.setAutoPlay(true); //设置自动播放
  5. mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE); //设置循环播放(设置播放次数)
  6. mediaPlayer.dispose(); //释放 MediaPlayer 的 Media 资源
  7. mediaPlayer.seek(Duration seekTime); //重绕进度
  8. mediaPlayer.getStratTime(); //获取开始时间(->Duration)
  9. mediaPlayer.getStopTime(); //获取视频长度(->Duration)
  10. mediaPlayer.getCurrentTime(); //获取当前时间(->Duration)
  11. mediaPlayer.getVolumn(); //获取视频音量(->double)
  12. mediaPlayer.setVolumn(); //设置音量 0~0.1
Duration类
主要适用于短时间(小时,分钟,秒)的计量,长时间计量使用Calendar来代替
常数参数: Duration.UNKONW,   Duration.ZERO,   Duration.ONE,     Duration.INDEFINITE
 
      
  1. Duration duration = new Duration(double millis) ; //描述短时间
  2. Duration duration = Duration.millis(double millis) ;
  3. Duration duration = Duration.minutes(double minutes) ;
  4. Duration duration = Duration.hours(double hours) ;
  5. durtaion.toHours(); //以小时的形式返回(->double)
  6. durtaion.toMillis(); //以毫秒的形式放回(->double)
  7. durtaion.toSeconds(); //以秒的形式返回(->double)
  8. durtaion.toString();
  9. duration.greaterThan(Duration duration2); //是否大于(->boolean);
  10. duration.greaterOrEqualsThan(Duration duration2); //是否大于或等于(->boolean);
  11. duration.compareTo(Duration duration2); //比较
  12. duration.add(Duration dur2); //两个Duration对象相加;(Duration)
  13. duration.divide(Duration dur2); //两个Duration对象相减;(Duration)
  14. durtaion.valueOf(String time); "[number][ms|s|m|h]".


获取Media的相关信息要在Media加载完成后才能进行,如下:
 
      
  1. Media media = new Media(getClass().getResource("sample.mp4"));
  2. MediaPlayer mediaPlayer = new MediaPlayer(meida);
  3. mediaPlayer.setOnReady(new Runnable(){
  4. public void run(){
  5. double meidaHeight = media.getHeight();
  6. double meidaWidth = meida.getWidth();
  7. //通过获取视频的显示数据可以解决 MediaView 窗口自适应的问题
  8. }
  9. });
更多Media信息的获取参照JavaFX API : javafx.scene.media.Media


播放音频文件
 
     
  1. String url = getClass().getResource("music.mp3").toString();
  2. Media media = new Meidia(url);
  3. MediaPlayer player = new MediaPlayer(media);
  4. player.setAutoPlaye(true); //设置自动播放
  5. player.setCycleCount(20); //设置循环播放次数
  6. //音频控制(通常写在控件动作中)
  7. player.play();
  8. player.pluse();
  9. player.stop();


自制的基于JavaFX实现的多媒体播放控件:

JavaFX:播放视频和音频_第1张图片

github链接: https://github.com/Al-assad/Simple-Media-Player




你可能感兴趣的:(Java,JavaFX)