JavaFX:播放视频和音频

4 篇文章 0 订阅
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实现的多媒体播放控件:



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




  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
在Java项目中集成WebRTC播放视频可以通过以下步骤完成: 1. 添加WebRTC的依赖:首先,在项目的pom.xml文件中添加WebRTC的依赖。你可以使用Maven或者Gradle来管理项目依赖,从官方的仓库中获取相应的WebRTC依赖。 2. 初始化WebRTC组件:在项目的启动代码中,初始化WebRTC相关的组件。这包括创建PeerConnectionFactory,设置视频音频的参数,以及初始化网络连接等。 3. 连接到视频源:通过WebRTC的API,连接到视频源。你可以通过传入视频源的URL或其他标识来连接到指定的视频源。这可以是一个录制好的视频文件,也可以是一个实时的视频流。 4. 创建视频播放器:使用Java中的视频播放器组件(如MediaPlayerJavaFXMedia组件)创建一个视频播放器。将WebRTC接收到的视频数据传输给播放器进行解码和渲染。 5. 控制播放流程:实现视频播放的控制流程,包括开始播放、暂停、停止、快进/快退等功能。你可以根据需要自定义播放器的控制界面或者使用现有的控制组件。 6. 处理错误和异常:在播放视频的过程中,可能会遇到网络不稳定、视频源不可用等异常情况。在代码中合适的位置添加错误处理逻辑,保证程序的稳定性和容错性。 7. 释放资源:在项目关闭或退出之前,释放WebRTC和播放器相关的资源。这包括关闭网络连接、释放WebRTC组件、停止播放器等操作,以避免资源泄漏。 总结:通过以上步骤,我们可以在Java项目中集成WebRTC实现视频的播放。WebRTC提供了强大的实时通信能力,结合Java的多媒体处理能力,可以快速搭建一个高效稳定的视频播放系统。当然,具体实现细节还需要根据项目需求进行相应的调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值