)类 新建javafx程序时_JavaFX桌面应用视频转码工具

最近由于需要将在爱奇艺下载的视频(qsv)转化了mp4,用JavaFX开发一个视频转码工具,算是JavaFX开发的第一个应用吧。

理论上支持各种格式,仅测试了flv,qsv格式

1. 应用程序预览

UI界面主要分为三个部分,顶部用于显示当前转码的视频信息,右侧按钮用于选择需要转码的视频,已经启动转码,中间是转码视频列表信息显示。

04b48250a476136e6fce381868ee2c09.png

2. UI 布局

使用BorderPane进行布局,top为视频信息显示区,center为表格显示区

3. 事件处理

这里需要处理两个按钮的事件,即“选择”按钮和“启动”按钮的事件。

a. “选择”事件处理

当用户点击“选择”时,弹出视频文件选择框,支持同时选择多个视频。

public void selectVideoHandler(ActionEvent actionEvent) {    FileChooser fileChooser = new FileChooser();    List fs = fileChooser.showOpenMultipleDialog(App.stage);    int idx = 0;    if (fs != null && !fs.isEmpty()) {        for (File f : fs) {            if (f.exists() && f.isFile()) {                model.getTableList()                    .add(TableColumnModel.fromWork(new Work(System.currentTimeMillis() + idx++, f.getAbsolutePath())));            }        }    }}

b. “启动”事件处理

当用户点击启动按钮的时候,开始转码,并禁用启动按钮,防止多次启动转码。

public void executeConvertHandler(ActionEvent actionEvent) {    if (model.getTableList().isEmpty()) {        new Alert(Alert.AlertType.INFORMATION, "没有转码任务,请选择视频进行转码。").show();        return;    }    if (ffmpeg == null) {        new Alert(Alert.AlertType.ERROR, "FFmpeg.exe Not Found.").show();        return;    }    ((Button) actionEvent.getSource()).setDisable(true);    new VideoConvertExecutor(ffmpeg, model.getTableList(), s -> Platform.runLater(() -> model.setInfo(s))).start();}

4. 视频转码主流程

视频转码采用FFmpeg工具进行转码,当视频进行转码时,将任务放入转码任务池,并启动转码;如果转码出现异常,则将异常信息放入model中显示在界面上,如果所有任务都已执行完成后退出转码线程。

@Overridepublic void run() {    while (true) {        Optional opt = modelList.stream().filter(i -> !VideoConvertHolder.has(i.getId())).findFirst();        if (opt.isPresent()) {            try {                VideoConvertHolder.add(opt.get().getId());                convert(opt.get());            } catch (Exception e) {                e.printStackTrace();                Platform.runLater(() -> opt.get().setMessage(e.getMessage()));            }        } else {            break;        }    }}

5. 应用打包、安装

应用打包只需用InnoSetup生成打包配置iss,如何将应用打包成安装包即可,下面是安装界面:

5a08e4ddfde23d3d62ae9e376267adce.png

安装成功后,目录结构如下:

3347b6c1f085ff1304e33723445301c3.png

6. 应用卸载

如果需要卸载应用,只需要运行安装目录下面的 unins000.exe即可。

7. 转码效果

经过转码后的qsv视频就可以采用视频播放工具播放了。

4ea3579b667d2472bac62ce9f2b40d4b.png


项目源码可以在公众号上发送“视频转码工具” 获取。

推荐阅读:

JavaFX桌面应用开发-HelloWorld

JavaFX布局神器-SceneBuilder

JavaFX让UI更美观-CSS样式

JavaFX桌面应用-为什么应用老是“未响应”

JavaFX桌面应用-MVC模式开发,“真香”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值