多媒体
更新时间:2021-06-17
ARMediaController
媒体控制器类, 用于创建/管理所有媒体播放会话。
Public methods | |
---|---|
ARMediaController | create_media_session 创建一个音乐播放会话 |
create_media_session
API起始版本:190
ARMediaSession* create_media_session(const std::string &media_type,std::string &path, LUA_TABLE configs);
创建一个音乐播放会话
Parameters
- string | media_type : 要创建的媒体类型,可用类型名包括"audio"、"video"、"image_sequence"
- string | path : 要播放的音频文件的路径名 (相对路径)或网络URL,格式为mp3
- ARLuaTable | configs : key-value的方式存储的配置信息。可用的配置项如下
key | type | meaning | defult-value |
---|---|---|---|
repeat_count | int | 重复次数 | 默认值为1,0为无限循环 |
delay | int | 延迟开始时间(ms) | 0 |
is_remote | int | 是否是远程音频资源 | 0 |
from_time | int | 起始播放位置(ms) | 0 |
sample:
local config = {}
config["repeat_count"] = 0
config["delay"] = 500
config["is_remote"] = 1
config["from_time"] = 1000
local node_name = scene:get_node_by_name("node_name")
local media_controller = node_name:get_media_controller()
local audio_session = media_controller:create_media_session("audio","http://arplay-testing-ground.bj.bcebos.com/canon-D.mp3", config)
ARMediaSession
媒体播放会话类,用于管理一次媒体(音频、视频、图片帧序列)播放过程
Public methods | |
---|---|
ARMediaSession | set_session_state_handler 设置MediaSession的状态回调 |
ARMediaSession | Key-Value Coding support KVC支持 |
set_state_handler
API起始版本:190
void set_state_handler(ARLuaFunction handler)
设置MediaSession的状态回调,当状态发生变化时回调到此方法(目前仅Session结束时会回调: state = "finished, canceled, failed")
Parameters
- ARLuaFunction | handler : 一个原生的Lua Function,带2个参数,session_id和对应的状态state
sample:
local config = {}
config["repeat_count"] = 0
config["delay"] = 500
config["is_remote"] = 1
config["from_time"] = 1000
function state_handler(session_id, state)
io.wirte("state of session " + tostring(session_id) + " changed to" + state)
end
local node_name = scene:get_node_by_name("node_name")
local media_controller = node_name:get_media_controller()
local audio_session = media_controller:create_media_session("audio", "http://arplay-testing-ground.bj.bcebos.com/canon-D.mp3", config)
audio_session:set_state_handler(state_handler)
--------------------------------------------------------
audio_session:play()
audio_session:pause()
audio_session:stop()
Key-Value Coding support
API起始版本:190
get_property
void get_property_int(std::string &key) const;
void get_property_float(std::string &key) const;
void get_property_string(std::string &key) const;
key | type | defult-value | meaning |
---|---|---|---|
session_id | int | 无 | 当前播放会话的id,用于唯一标识一次播放过程 |
host_name | string | 无 | 对应节点的名字 |
invalidated | bool | false | 当前会话是否已失效 |
media_type | string | 无 | 媒体类型("audio"/"video"/"image_sequence") |
duration | int | 0 | 媒体文件时长,仅media_type = "audio"/"video"时可用 |
play_status | string | "unstarted" | 当前播放状态("unstarted"/"prepared"/"playing"/"paused"/"finished"),仅media_type = "audio"/"video"时可用 |
play_progress | float | 0.0 | 当前播放进度(0.00--1.00),仅media_type = "audio"/"video"时可用 |
buffer_status | string | "unstarted" | 当前缓冲状态("unstarted"/"buffer_start"/"buffer_end"),仅media_type = "audio"/"video",且在播放在线媒体资源时可用 |
buffer_progress | float | 0.0 | 当前缓冲进度(0.00--1.00),仅media_type = "audio"/"video",且在播放在线媒体资源时可用 |
ARMusicPlayer
独立的音乐播放器工具类,音乐播放不受ARApplication的生命周期控制,不会随着Application暂停/恢复而暂停恢复,常用于长时音乐播放,如背景音乐播放的场景。
Public methods | |
---|---|
ARMusicPlayer | play_music 音乐播放控制 |
play_music
API起始版本:190
void play_music(std::string &path, LUA_TABLE configs)
Parameters
- string | path : 要播放的音频文件的路径名 (相对路径)或网络URL,格式为mp3.
- LUA_TABLE | configs key-value的方式存储的配置信息。可用的配置项如下
key | type | meaning | defult-value |
---|---|---|---|
repeat_count | int | 重复次数 | 默认值为1,0为无限循环 |
delay | int | 延迟开始时间(ms) | 0 |
is_remote | int | 是否为本地音频资源 | 0 |
from_time | int | 播放起始位置(ms) | 0 |
sample:
local player = ae.ARMusicPlayer:get_instance()
local config = {}
config["repeat_count"] = -1
config["delay"] = 5000
player:play_music("media/almost_lover.mp3", config)
---------------------------------------------------
--暂停播放
player:pause()
--恢复播放
player:resume()
--停止播放
player:stop()