跳转至

VideoPlayerService

Class Summary

OHOS::VideoPlayerService

视频播放服务类,提供视频播放、暂停、恢复、停止、跳转及状态查询等控制能力

  • 构造VideoPlayerService(std::string uri, bool isPureVideo)VideoPlayerService(int32_t fd, uint64_t offset, bool isPureVideo)
  • 成员函数

    接口名称 功能简述
    VideoPlayerService 通过 URI 构造视频播放服务对象
    VideoPlayerService 通过文件描述符构造视频播放服务对象
    Play 开始播放视频
    Stop 停止播放视频
    Pause 暂停播放视频
    Resume 恢复播放视频
    SeekTo 跳转到指定时间位置
    GetCurrentTime 获取当前播放时间
    GetVideoWidth 获取视频宽度
    GetVideoHeight 获取视频高度
    GetDuration 获取视频总时长
    SetPlaybackSpeed 设置播放倍速
    GetPlaybackSpeed 获取当前播放倍速
    IsPlaying 查询是否正在播放
    IsPaused 查询是否处于暂停状态
    IsLooping 查询是否处于循环播放模式
    EnableSingleLooping 设置单循环播放模式
    SetSurface 设置视频渲染 Surface
    SetUILabelButton 设置 UI 标签按钮控件
    GetDumpInfo 获取播放器调试信息
  • 使用包含头文件#include "video_player_service.h"

  • 声明头文件middleware/services/media/foundation/service/video_player_service/include/video_player_service.h
  • 公有运算符:无
  • 继承关系:无
  • 嵌套类型:无
  • 模板形参:无

Functions

OHOS::VideoPlayerService

VideoPlayerService(uri)

VideoPlayerService(std::string uri, bool isPureVideo)

功能说明

  • 通过 URI 地址构造视频播放服务对象,初始化内部 MediaVideoPlay 实例
  • URI 可指向本地文件路径或网络流地址
  • 构造时内部通过 new (std::nothrow) 创建 MediaVideoPlay 对象,若内存不足则内部指针为 nullptr

入参

名称 参数类型 详细说明 约束取值范围
uri std::string 视频源 URI 地址,入参只读,不修改所指对象 有效的本地文件路径或网络 URI
isPureVideo bool 是否为纯视频模式,入参只读 true:纯视频模式;false:音视频模式

VideoPlayerService(fd)

VideoPlayerService(int32_t fd, uint64_t offset, bool isPureVideo)

功能说明

  • 通过文件描述符和偏移量构造视频播放服务对象,初始化内部 MediaVideoPlay 实例
  • 适用于已打开的文件描述符场景,支持从指定偏移位置开始播放
  • 构造时内部创建 MediaVideoPlay 对象,绑定文件描述符与偏移量

入参

名称 参数类型 详细说明 约束取值范围
fd int32_t 文件描述符,入参只读 有效的已打开文件描述符,大于 0
offset uint64_t 文件偏移量,入参只读 0 ~ 文件大小范围内
isPureVideo bool 是否为纯视频模式,入参只读 true:纯视频模式;false:音视频模式

Play

int32_t Play(void)

功能说明

  • 核心用途:启动视频播放,内部创建播放线程并请求音频焦点
  • 设计目的:提供视频播放的启动入口,支持同步与异步退出模式
  • 使用场景:视频开始播放、恢复播放后的首次启动

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效
  • 当前未处于播放状态(isEntered_ 为 false)

返回值

  • 返回类型:int32_t

返回播放操作结果

返回值 触发场景
MEDIA_OK(0) 播放启动成功
MEDIA_ERR(-3) 内部播放器实例为空或播放线程创建失败

Stop

int32_t Stop(void)

功能说明

  • 核心用途:停止视频播放,内部停止播放器并释放资源
  • 设计目的:提供视频播放的停止控制接口
  • 使用场景:视频播放结束、用户主动停止播放

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效

返回值

  • 返回类型:int32_t

返回停止操作结果

返回值 触发场景
MEDIA_OK(0) 停止成功或视频已处于停止状态
MEDIA_ERR(-3) 内部播放器实例为空

Pause

int32_t Pause(void)

功能说明

  • 核心用途:暂停当前视频播放,保持播放位置
  • 设计目的:提供视频播放的暂停控制接口,暂停后可调用 Resume 恢复
  • 使用场景:用户主动暂停、音频焦点中断暂停

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效
  • 当前处于播放状态(isEntered_ 为 true)且未处于停止、完成或暂停状态

返回值

  • 返回类型:int32_t

返回暂停操作结果

返回值 触发场景
MEDIA_OK(0) 暂停成功
MEDIA_ERR(-3) 内部播放器实例为空或当前状态不允许暂停

Resume

int32_t Resume(void)

功能说明

  • 核心用途:恢复暂停的视频播放,从暂停位置继续播放
  • 设计目的:提供视频播放的恢复控制接口,与 Pause 配对使用
  • 使用场景:用户主动恢复播放、音频焦点恢复后继续播放

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效
  • 当前处于暂停状态(isPause_ 为 true)且未处于停止、完成状态

返回值

  • 返回类型:int32_t

返回恢复操作结果

返回值 触发场景
MEDIA_OK(0) 恢复成功
MEDIA_ERR(-3) 内部播放器实例为空或当前状态不允许恢复

SeekTo

int32_t SeekTo(int64_t mSeconds)

功能说明

  • 核心用途:将视频播放位置跳转到指定时间点
  • 设计目的:提供视频播放的随机访问能力,支持快进快退
  • 使用场景:进度条拖拽、章节跳转、快进快退

入参

名称 参数类型 详细说明 约束取值范围
mSeconds int64_t 目标跳转时间,单位为毫秒,入参只读 0 ~ 视频总时长

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效

返回值

  • 返回类型:int32_t

返回跳转操作结果

返回值 触发场景
MEDIA_OK(0) 跳转成功
MEDIA_ERR(-3) 内部播放器实例为空或跳转失败

GetCurrentTime

int32_t GetCurrentTime(int64_t *currentTime)

功能说明

  • 核心用途:获取当前视频播放位置的时间
  • 设计目的:提供播放进度查询能力
  • 使用场景:进度条更新、播放时间显示

入参

名称 参数类型 详细说明 约束取值范围
currentTime int64_t * 出参指针,由被调用方写入当前播放时间(毫秒),不可为 nullptr 非 nullptr,指向有效内存

出参

名称 数据类型 输出说明
currentTime int64_t 当前播放位置时间,单位为毫秒

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效
  • currentTime 指针不为 nullptr

返回值

  • 返回类型:int32_t

返回查询操作结果

返回值 触发场景
MEDIA_OK(0) 获取成功
MEDIA_ERR(-3) 内部播放器实例为空或获取失败

GetVideoWidth

int32_t GetVideoWidth(void)

功能说明

  • 核心用途:获取视频画面的宽度
  • 设计目的:提供视频分辨率查询能力
  • 使用场景:视频渲染布局、分辨率适配

返回值

  • 返回类型:int32_t

返回视频宽度值

返回值 触发场景
0 当前实现固定返回 0

GetVideoHeight

int32_t GetVideoHeight(void)

功能说明

  • 核心用途:获取视频画面的高度
  • 设计目的:提供视频分辨率查询能力
  • 使用场景:视频渲染布局、分辨率适配

返回值

  • 返回类型:int32_t

返回视频高度值

返回值 触发场景
0 当前实现固定返回 0

GetDuration

int32_t GetDuration(int64_t &duration)

功能说明

  • 核心用途:获取视频总时长
  • 设计目的:提供视频时长查询能力
  • 使用场景:进度条总长计算、播放时间显示

入参

名称 参数类型 详细说明 约束取值范围
duration int64_t & 出参引用,由被调用方写入视频总时长(毫秒) 有效引用

出参

名称 数据类型 输出说明
duration int64_t 视频总时长,单位为毫秒

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效

返回值

  • 返回类型:int32_t

返回查询操作结果

返回值 触发场景
MEDIA_OK(0) 获取成功
MEDIA_ERR(-3) 内部播放器实例为空或获取失败

SetPlaybackSpeed

int32_t SetPlaybackSpeed(PlaybackRateMode mode)

功能说明

  • 核心用途:设置视频播放倍速
  • 设计目的:提供倍速播放控制接口
  • 使用场景:快进播放、慢放回放

入参

名称 参数类型 详细说明 约束取值范围
mode PlaybackRateMode 播放倍速模式,入参只读 PlaybackRateMode 枚举值

返回值

  • 返回类型:int32_t

返回设置操作结果

返回值 触发场景
0 当前实现固定返回 0

GetPlaybackSpeed

int32_t GetPlaybackSpeed(PlaybackRateMode &mode)

功能说明

  • 核心用途:获取当前视频播放倍速
  • 设计目的:提供倍速状态查询能力
  • 使用场景:倍速设置确认、UI 状态同步

入参

名称 参数类型 详细说明 约束取值范围
mode PlaybackRateMode & 出参引用,由被调用方写入当前倍速模式 有效引用

出参

名称 数据类型 输出说明
mode PlaybackRateMode 当前播放倍速模式

返回值

  • 返回类型:int32_t

返回查询操作结果

返回值 触发场景
0 当前实现固定返回 0

IsPlaying

bool IsPlaying(void)

功能说明

  • 核心用途:查询视频是否正在播放中
  • 设计目的:提供播放状态查询能力
  • 使用场景:播放状态判断、UI 状态更新

返回值

  • 返回类型:bool

返回播放状态标志

返回值 触发场景
true 视频正在播放中(isEntered_ 为 true)
false 内部播放器实例为空或视频未在播放

IsPaused

bool IsPaused(void)

功能说明

  • 核心用途:查询视频是否处于暂停状态
  • 设计目的:提供暂停状态查询能力
  • 使用场景:暂停状态判断、UI 暂停按钮显示

返回值

  • 返回类型:bool

返回暂停状态标志

返回值 触发场景
true 视频处于暂停状态(isPause_ 为 true)
false 内部播放器实例为空或视频未暂停

IsLooping

bool IsLooping(void)

功能说明

  • 核心用途:查询视频是否处于循环播放模式
  • 设计目的:提供循环播放状态查询能力
  • 使用场景:循环模式判断、UI 循环按钮状态显示

返回值

  • 返回类型:bool

返回循环播放状态标志

返回值 触发场景
true 处于循环播放模式(isLoop_ 为 true)
false 内部播放器实例为空或未开启循环播放

EnableSingleLooping

void EnableSingleLooping(bool isLoop)

功能说明

  • 核心用途:设置或取消单循环播放模式
  • 设计目的:提供循环播放控制接口,与 IsLooping 配对使用
  • 使用场景:循环播放开关、播放列表循环控制

入参

名称 参数类型 详细说明 约束取值范围
isLoop bool 是否启用单循环播放,入参只读 true:启用循环;false:取消循环

SetSurface

void SetSurface(Surface *surface)

功能说明

  • 核心用途:设置视频渲染的 Surface 对象
  • 设计目的:提供视频画面渲染目标设置接口
  • 使用场景:视频渲染窗口绑定、Surface 切换

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效
  • 视频未处于播放状态(isEntered_ 为 false)

入参

名称 参数类型 详细说明 约束取值范围
surface Surface * Surface 指针,入参指针,由调用方提供,被调用方不接管所有权 非 nullptr,指向有效的 Surface 对象

SetUILabelButton

void SetUILabelButton(UILabelButton *button)

功能说明

  • 核心用途:设置与视频播放关联的 UI 标签按钮控件
  • 设计目的:提供播放控制 UI 绑定接口,播放器自动更新按钮文本
  • 使用场景:播放/暂停按钮绑定、UI 控件联动

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效
  • 视频未处于播放状态(isEntered_ 为 false)

入参

名称 参数类型 详细说明 约束取值范围
button UILabelButton * UILabelButton 指针,入参指针,由调用方提供,被调用方不接管所有权 非 nullptr,指向有效的 UILabelButton 对象

GetDumpInfo

int32_t GetDumpInfo(Media::PlayerDebugInfo *playerInfo)

功能说明

  • 核心用途:获取播放器调试信息,包含文件、视频流、音频流及播放控制状态
  • 设计目的:提供播放器运行状态诊断能力
  • 使用场景:故障排查、性能分析、播放状态调试

入参

名称 参数类型 详细说明 约束取值范围
playerInfo Media::PlayerDebugInfo * 出参指针,由被调用方写入调试信息,不可为 nullptr 非 nullptr,指向有效内存

出参

名称 数据类型 输出说明
playerInfo Media::PlayerDebugInfo 播放器调试信息,包含文件信息、视频流信息、音频流信息及播放控制信息

前置条件

  • VideoPlayerService 对象已通过构造函数完成构造且内部 MediaVideoPlay 实例有效
  • playerInfo 指针不为 nullptr

返回值

  • 返回类型:int32_t

返回获取操作结果

返回值 触发场景
MEDIA_OK(0) 获取成功
MEDIA_ERR(-3) 内部播放器实例为空或获取失败

Enumerations

PlaybackRateMode

enum PlaybackRateMode : int32_t {
    SPEED_FORWARD_0_25_X,
    SPEED_FORWARD_0_50_X,
    SPEED_FORWARD_0_75_X,
    SPEED_FORWARD_1_00_X,
    SPEED_FORWARD_1_25_X,
    SPEED_FORWARD_1_50_X,
    SPEED_FORWARD_1_75_X,
    SPEED_FORWARD_2_00_X,
    SPEED_FORWARD_4_00_X,
    SPEED_FORWARD_8_00_X,
    SPEED_FORWARD_16_00_X,
    SPEED_FORWARD_32_00_X,
    SPEED_FORWARD_64_00_X,
    SPEED_REWIND_64_X,
    SPEED_REWIND_32_X,
    SPEED_REWIND_16_X,
    SPEED_REWIND_8_X,
    SPEED_REWIND_4_X,
    SPEED_REWIND_2_X,
    SPEED_REWIND_1_X,
};
枚举成员 取值 描述
SPEED_FORWARD_0_25_X 0 0.25 倍速正向播放
SPEED_FORWARD_0_50_X 1 0.5 倍速正向播放
SPEED_FORWARD_0_75_X 2 0.75 倍速正向播放
SPEED_FORWARD_1_00_X 3 1.0 倍速正向播放(正常速度)
SPEED_FORWARD_1_25_X 4 1.25 倍速正向播放
SPEED_FORWARD_1_50_X 5 1.5 倍速正向播放
SPEED_FORWARD_1_75_X 6 1.75 倍速正向播放
SPEED_FORWARD_2_00_X 7 2.0 倍速正向播放
SPEED_FORWARD_4_00_X 8 4.0 倍速正向播放
SPEED_FORWARD_8_00_X 9 8.0 倍速正向播放
SPEED_FORWARD_16_00_X 10 16.0 倍速正向播放
SPEED_FORWARD_32_00_X 11 32.0 倍速正向播放
SPEED_FORWARD_64_00_X 12 64.0 倍速正向播放
SPEED_REWIND_64_X 13 64 倍速倒退
SPEED_REWIND_32_X 14 32 倍速倒退
SPEED_REWIND_16_X 15 16 倍速倒退
SPEED_REWIND_8_X 16 8 倍速倒退
SPEED_REWIND_4_X 17 4 倍速倒退
SPEED_REWIND_2_X 18 2 倍速倒退
SPEED_REWIND_1_X 19 1 倍速倒退