跳转至

StreamSourcePlayerService

Class Summary

OHOS::StreamSourcePlayerCallback

流媒体播放器事件回调接口,用于接收播放中断、错误、信息及播放完成通知

  • 构造: 无
  • 成员函数

    接口名称 功能简述
    OnInterrupt 音频中断事件回调,通知中断类型与提示
    OnError 播放错误事件回调,通知错误类型与错误码
    OnInfo 播放信息事件回调,通知信息类型与附加码
    OnPlaybackComplete 播放完成事件回调
  • 使用包含头文件#include "stream_source_player_service.h"

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

OHOS::StreamSourcePlayerService

流媒体源播放器服务,封装流式数据源与播放器的协同控制,提供流缓冲区管理与播放生命周期管理

  • 构造: 无
  • 成员函数

    接口名称 功能简述
    SetPlayerCallback 设置播放器事件回调对象
    SetAudioStreamType 设置音频流类型
    SetStreamSourceInfo 设置流媒体源格式信息
    SetVideoSurface 设置视频渲染 Surface
    Start 启动流媒体播放
    Stop 停止流媒体播放并释放资源
    Pause 暂停流媒体播放
    Resume 恢复流媒体播放
    OnBufferAvailable 通知可用缓冲区信息
    SetStreamCallback 设置流数据回调对象
    GetBufferAddress 获取指定索引缓冲区的虚拟地址
    QueueBuffer 将已填充的缓冲区提交到播放队列
    GetAvailableBuffer 获取可用缓冲区信息
    GetPlayStatus 获取当前播放状态
    IsPlaying 查询是否正在播放
    GetDuration 获取媒体总时长
  • 使用包含头文件#include "stream_source_player_service.h"

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

Functions

OHOS::StreamSourcePlayerCallback

OnInterrupt

virtual void OnInterrupt(int32_t type, int32_t hint) = 0

功能说明

  • 核心用途:音频中断事件回调,当播放器被其他音频流中断时触发
  • 设计目的:为上层应用提供音频焦点中断通知,支持中断类型与提示的区分处理
  • 使用场景:来电中断媒体播放、语音助手抢占音频焦点等场景

入参

名称 参数类型 详细说明 约束取值范围
type int32_t 中断类型 -
hint int32_t 中断提示 -

OnError

virtual void OnError(int32_t errorType, int32_t errorCode) = 0

功能说明

  • 核心用途:播放错误事件回调,当播放过程中发生错误时触发
  • 设计目的:为上层应用提供播放异常通知,支持错误类型与错误码的区分
  • 使用场景:解码失败、数据读取超时、文件格式不支持等错误场景

入参

名称 参数类型 详细说明 约束取值范围
errorType int32_t 错误类型 -
errorCode int32_t 错误码 -

OnInfo

virtual void OnInfo(int32_t type, int32_t extra) = 0

功能说明

  • 核心用途:播放信息事件回调,当播放过程中产生信息通知时触发
  • 设计目的:为上层应用提供播放状态信息通知,支持信息类型与附加码的区分
  • 使用场景:播放开始、播放结束、定位开始、定位结束等状态通知

入参

名称 参数类型 详细说明 约束取值范围
type int32_t 信息类型 -
extra int32_t 附加信息码 -

OnPlaybackComplete

virtual void OnPlaybackComplete() = 0

功能说明

  • 核心用途:播放完成事件回调,当媒体流播放到末尾时触发
  • 设计目的:为上层应用提供播放结束通知,支持自动循环或资源释放等后续处理
  • 使用场景:流媒体数据播放完成、EOS 标志到达后触发

OHOS::StreamSourcePlayerService

SetPlayerCallback

void SetPlayerCallback(const std::shared_ptr<StreamSourcePlayerCallback> &cb)

功能说明

  • 核心用途:设置播放器事件回调对象,用于接收播放中断、错误、信息及播放完成通知
  • 设计目的:将上层业务回调注册到播放器服务中,实现事件通知的向上传递
  • 使用场景:在调用 Start 前注册回调,用于处理播放过程中的中断、错误与完成事件

入参

名称 参数类型 详细说明 约束取值范围
cb const std::shared_ptr & 入参只读引用,播放器事件回调智能指针 有效 StreamSourcePlayerCallback 对象

SetAudioStreamType

int32_t SetAudioStreamType(AudioStreamType type)

功能说明

  • 核心用途:设置音频流类型,用于音频焦点管理策略的判定
  • 设计目的:在播放前指定音频流类型,确保音频中断策略与业务场景匹配
  • 使用场景:在 Start 前调用,指定当前播放流的类型(如媒体音、健身视频音)

入参

名称 参数类型 详细说明 约束取值范围
type AudioStreamType 音频流类型 AUDIO_STREAM_MUSIC / AUDIO_STREAM_FITNESS_VIDEO

返回值

  • 返回类型:int32_t

返回设置结果

返回值 触发场景
MEDIA_OK(0) 设置成功
MEDIA_INVALID_PARAM(-1) 传入的音频流类型不在合法范围内

SetStreamSourceInfo

int32_t SetStreamSourceInfo(Format &formats)

功能说明

  • 核心用途:设置流媒体源的格式信息,用于播放器初始化时的数据源配置
  • 设计目的:在播放前将流媒体格式参数拷贝到服务内部,供 PreparePlayer 构造 Source 时使用
  • 使用场景:在 Start 前调用,设置流数据源的编码格式、采样率等参数

入参

名称 参数类型 详细说明 约束取值范围
formats Format & 入参引用,流媒体格式信息 有效的 Format 对象

返回值

  • 返回类型:int32_t

返回设置结果

返回值 触发场景
MEDIA_OK(0) 设置成功

SetVideoSurface

int32_t SetVideoSurface(Surface *surface)

功能说明

  • 核心用途:设置视频渲染 Surface,用于视频帧的显示输出
  • 设计目的:在播放前指定视频渲染目标,播放器 Prepare 时将 Surface 传递给底层
  • 使用场景:在 Start 前调用,设置视频渲染目标 Surface

入参

名称 参数类型 详细说明 约束取值范围
surface Surface * 入参指针,视频渲染 Surface 非 nullptr,有效的 Surface 对象

返回值

  • 返回类型:int32_t

返回设置结果

返回值 触发场景
MEDIA_OK(0) 设置成功
MEDIA_INVALID_PARAM(-1) 传入 surface 为 nullptr

Kconfig 配置

配置项 说明 默认值
ENABLE_UIKIT 启用 UIKIT 视频渲染支持 n

Start

int32_t Start(void)

功能说明

  • 核心用途:启动流媒体播放,初始化播放器并开始播放
  • 设计目的:将播放状态从 IDLE 转换为 PLAYED,内部执行 InitPlayer、PreparePlayer、Play 三步流程
  • 使用场景:完成 SetStreamSourceInfo/SetAudioStreamType/SetVideoSurface 等配置后调用

前置条件

  • 播放器状态必须为 STREAM_SOURCE_PLAYER_IDLE
  • 已调用 SetStreamSourceInfo 设置流源格式信息
  • 已调用 SetAudioStreamType 设置音频流类型

返回值

  • 返回类型:int32_t

返回启动结果

返回值 触发场景
MEDIA_OK(0) 启动成功
MEDIA_ERR(-3) 状态非 IDLE;初始化播放器失败;准备播放器失败;开始播放失败

Stop

int32_t Stop(void)

功能说明

  • 核心用途:停止流媒体播放,释放播放器资源
  • 设计目的:将播放状态转换为 STOPED,内部依次调用 Player 的 Stop、Reset、Release
  • 使用场景:播放完成或需要结束播放时调用,IDLE 状态也允许调用

返回值

  • 返回类型:int32_t

返回停止结果

返回值 触发场景
MEDIA_OK(0) 停止成功;已处于 STOPED 状态;播放器对象为 nullptr

Pause

int32_t Pause(void)

功能说明

  • 核心用途:暂停流媒体播放
  • 设计目的:将播放状态从 PLAYED 转换为 PAUSED,暂停播放器输出
  • 使用场景:用户主动暂停、音频中断暂停等场景

前置条件

  • 播放器状态必须为 STREAM_SOURCE_PLAYER_PLAYED

返回值

  • 返回类型:int32_t

返回暂停结果

返回值 触发场景
MEDIA_OK(0) 暂停成功
MEDIA_ERR(-3) 状态非 PLAYED;Player Pause 失败

Resume

int32_t Resume(void)

功能说明

  • 核心用途:恢复流媒体播放
  • 设计目的:将播放状态从 PAUSED 转换为 PLAYED,恢复播放器输出
  • 使用场景:用户主动恢复、音频中断恢复等场景

前置条件

  • 播放器状态必须为 STREAM_SOURCE_PLAYER_PAUSED

返回值

  • 返回类型:int32_t

返回恢复结果

返回值 触发场景
MEDIA_OK(0) 恢复成功
MEDIA_ERR(-3) 状态非 PAUSED;Player Play 恢复失败

OnBufferAvailable

void OnBufferAvailable(size_t index, size_t offset, size_t size, int32_t flag) override

功能说明

  • 核心用途:当播放器有可用缓冲区时回调,通知应用层可填充数据
  • 设计目的:实现 StreamSource 接口,将可用缓冲区信息存入内部队列供 GetAvailableBuffer 读取
  • 使用场景:播放器内部检测到空闲缓冲区时自动回调,应用层通过 GetAvailableBuffer 获取信息

入参

名称 参数类型 详细说明 约束取值范围
index size_t 缓冲区索引 -
offset size_t 数据写入起始偏移 -
size size_t 缓冲区可存储数据大小 -
flag int32_t 缓冲区标志 -

SetStreamCallback

void SetStreamCallback(const std::shared_ptr<StreamCallback> &callback) override

功能说明

  • 核心用途:设置流数据回调对象,用于获取缓冲区地址与提交已填充缓冲区
  • 设计目的:实现 StreamSource 接口,将播放器提供的 StreamCallback 保存为弱引用,供 GetBufferAddress 和 QueueBuffer 使用
  • 使用场景:播放器内部在 SetSource 后调用,注册流数据操作回调

入参

名称 参数类型 详细说明 约束取值范围
callback const std::shared_ptr & 入参只读引用,流数据回调智能指针 有效 StreamCallback 对象

GetBufferAddress

uint8_t *GetBufferAddress(size_t idx)

功能说明

  • 核心用途:获取指定索引缓冲区的虚拟地址
  • 设计目的:通过 StreamCallback 获取播放器分配的缓冲区地址,供应用层写入流数据
  • 使用场景:应用层获取可用缓冲区后,调用此接口获取缓冲区地址以写入数据

入参

名称 参数类型 详细说明 约束取值范围
idx size_t 缓冲区索引 -

返回值

  • 返回类型:uint8_t *

返回缓冲区虚拟地址

返回值 触发场景
非 nullptr 成功获取缓冲区地址
nullptr StreamCallback 弱引用已失效

QueueBuffer

void QueueBuffer(size_t index, size_t offset, size_t size, int64_t timestampUs, uint32_t flags)

功能说明

  • 核心用途:将已填充数据的缓冲区提交到播放器队列
  • 设计目的:通过 StreamCallback 将应用层已写入数据的缓冲区提交给播放器进行解码播放
  • 使用场景:应用层向缓冲区写入数据后,调用此接口提交缓冲区

入参

名称 参数类型 详细说明 约束取值范围
index size_t 缓冲区索引 -
offset size_t 数据写入起始偏移 -
size size_t 已填充数据大小 -
timestampUs int64_t 帧时间戳(微秒),AAC 流设为 0 -
flags uint32_t 缓冲区标志 STREAM_FLAG_SYNCFRAME / STREAM_FLAG_CODECCONFIG / STREAM_FLAG_EOS / STREAM_FLAG_PARTIAL_FRAME / STREAM_FLAG_ENDOFFRAME / STREAM_FLAG_MUXER_DATA

GetAvailableBuffer

int32_t GetAvailableBuffer(IdleBuffer *buffer)

功能说明

  • 核心用途:获取可用缓冲区信息,从内部队列中取出一个可用缓冲区
  • 设计目的:将 OnBufferAvailable 回调存入的缓冲区信息提供给应用层,供应用层获取可写入的缓冲区
  • 使用场景:应用层在收到缓冲区可用通知后,调用此接口获取缓冲区索引、偏移、大小等信息

入参

名称 参数类型 详细说明 约束取值范围
buffer IdleBuffer * 入参指针,出参载体,存放可用缓冲区信息 非 nullptr

出参

名称 数据类型 输出说明
buffer IdleBuffer 出参指针,由被调用方写入可用缓冲区信息

返回值

  • 返回类型:int32_t

返回获取结果

返回值 触发场景
0 成功获取可用缓冲区信息
MEDIA_ERR(-3) buffer 为 nullptr
-1 可用缓冲区队列为空

GetPlayStatus

int32_t GetPlayStatus(void)

功能说明

  • 核心用途:获取当前播放器状态
  • 设计目的:将内部状态枚举转换为 int32_t 返回,供上层查询播放器当前状态
  • 使用场景:上层轮询播放器状态、UI 状态同步等场景

返回值

  • 返回类型:int32_t

返回播放状态,对应 StreamSourcePlayerStates 枚举值

返回值 触发场景
0 STREAM_SOURCE_PLAYER_IDLE
1 STREAM_SOURCE_PLAYER_PAUSED
2 STREAM_SOURCE_PLAYER_PLAYED
3 STREAM_SOURCE_PLAYER_STOPED

IsPlaying

bool IsPlaying(void)

功能说明

  • 核心用途:查询播放器是否正在播放
  • 设计目的:直接委托 Player 对象的 IsPlaying 方法返回播放状态
  • 使用场景:上层需要快速判断当前是否处于播放状态

返回值

  • 返回类型:bool

返回播放状态

返回值 触发场景
true 播放器正在播放
false 播放器未在播放;播放器对象为 nullptr

GetDuration

int32_t GetDuration(int64_t &durationMs)

功能说明

  • 核心用途:获取媒体总时长
  • 设计目的:委托 Player 对象获取媒体总时长,通过出参返回毫秒级时长
  • 使用场景:上层需要显示播放进度或总时长

入参

名称 参数类型 详细说明 约束取值范围
durationMs int64_t & 入参引用,出参载体,存储媒体总时长(毫秒) -

出参

名称 数据类型 输出说明
durationMs int64_t 出参引用,由被调用方写入媒体总时长(毫秒)

返回值

  • 返回类型:int32_t

返回获取结果

返回值 触发场景
MEDIA_OK(0) 成功获取时长
MEDIA_ERR(-3) 播放器对象为 nullptr

Enumerations

StreamSourcePlayerStates

enum class StreamSourcePlayerStates : int32_t {
    STREAM_SOURCE_PLAYER_IDLE,
    STREAM_SOURCE_PLAYER_PAUSED,
    STREAM_SOURCE_PLAYER_PLAYED,
    STREAM_SOURCE_PLAYER_STOPED,
};
枚举成员 取值 描述
STREAM_SOURCE_PLAYER_IDLE 0 空闲状态,播放器未初始化
STREAM_SOURCE_PLAYER_PAUSED 1 暂停状态
STREAM_SOURCE_PLAYER_PLAYED 2 播放状态
STREAM_SOURCE_PLAYER_STOPED 3 停止状态

Structures

IdleBuffer

typedef struct TagIdleBuffer {
    size_t idx;
    size_t offset;
    size_t size;
    int32_t flag;
} IdleBuffer;

成员说明

成员名称 数据类型 描述
idx size_t 缓冲区索引
offset size_t 数据写入起始偏移
size size_t 缓冲区可存储数据大小
flag int32_t 缓冲区标志