java如何开发视频软件_使⽤JAVA编写视频播放器
Java因其跨平台优势⽽陷⼊困境. 当时,我以为“写⼀次,到处跑”. 这听起来不错,它应该是所有语⾔开发的最终⽅法. Java必将统治世界.
事实证明当时我还太⼩.
所谓的鱼和熊掌不能兼得. 如果您想享受跨平台带来的便利,那么您将不可避免地不得不接受缺乏性能的情况. 实际上,java⼀直在努⼒提⾼虚拟机(JIT和其他技术)的性能,但是它仍然离需要⾼实时计算性能或涉及硬件优化任务(视频的硬件编码和解码)的任务还很远. . 不如c或c ++. 因此,很少有⼈会⽤Java编写此类软件.
返回主题,如果要编写视频播放器java本地视频播放器,则必须处理不同的视频格式(mp4,avi,rmvbjava本地视频播放器,flv等). 每种类型的视频都必须具有相应的才能播放. ⼤多数库都是基于⾼效C或C ++编写的. ⽤Java编写的库很少.
因此,如果要使⽤Java编写视频播放器,则只有两个选择:
使⽤Java编写软件的优点是它可以真正跨平台使⽤,并且可以与swing框架轻松灵活地结合在⼀起. 但是,缺点是它太⿇烦了,更不⽤说软件的效率了,是否能够成功地重建各种主流视频格式的轮⼦是⼀个值得怀疑的问题.
因此,我采⽤了第⼆种⽅法,该⽅法使⽤jni调⽤现有的第三⽅视频解码库来完成视频解码任务,并将视频显⽰和控制的逻辑移交给Java. 这样可以提⾼视频播放器的效率. 值得⼀提的是,尽管根据平台类型调⽤不同的平台也可以实现跨平台,但是会受到很多限制,这是不可避免的.
让我们看看如何实现视频播放器.
⽤的框架(视频播放器)库. VLC是⼀个很好的选择.
VLC媒体播放器VLC是⼀个免费的开放源代码,跨平台的多媒体播放器和框架,可以播放⼤多数多媒体⽂件以及DVD,⾳频CD,VCD和各种流媒体协议.
在vlc的库中,我们需要对特定的软件包使⽤jni,以便我们可以使⽤java来调⽤视频解码和播放控制接⼝. 幸运的是,我们不必重建轮⼦. vlcj 是由外国开发⼈员使⽤java开发的媒体处理框架. 底层是vlc播放器,它使⽤jni调⽤vlc以完成⾳频解码任务.
vlcj
3.10.1
接下来是代码⼲货. 将介绍三个基于此vlcj视频播放器的项⽬.
这是vlcj的作者提供的⽰例⽰例程序. 它可以快速实现⼀个简单的视频播放器. 当然,它只是⽤于播放,不提供控制功能.
此处使⽤的vlcj中提供的嵌⼊式视频播放器组件EmbeddedMediaPlayerComponent可以通过mediaPlayer中的playMedia⽅法直接播放视频,并将视频呈现到EmbeddedMediaPlayerComponent. EmbeddedMediaPlayerComponent提供许多其他功能. 要实现⼀个通⽤的视频播放器,只需了解此组件即可.
package tutorial;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
aprica.vlcjponent.EmbeddedMediaPlayerComponent;
aprica.vlcj.discovery.NativeDiscovery;
public class Tutorial {
private final JFrame frame;
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
public static void main(final String[] args) {
new NativeDiscovery().discover();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Tutorial(args);
}
});
}
public Tutorial(String[] args) {
frame = new JFrame("My First Media Player");
frame.setBounds(100, 100, 600, 400);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
java可以开发什么软件}
});
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
frame.setContentPane(mediaPlayerComponent);
frame.setVisible(true);
}
}
这是由vlcj作者基于vlcj编写的开源播放器. 它⾮常全⾯,可以⽤作普通的视频播放器. 由于该项⽬的内容很多,因此列出代码很不⽅便.
查看项⽬地址以获取详细信息
这是⼀个基于vlcj的简单视频播放器. 它⽀持⼀些简单的视频播放控制功能和弹幕功能.
此播放器的开发不是出于⽤Java编写视频播放器的好奇⼼,因此它没有提供相对完整的功能,毕竟这需要时间和精⼒. 只是与我之前编写的弹幕播放器结合使⽤,我才向该视频播放器添加了弹幕播放功能,
以便可以在本地视频播放过程中播放B站的弹幕.
查看项⽬地址以获取详细信息
在开发过程中,我遇到了⼀些缺陷,例如视频渲染组件的透明性,以及由于挥杆重绘机制导致的⼀些界⾯显⽰错误. 有些是完全解决的,⽽另⼀些则只能通过曲线保存国家的⽅法来解决. 如果您在Kai中遇到了这些问题,欢迎⼀起讨论.
附加:
本⽂来⾃电脑杂谈,转载请注明本⽂⽹址:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论