
这是因为它具有跨平台的优势. 当时我想,“写一次,到处跑”. 这听起来很棒,这应该是所有语言发展的最终方式. Java必将统治世界.
但是,事实证明我还很小.
由于所谓的鱼和熊掌不能兼得,如果您想享受跨平台带来的便利,您将不可避免地不得不接受性能的不足. 实际上,java一直在努力提高虚拟机(JIT和其他技术)的性能,但是当面对需要高实时计算性能或涉及硬件优化任务(视频的硬件编码和解码)的任务时,仍然远不及c或c ++. 因此,很少有人看到有人用Java编写这样的软件.
返回主题,如果要编写视频播放器,则必须处理不同的视频格式(mp4,avi,rmvb,flv等). 每种类型的视频格式都必须具有相应的才能播放. 大多数库都是基于高效C或C ++编写的,很少有使用Java编写的库.
因此,要用Java编写视频播放器,只有以下两个选项:
•用纯Java语言编写,并自己编写主流视频格式的软件,并结合Java Media Framework(JMF)来完成视频解码任务.

•使用jni调用现有的c或c ++库以完成视频解码任务
使用Java编写软件的优势在于,它可以真正实现跨平台,并且可以轻松java本地视频播放器,灵活地与swing框架结合. 但是,缺点是太麻烦了. 让我们不要谈论软件的效率. 是否可以成功地重建各种主流视频格式的的轮子是一个值得商bat的问题.
因此,我采用了第二种方法来调用现有的第三方视频解码库,以通过jni完成视频解码的任务,并且视频显示和控制的逻辑由Java完成. 这样,可以实现更有效的视频播放器. 值得一提的是,尽管根据平台的类型调用不同的平台也可以实现跨平台,但是会受到很多限制,这是不可避免的.
让我们看看如何实现视频播放器.
文字
选择

视频格式很多,也很多,因此找到相应的并将其封装到jni接口中进行调用是一项繁琐的任务,因此我们可以找到封装了各种主流的媒体处理程序包. 直接调用的框架(视频播放器)库. VLC是一个很好的选择.
VLCmediaplayerVLC是一个免费的开放源代码,跨平台的多媒体播放器和框架java本地视频播放器,可以播放大多数多媒体文件以及DVD,音频CD,VCD和各种流媒体协议.
在vlc库中,我们必须使用jni进行封装,以便可以使用java调用视频解码和播放控制接口. 幸运的是,我们不必重建轮子. Vlcj是由外国开发人员使用java开发的媒体处理框架. 底层使用vlc播放器,该播放器通过jni调用vlc以完成音频解码任务.
开发过程
•安装VLCMediaPlayer(我安装了2.2.4版本,最好安装到默认目录)
•建立通用的Maven项目,添加vlcj的依赖项


•官方发展
接下来是代码干货,将介绍三个基于此vlcj视频播放器的项目.
入门示例
这是vlcj的作者提供的入门示例程序,可以快速实现一个简单的视频播放器. 当然,它仅用于播放,不提供控制功能.
此处使用的vlcj中提供的嵌入式媒体播放器组件EmbeddedMediaPlayerComponent,通过mediaPlayer中的playMedia方法,您可以直接播放视频,并且视频将呈现在EmbeddedMediaPlayerComponent上. EmbeddedMediaPlayerComponent在此组件中提供了许多其他功能. 要实现普通的视频播放器,只需了解此组件即可.

代码

vlcj-player
这是由vlcj基于vlcj编写的开源播放器. 它具有全面的功能,可以用作普通的视频播放器. 由于该项目内容繁多,因此列出代码很不方便.
javaplayer
这是一个基于vlcj的简单视频播放器,它支持一些简单的视频播放控制功能和弹幕功能.
后记
在开发过程中,我遇到了一些缺陷,例如视频渲染组件的透明性问题,以及一些由于摆动重绘机制导致的界面显示错误. 有些已经完全解决,而另一些只能通过曲线保存国家的方法解决. 如果您在Kai中也遇到这些问题,请登录电源节点IT培训官方网站,以咨询客户服务老师.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-173908-1.html
使劲骂
我要是伊拉克总统
试试DF21和DF26的实战