上一篇文章我们主要讲了视频播放器开发之前需要准备的一直个知识,TextureView,用于对图像流的处理。这篇文章开始构建一个基础的视频播放器。
一、准备工作
在之前的文章已经说过了,播放器也是一个view,我们要在这个view上播放视频流。所以我们要自定义一个简单的viewgroup,比如继承FrameLayout。还出就是布局简单,其他控件可以往上面添加。大家见过的视频播放器的控制器都是放在视频的上方的。这样就是用FrameLayout布局是最好的。
class SmallVideoPlayer extends FrameLayout
二、初始化TextureView
这是一个用于承载显示‘数据流’的View,它不会创建新的窗口来显示内容。它是将内容流直接投放到View中,并且可以和其它普通View一样进行移动,旋转,缩放,动画等变化。
TextureView初始化方式如下,并且我们这个播放器View要实现其监听方法:
class SmallVideoPlayer extends FrameLayout implements TextureView.SurfaceTextureListener
private void initTextureView() {
if (mTextureView == null) {
mTextureView = new TextureView(mContext);
mTextureView.setSurfaceTextureListener(this);
}
}
然后我们把这个TextureView添加到我们的视频播放器的view上,并且设置跟视频播放器View一样大小:
private void addTextureView() {
removeView(mTextureView);
LayoutParams params = new LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
Gravity.CENTER);
addView(mTextureView, 0, params);
}
三、初始化播放器内核
一个公司想要实现机的播放器内核需要一定的成本,所以大部分公司都选择使用第三方的内核,比如bilibili开源的ijkplayer。ijkplayer是一个基于FFmpeg的轻量级Android/iOS视频播放器。FFmpeg的是全球领先的多媒体框架,能够解码,编码,转码,复用,解复用,流,过滤器和播放大部分的视频格式。它提供了录制、转换以及流化音视频的完整解决方案。这里我们也用它。
在项目module的gradle里面添加依赖:
implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.3'
implementation 'tv.danmaku
Android视频播放器开发:ijkplayer实现基础播放器

本文介绍了如何在Android中构建一个基础的视频播放器,使用TextureView和ijkplayer作为播放内核。首先自定义一个FrameLayout,然后初始化TextureView并添加到布局中,接着导入ijkplayer库并初始化播放器内核。当TextureView准备好后,在onSurfaceTextureAvailable方法中开始播放视频。通过设置数据源和Surface,实现视频在自定义视图上的播放。最后展示了相关代码,强调了高级开发者与初级开发者之间的差距在于经验和思路。
最低0.47元/天 解锁文章
443

被折叠的 条评论
为什么被折叠?



