利用VLC制作简易的视频播放器
写在前面
本次视频播放器的制作需要准备四样东西:1、VLC播放器;2、VLC扩展库,3、Apache log4j,4、WindowBuilder插件。前两个是必须的,WindowBuilder插件是为方便开发而使用的,如果有大佬喜欢手写图形界面也是没有问题的。关于插件的安装这里不说了,比较简单,下面直接进入主题。
安装VLC播放器
链接上面已经给出,根据自己的电脑直接下载相应的版本即可,例如我的电脑是windows 64位的,则选择windows 64bit
下载完成直接安装即可,注意记住安装路径,后面会用到。
安装VLC扩展库
点击打开上面的VLC扩展库链接地址,或者直接点击这里传送门,找到vlcj-3.10.1 distribution (zip)
点击下载,下载完成后解压缩。
下载日志库log4j
由于在下面写代码的过程中会出现一个错误,这个错误需要通过导入log4j-1.2.17.jar包解决,所以在此先将其下载好,当然这里使用的是1.2X版本,你可以下载最新的2.X版本,这应该是没有影响的。下载链接
创建工程以及加载VLC库
创建工程很简单,关键是加载VLC库,要在代码中加载VLC库,需要先在工程目录中导入所需要的jar
包,包括
jna-4.1.0.jar
vlcj-3.10.1.jar
log4j-1.2.17.jar
slf4j-log4j12-1.7.25.jar
slf4j-api-1.7.10.jar
之前由于没有导入log4j-1.2.17.jar
或者slf4j-log4j12-1.7.25.jar
,因此在加载VLC库文件的时候会出现各种谜一样的错误,类似于:
1 | 错误: |
网上的解决办法也是五花八门,自己也摸索着找到了解决的方法:
先在在项目中导入log4j-1.2.17.jar和slf4j-log4j12-1.7.25.jar两个包,添加完后需要在src目录下添加一个log.properties文件指定日志信息的存放地址,log.properties里的内容可以自定义,下面是我的log.properties文件中的内容:
1 | # Root logger option |
还有一个迷之错误就是:
1 | java.lang.RuntimeException: Failed to initialise libvlc. |
这个问题网上有不少人遇到过,但给出解决办法的却没几个,下面是我的解决办法:
windows下解决的办法:在系统的环境变量中添加一条记录VLC_PLUGIN_PATH指定路径:VLC安装目录下的plugins目录,例如:F:\MyPlayer\VLC\plugins,添加完环境属性后重启电脑,再次执行程序便可正常运行。
1 | public class PlayMain { |
创建界面
整个界面都是在windowbuilder中进行创建,所以这一部分比较简单,界面的代码如下:
1 | package com.mackvord.videoplayer.views; |
添加监听器
1 | mntmOpen.addActionListener(new ActionListener() { |
事件处理方法
由于时间的关系,只实现了一些基本的功能,包括播放、暂停、停止、音量调节、文件的选择以及字幕文件的选择等。界面的创建以及事件监听在MainWindow类中实现,而事件的处理交由PlayMain类处理。并且PlayMain类负责界面的初始化。
播放事件
1 | // 播放的方法 |
暂停事件
1 | // 暂停的方法 |
停止事件
1 | // 停止的方法 |
音量调节
1 | // 设置音量 |
进度条调节播放进度
1 | // 进度条跳转的方法 |
选择视频文件
1 | // 打开文件 |
选择字幕文件
1 | // 选择字幕文件 |
退出时的处理
1 | // 退出 |
完整的代码
PlayMain.java:
1 | package com.mackvord.videoplayer.main; |
MainWindow.java:
1 | package com.mackvord.videoplayer.views; |