b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

使用JAVA编写视频播放器

电脑杂谈  发布时间:2020-03-24 21:19:18  来源:网络整理

java 视频播放服务器_java播放音乐_java本地视频播放器

Java因其跨平台优势而陷入困境. 当时,我以为“写一次,到处跑”. 这听起来不错,它应该是所有语言开发的最终方法. Java必将统治世界.

事实证明当时我还太小.

所谓的鱼和熊掌不能兼得. 如果您想享受跨平台带来的便利,那么您将不可避免地不得不接受缺乏性能的情况. 实际上,java一直在努力提高虚拟机(JIT和其他技术)的性能,但是它仍然离需要高实时计算性能或涉及硬件优化任务(视频的硬件编码和解码)的任务还很远. . 不如c或c ++. 因此,很少有人会用Java编写此类软件.

返回主题,如果要编写视频播放器java本地视频播放器,则必须处理不同的视频格式(mp4,avi,rmvbjava本地视频播放器,flv等). 每种类型的视频都必须具有相应的才能播放. 大多数库都是基于高效C或C ++编写的. 用Java编写的库很少.

java本地视频播放器_java 视频播放服务器_java播放音乐

因此,如果要使用Java编写视频播放器,则只有两个选择:

使用Java编写软件的优点是它可以真正跨平台使用,并且可以与swing框架轻松灵活地结合在一起. 但是,缺点是它太麻烦了,更不用说软件的效率了,是否能够成功地重建各种主流视频格式的轮子是一个值得怀疑的问题.

因此,我采用了第二种方法,该方法使用jni调用现有的第三方视频解码库来完成视频解码任务,并将视频显示和控制的逻辑移交给Java. 这样可以提高视频播放器的效率. 值得一提的是,尽管根据平台类型调用不同的平台也可以实现跨平台,但是会受到很多限制,这是不可避免的.

让我们看看如何实现视频播放器.

java 视频播放服务器_java播放音乐_java本地视频播放器

视频格式很多,也很多,因此找到相应的并将其封装到jni接口中是一项繁琐的任务,因此我们可以找到封装了各种主流的媒体处理. 直接调用的框架(视频播放器)库. VLC是一个很好的选择.

VLC媒体播放器VLC是一个免费的开放源代码,跨平台的多媒体播放器和框架,可以播放大多数多媒体文件以及DVD,音频CD,VCD和各种流媒体协议.

在vlc的库中,我们需要对特定的软件包使用jni,以便我们可以使用java来调用视频解码和播放控制接口. 幸运的是,我们不必重建轮子. vlcj是由外国开发人员使用java开发的媒体处理框架. 底层是vlc播放器,它使用jni调用vlc以完成音频解码任务.

    <dependency>
        <groupId>uk.co.caprica</groupId>
        <artifactId>vlcj</artifactId>
        <version>3.10.1</version>
    </dependency>

java播放音乐_java 视频播放服务器_java本地视频播放器

接下来是代码干货. 将介绍三个基于此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;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.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) {
                mediaPlayerComponent.release();
                System.exit(0);
            }
        });
        mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
        frame.setContentPane(mediaPlayerComponent);
        frame.setVisible(true);
        mediaPlayerComponent.getMediaPlayer().playMedia(args[0]);
    }
}

java 视频播放服务器_java播放音乐_java本地视频播放器

这是由vlcj作者基于vlcj编写的开源播放器. 它非常全面,可以用作普通的视频播放器. 由于该项目的内容很多,因此列出代码很不方便.

查看项目地址以获取详细信息

这是一个基于vlcj的简单视频播放器. 它支持一些简单的视频播放控制功能和弹幕功能.

此播放器的开发不是出于用Java编写视频播放器的好奇心,因此它没有提供相对完整的功能,毕竟这需要时间和精力. 只是与我之前编写的弹幕播放器结合使用,我才向该视频播放器添加了弹幕播放功能,以便可以在本地视频播放过程中播放B站的弹幕.

查看项目地址以获取详细信息

在开发过程中,我遇到了一些缺陷,例如视频渲染组件的透明性,以及由于挥杆重绘机制导致的一些界面显示错误. 有些是完全解决的,而另一些则只能通过曲线保存国家的方法来解决. 如果您在Kai中遇到了这些问题,欢迎一起讨论.

附加:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-151040-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      每日福利
      热点图片
      拼命载入中...