介绍

本示例主要展示了网络视频播放的相关功能。使用@ohos.multimedia.avsession等接口实现视频播放的功能。

效果预览

主页

OpenHarmony 视频播放开发指南~_移动开发

使用说明
  1. 点击播放按钮,应用的播放状态发生变化。
  2. 点击暂停按钮,应用的播放状态开始变化。
  3. 点击上一个按钮,界面展示播放列表中的上一个视频的信息。
  4. 点击下一下按钮,界面展示播放列表中的下一个视频的信息。

工程目录

给出项目中关键的目录结构并描述它们的作用,示例如下:

entry/src/main/ets/
|---common                             // 方法封装
|---|---AudioFrameworkTest.ets
|---|---AudioUtils.ets                 // 控制器封装
|---|---CommonUtils.ets                // 格式化时间封装
|---|---Constants.ets                  // 媒体资源信息
|---|---Log.ets                        // 日志封装
|---|---PermissionUtils.ets            // 权限封装
|---entryability              
|---|---EntryAbility.ets               
|---pages
|---|---Index.ets                      // 界面实现
|---|---components
|---|---|---SongItem.ets               // 视频列表组件

具体实现

  • 界面相关的实现都封装在pages/Index.ets下,源码参考:pages/Index.ets
  • 使用@State来设置与逻辑代码同步更新的变量,当逻辑代码中对应的变量更新时,界面会同步的刷新。
  • 通过引入逻辑代码对应的类,创建出对象,实现对onClick事件的响应,关键代码段:
import media from '@ohos.multimedia.media';     // 引入
      
      this.avPlayer = await media.createAVPlayer();  // 创建对象
      
      this.controller = await this.session.getController();  // 通过类的对象来调用逻辑代码
  • 逻辑相关的实现都封装在common/MediaController.ets下,源码参考:common/AudioUtils.ets

应用的初始化相关操作

  • 链接变量

使用@State来设置与逻辑代码同步更新,关键代码段:

@State session: avSession.AVSession = null;
      @State controller: avSession.AVSessionController = null;
      private avPlayer: media.AVPlayer;
      @State @Watch('playInfoUpdated') currentPlayInfo: avSession.AVMediaDescription = undefined;
      this.currentPlayInfo = temp;
      this.avPlayer = await this.audioUtils.init();
  • 获取当前设备中会话并创建Controller

通过接口audioUtils.init()获取当前设备中的媒体会话;

通过接口session.getController()创建媒体会话对应的控制器;

通过接口on(play | pause | stop | playNext | playPrevious | seek)开启对远程以及播控中心提供方发送事件的监听,对事件进行处理;

应用在运行中相关的操作

  • 从远程以及播控中心获取基础控制命令

基础控制命令可以通过监听事件setListenerForMesFromController()。本示例中,从媒体控制方到媒体提供方的基础控制命令主要包括play, pause, playPrevious, playNext。发送命令的参考代码如下:

let command : AVSessionManager.AVControlCommand = {
        command : 'play',
        parameter : undefined
      } // 构造AVControlCommand参数
      async setListenerForMesFromController(); // 媒体会话控制器与媒体会话一一对应
  • 获取自定义会话数据(以获取视频为例)

说明:

本示例中,用户点击“下一个视频”的命令,会在将视频信息更新。

视频使用接口switchToNextByLoopMode()更新视频信息,示例代码如下:

this.currentIndex = this.currentIndex  === this.songList.length - 1 ? 0 : this.currentIndex + 1;
      this.updateCurrentPlayInfo(this.songList[this.currentIndex], this.audioType);

经常有很多小伙伴抱怨说:不知道学习鸿蒙开发哪些技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?

为了能够帮助到大家能够有规划的学习,这里特别整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。

OpenHarmony 视频播放开发指南~_移动开发_02

《鸿蒙 (Harmony OS)开发学习手册》(共计892页)

如何快速入门?

1.基本概念
2.构建第一个ArkTS应用
3.……

OpenHarmony 视频播放开发指南~_openharmony_03

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

OpenHarmony 视频播放开发指南~_openharmony_04

基于ArkTS 开发

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

OpenHarmony 视频播放开发指南~_openharmony_05

OpenHarmony 视频播放开发指南~_鸿蒙开发_06

OpenHarmony 开发环境搭建

OpenHarmony 视频播放开发指南~_前端_07

《OpenHarmony源码解析》

  • 搭建开发环境
  • Windows 开发环境的搭建
  • Ubuntu 开发环境搭建
  • Linux 与 Windows 之间的文件共享
  • ……
  • 系统架构分析
  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调度子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……

OpenHarmony 视频播放开发指南~_音视频_08

OpenHarmony 设备开发学习手册

OpenHarmony 视频播放开发指南~_移动开发_09

OpenHarmony 视频播放开发指南~_openharmony_10