快速开始

更新时间:
复制为 MD 格式

本文介绍如何快速接入AliPlayerKit,包括全局初始化、组件层接入和场景层接入的完整步骤。

说明

在开始之前,请确保您已经按照集成准备文档完成环境配置和依赖添加。

说明

AI友好提示:本文档为结构化文档,步骤清晰,适合AI解析与执行。可作为Skills用于辅助开发流程,推荐使用AI辅助接入AliPlayerKit。

AliPlayerKit提供了极简的API设计,帮助您以低代码的方式快速集成视频播放功能。

选择接入方案

AliPlayerKit采用分层架构设计。除组件层接入外,还提供场景层接入方式,您可以根据业务需求灵活选择:

接入方案

模块

说明

适用场景

组件层接入

playerkit

使用playerkit核心模块,提供可配置的播放器UI组件。

需要自定义播放器UI或灵活控制播放行为。

场景层接入

playerkit-scenes

在组件层基础上,使用完整业务场景解决方案。

快速实现标准播放场景,如长视频、短视频、直播。

说明

场景层依赖组件层。若选择场景层接入,需先完成组件层接入。

全局初始化

Application.onCreate()中调用AliPlayerKit.init()进行全局初始化。整个应用生命周期只需调用一次,用于初始化播放器内核和全局配置。

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化AliPlayerKit全局设置
        AliPlayerKit.init(this);
    }
}
class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        // 初始化AliPlayerKit全局设置
        AliPlayerKit.init(this)
    }
}
说明

AliPlayerKit还提供其他全局配置接口,如setPlayerViewType()setDisableScreenshot()等,详情请参见API参考

方案一:组件层接入

组件层(playerkit模块)提供开箱即用、可配置的播放器UI组件。在每个需要播放视频的页面中,按以下步骤实现播放功能。

步骤1:添加播放器视图

在布局XML中添加AliPlayerView

<!-- 播放器组件视图 -->
<com.aliyun.playerkit.AliPlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />       

AliPlayerView可直接放入您的布局中,宽高可根据实际需求设置。如需外层容器(如全屏切换场景),可自行添加FrameLayout或其他容器包裹。

步骤2:绑定控制器并播放

Activity/Fragment中创建控制器、配置数据、绑定视图:

public class VideoPlayerActivity extends AppCompatActivity {

    private AliPlayerView playerView;
    private AliPlayerController controller;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_player);

        // 1. 获取播放器视图
        playerView = findViewById(R.id.player_view);

        // 2. 创建播放控制器
        controller = new AliPlayerController(this);

        // 3. 配置播放数据(推荐使用VidAuth方式)
        AliPlayerModel model = new AliPlayerModel.Builder()
                .videoSource(VideoSourceFactory.createVidAuthSource(
                        "您的视频ID",    // 视频ID
                        "您的播放凭证"    // 播放凭证
                ))
                .coverUrl("https://example.com/cover.jpg")  // 替换为实际封面图地址
                .videoTitle("示例视频")
                .autoPlay(true)
                .build();

        // 4. 绑定控制器和视图
        playerView.attach(controller, model);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 5. 解绑并释放资源
        playerView.detach();
    }
}
class VideoPlayerActivity : AppCompatActivity() {

    private lateinit var playerView: AliPlayerView
    private lateinit var controller: AliPlayerController

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_video_player)

        // 1. 获取播放器视图
        playerView = findViewById(R.id.player_view)

        // 2. 创建播放控制器
        controller = AliPlayerController(this)

        // 3. 配置播放数据(推荐使用VidAuth方式)
        val model = AliPlayerModel.Builder()
                .videoSource(VideoSourceFactory.createVidAuthSource(
                        "您的视频ID",    // 视频ID
                        "您的播放凭证"    // 播放凭证
                ))
                .coverUrl("https://example.com/cover.jpg")  // 替换为实际封面图地址
                .videoTitle("示例视频")
                .autoPlay(true)
                .build()

        // 4. 绑定控制器和视图
        playerView.attach(controller, model)
    }

    override fun onDestroy() {
        super.onDestroy()
        // 5. 解绑并释放资源
        playerView.detach()
    }
}
说明

如果暂时无法获取视频ID和播放凭证,可使用SceneConstants.java中提供的示例数据进行测试,以便快速跑通示例。

步骤3(可选):处理返回键

如果您的应用支持全屏播放,需要在Activity中处理返回键事件:

@Override
public void onBackPressed() {
    // 如果处于全屏状态,退出全屏
    if (playerView.onBackPressed()) {
        return;  // 已处理,不执行默认行为
    }
    super.onBackPressed();  // 未处理,执行默认行为
}
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
    // 如果处于全屏状态,退出全屏
    if (playerView.onBackPressed()) {
        return  // 已处理,不执行默认行为
    }
    super.onBackPressed()  // 未处理,执行默认行为
}
说明

各组件的完整API说明,请参阅API参考文档。核心接口调用流程请参阅核心能力文档。

方案二:场景层接入

场景层提供针对特定业务场景的完整播放解决方案,如长视频、短视频、直播等。场景层基于组件层封装,集成后即可开箱使用,无需额外开发。

步骤1:选择场景模块

场景模块位于playerkit-scenes目录下,当前包含:

场景模块

说明

scene-common

场景公共模块(必需,其他场景模块的基础依赖)。

scene-longvideo

中长视频场景:提供中长视频播放的完整解决方案。

scene-shortvideo

短视频场景:提供短视频滑动播放的完整解决方案。

scene-live

直播场景:提供直播播放的完整解决方案。

scene-playlist

列表播放场景:提供视频列表播放的完整解决方案。

步骤2:启动场景页面

场景模块集成完成后,可通过以下两种方式启动场景页面:

方式一:Intent跳转

// 跳转到中长视频场景
Intent intent = new Intent(this, LongVideoActivity.class);
startActivity(intent);
// 跳转到中长视频场景
val intent = Intent(this, LongVideoActivity::class.java)
startActivity(intent)

方式二:Schema跳转

场景模块支持通过Schema协议启动对应的播放场景。各场景的Schema定义在对应模块的AndroidManifest.xml中,可查看<intent-filter><data>标签获取具体协议地址。

例如,AndroidManifest.xml中的配置如下:

<data
    android:host="scenes"
    android:path="/longvideo"
    android:scheme="playerkit" />   

可以拼接得到对应的Schema地址:

playerkit://scenes/longvideo          
// 跳转到目标场景(替换为实际Schema)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("对应的Schema地址"));
startActivity(intent);
// 跳转到目标场景(替换为实际Schema)
val intent = Intent(Intent.ACTION_VIEW).apply {
    data = Uri.parse("对应的Schema地址")
}
startActivity(intent)

示例与扩展

通过以上步骤,您已经完成了AliPlayerKit的基础接入,并成功实现了视频播放。

如需查看更多示例,可参考以下目录:

  • playerkit-examples:提供常见API的使用示例。

  • playerkit-scenes:提供典型播放场景的解决方案。