JavaFX初探与MediaPlayer(4)

终于要放视频了!!!


从第一 次博客我就说要放视频,然后一直拖,一直拖。。。然后考试加磕盐加旅游。。。结果年都过了我还没把视频放出来。。。
(拖延症害死人啊!!!!)

今天我们真的来播放视频。JavaFX提供Media类用来表示多媒体(音视频),用MediaPlayer类播放音视频,再用一个MediaView类显示视频。它们都在javafx.scene.media中。使用时大致关系如下:
Media –> MediaPlayer –> MediaView


首先是Media类。Media类可以说是非常突出JavaFX为互联网应用而设计(虽然就是流行不起来)的特性了。Media类只能用URL来初始化,这给我们后面打开本地多媒体带来了一点小麻烦,网络上其他不少博客都提到了这个事情。待会我说如何解决。只是因为这个,我们会先播放网络上的流媒体。

这些类的初始化可以这样做:

    String url = "http://www.gov.cn/guoqing/guoge/hc.mp3";
    Media media = new Media(url);
    MediaPlayer mplayer = new MediaPlayer(media);
    MediaView mView = new MediaView(mplayer);

我相信有我前面3篇博客的铺垫,大家都能看懂以上代码了吧(笑)。如果大家懒得敲代码,我就把代码全贴上。。。
(温馨提示:测试的是MP3音频,大家听之前请起立。)

import javafx.application.Application;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;

public class TestMediaDemo extends Application{

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage){
    String url = "http://www.gov.cn/guoqing/guoge/hc.mp3";
        Media media = new Media(url);
        MediaPlayer mplayer = new MediaPlayer(media);
        MediaView mView = new MediaView(mplayer);
        System.out.println(media.getSource());

        Pane pane = new Pane();
        pane.getChildren().add(mView);
        mView.fitHeightProperty().bind(pane.heightProperty());
        mView.fitWidthProperty().bind(pane.widthProperty());

        Scene scene = new Scene(pane,640,360);
        primaryStage.setTitle("MediaDemo");
        primaryStage.setScene(scene);
        primaryStage.show();

        mplayer.play();
    } 
}


emmmm…
说好的测试视频人类圣经京紫纪元呢??emmm,请把url那行换成以下代码:

String url = "https://cn-sxxa-dx-v-02.acgvideo.com/vg1/6/2a/29662087-1-16.mp4?expires=1515985200&platform=flash&ssig=h3iTfwrKcM-DK2wB87aWpA&oi=2087966946&nfa=hno/XSvDsQc4EM4Yi2jKaw==&dynamic=1&hfa=2020138098&hfb=YzczMmRlMTk4ZTRhNzhlZGE4YTlmM2QzZTAxYzYyOTE=";

这里写图片描述


当我们想打开本地文件时,把这个URL替换成文件名是没用的,等着抛出异常吧;换成“file:文件名”还是没用的,等着抛出异常吧;换成“file:\文件名”更是没用的,等着抛出异常吧^_^。
一个主要原因是,JavaFX是为互联网应用设计的,所以对本地文件,也要改成URL格式,可本地文件的URL是什么呢?
幸好Java提供了为文件求URL的方法:

java.io.File file = new java.io.File("media\\Twinkle_Snow.mp4"); //关于这个视频是什么,我只能说无可奉告
url = file.toURI().toString();

我专门用一个System.out.println把这个本地文件的URL输出来:

file:/E:/java/VideoDemo/media/Twinkle_Snow.mp4

我真的是Windows啊!!!奈何Java只想要正斜杠呢。。。

  • 14
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值