Java - 使用 vlcj 播放视频和音频文件(mp4、mp3 等)
必需:
- 下载 VLC (下载 VLC 媒体播放器)
- 为 32 位 VM 安装 32 位 vlc,为 64 位 JVM VM 安装 64 位 vlc
您可以使用JMF 库, 但似乎它已经过时和陈旧了,所以开发人员开始从著名的 VLC 库开发C++一个名为 vlcj (java 的 j).
我们将向您展示如何使用这个精彩库的快速示例。只需将以下示例中的代码复制并粘贴到您首选的 IDE 中: Elipse 或 Netbeans。请注意,您需要 download vlcj library并将其集成到您的项目和类中.
犯的一个错误是 Java VM 与 32 位版本的 VLC 一起使用。它不会仅仅因为您必须使用带有 64 位 JDK 的 64 位 VLC 版本和带有 32 位 JDK 的 32 位 VLC 版本而起作用。
两个基本类:
- 下载 VLC (下载 VLC 媒体播放器)
- 为 32 位 VM 安装 32 位 vlc,为 64 位 JVM VM 安装 64 位 vlc
我们 100% 用 Java 制作的媒体播放器
您可以使用JMF 库, 但似乎它已经过时和陈旧了,所以开发人员开始从著名的 VLC 库开发C++一个名为 vlcj (java 的 j).
我们将向您展示如何使用这个精彩库的快速示例。只需将以下示例中的代码复制并粘贴到您首选的 IDE 中: Elipse 或 Netbeans。请注意,您需要 download vlcj library并将其集成到您的项目和类中.
我们的目标是确保你有一个工作环境。此步骤对于编写任何使用 vlcj 的应用程序至关重要。如果这个简单的应用程序不起作用,那么所有其他用 java 编码并集成了 vlcj 的应用程序都将无法工作。
查找本机库
本机库的路径应指向包含两个文件的文件夹 libvlc.dll 和 libvlccore.dll。在 linux 中,这些文件被命名为 libvlc.so 和 libvlccore.so。这两个dll文件在VLC文件夹中,如果找不到它们,请下载并添加到其中 VLC 已安装。NativeLibrary.addSearchPath(
运行时Util.getLibVlcLibraryName(), C:/Program Files/VideoLAN/VLC);
犯的一个错误是 Java VM 与 32 位版本的 VLC 一起使用。它不会仅仅因为您必须使用带有 64 位 JDK 的 64 位 VLC 版本和带有 32 位 JDK 的 32 位 VLC 版本而起作用。
加载本机库
vlcj API 使用 JNA 将 VLC 连接到库。这意味着 环境 必备 待办事项 配置良好 所以 Java 应用程序将能够找到书商 native.
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
void chargerLibrary(){ NativeLibrary.addSearchPath RuntimeUtil.getLibVlcLibraryName(), C:/Program Files/VideoLAN/VLC”); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); } |
两个基本类:
- MediaPlayerFactory:初始化 libvlc 的单个实例并创建驱动器实例。多媒体。我们可以 为每个视频创建多个面板,例如.
- EmbeddedMediaPlayer:将媒体播放器的组件集成到 UI 组件中。当可以 control 任何与 用户界面,如准备或开始播放、全屏等
示例
import java.awt.BorderLayout;
导入 java.awt.Canvas;
导入 java.awt.Color;
导入 javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.player.MediaPlayerFactory;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
import uk.co.caprica.vlcj.player.embedded.windows.Win32FullScreenStrategy;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
import uk.co.caprica.vlcj.runtime.x.LibXUtil;
/*www.codeurjava.com*/
public class MediaPanel {
public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
chargerLibrary();
new MediaPanel(args);
}
});
}
void chargerLibrary(){
NativeLibrary.addSearchPath(
RuntimeUtil.getLibVlcLibraryName(), C:/Program Files/VideoLAN/VLC”);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
LibXUtil.initialise();
}
private MediaPanel(String[] args) {
JFrame frame = new JFrame(vlcj tutorial”);
frame.setLocation(100, 100);
frame.setSize(1050, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//创建 Canvas 的实例
Canvas c = new Canvas();
//视频背景默认为黑色
c.setBackground(Color.black);
JPanel p = 新 JPanel();
p.setLayout(new BorderLayout());
//视频占据了整个表面
p.add(c, BorderLayout.CENTER);
frame.add(p, BorderLayout.CENTER);
//创建一个 factory
MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
//创建媒体播放器实例
EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(frame));
mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c));
//全屏
mediaPlayer.toggleFullScreen();
//隐藏JFrame
mediaPlayer.setEnableMouseInputHandling(false);
//关闭JFrame
mediaPlayer.setEnableKeyInputHandling(true);
//准备文件
mediaPlayer.prepareMedia(vidéo.mp4”);
//播放
mediaPlayer.play() 文件;
}
}
你去吧!只需几行代码,您现在就可以拥有自己的媒体播放器。开始在线浏览 vlcj documentation,根据需要开发自己的应用程序。