MediaPlayer class

@brief 媒体播放器

Inheritance

Constructors

MediaPlayer(int playerId)

Properties

$instance → dynamic
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
playerId int
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

$createInstance(List args) → dynamic
Factory method for creating instances
override
$destroy() → void
inherited
$init(List args) → void
inherited
findOverrideIndices(List args, List<List<int>> indicesList) List<int>
查找重载参数下标列表 @desc android 构造函数存在重载 此方法通过实际传入参数与构造函数参数列表集合的比对,来获取当前实际的需要使用的参数列表
inherited
fn2AndroidClass(Function callback, dynamic nativeClass(), String methodName) → dynamic
与 ts runtime 中的 fn2AndroidClass 功能一致 将 Dart 函数转换为 Android 回调类实例供 Android 侧使用
inherited
getAudioTrackCount() Future<int?>
@detail api @brief 获取当前音乐文件的音轨数 @return + >= 0:成功,返回当前音乐文件的音轨数 - < 0:方法调用失败 @note - 仅在音频播放进行状态时,调用此方法。 - 此方法仅支持音乐文件,不支持 PCM 数据。
inherited
getPlaybackDuration() Future<int?>
@detail api @brief 获取混音音乐文件的实际播放时长,单位为毫秒。 @return - >0: 实际播放时长。 - < 0: 失败。 @note - 实际播放时长指的是歌曲不受停止、跳转、倍速、卡顿影响的播放时长。例如,若歌曲正常播放到 1:30 时停止播放 30s 或跳转进度到 2:00, 随后继续正常播放 2 分钟,则实际播放时长为 3 分 30 秒。 - 仅在音频播放进行状态,且 setProgressInterval{@link #IMediaPlayer#setProgressInterval} 设置间隔大于 0 时,调用此方法。 - 此接口仅支持音频文件,不支持 PCM 数据。
inherited
getPosition() Future<int?>
@detail api @brief 获取音乐文件播放进度。 @return - >0: 成功, 音乐文件播放进度,单位为毫秒。 - < 0: 失败 @note - 仅在音频播放进行状态时,调用此方法。 - 此接口仅支持音频文件,不支持 PCM 数据。
inherited
getState() Future<PlayerState>
@brief 获取媒体播放器状态
override
getTotalDuration() Future<int?>
@detail api @brief 获取音乐文件时长。 @return - >0: 成功, 音乐文件时长,单位为毫秒。 - < 0: 失败 @note - 仅在音频播放进行状态时,调用此方法。 - 此接口仅支持音频文件,不支持 PCM 数据。
inherited
getVolume(AudioMixingType type) Future<int?>
@detail api @brief 获取当前音量 @param type 详见 AudioMixingType{@link #AudioMixingType}。 @return - >0: 成功, 当前音量值。 - < 0: 失败 @note 仅在音频播放进行状态时,调用此方法。包括音乐文件混音和 PCM 混音。
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
open(string filePath, MediaPlayerConfig config) Future<int?>
@detail api @brief 打开音乐文件。
一个播放器实例仅能够同时打开一个音乐文件。如果需要同时打开多个音乐文件,请创建多个音乐播放器实例。
要播放 PCM 格式的音频数据,参看 openWithCustomSource{@link #IMediaPlayer#openWithCustomSource}。openWithCustomSource 和此 API 互斥。 @param filePath 音乐文件路径。
支持在线文件的 URL、本地文件的 URI、本地文件的绝对路径或以 /assets/ 开头的本地文件路径。对于在线文件的 URL,仅支持 https 协议。
推荐的采样率:8KHz、16KHz、22.05KHz、44.1KHz、48KHz。
不同平台支持的本地文件格式:
inherited
openWithCustomSource(MediaPlayerCustomSource source, MediaPlayerConfig config) Future<int?>
@detail api @brief 启动音频裸数据混音。
要播放音乐文件,参看 open{@link #IMediaPlayer#open}。open 与此 API 互斥。 @param source 数据源,详见 MediaPlayerCustomSource{@link #MediaPlayerCustomSource} @param config 详见 MediaPlayerConfig{@link #MediaPlayerConfig} @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 调用本方法启动后,再调用 pushExternalAudioFrame{@link #IMediaPlayer#pushExternalAudioFrame} 推送音频数据,才会开始混音。 - 如要结束 PCM 音频数据混音,调用 stop{@link #IMediaPlayer#stop}。
inherited
pause() Future<int?>
@detail api @brief 调用 open{@link #IMediaPlayer#open},或 start{@link #IMediaPlayer#start} 开始播放音频文件后,调用本方法暂停播放。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 调用本方法暂停播放后,可调用 resume{@link #IMediaPlayer#resume} 恢复播放。 - 此接口仅支持音频文件,不支持 PCM 数据。
inherited
pushExternalAudioFrame(AudioFrame audioFrame) Future<int?>
@detail api @brief 推送用于混音的 PCM 音频帧数据 @param audioFrame 音频帧,详见 AudioFrame{@link #AudioFrame}。
- 音频采样格式必须为 S16。音频缓冲区内的数据格式必须为 PCM,其容量大小应该为 audioFrame.samples × audioFrame.channel × 2。 - 必须指定具体的采样率和声道数,不支持设置为自动。 @return - 0: 成功 - < 0: 失败 @note - 调用该方法前,须通过 openWithCustomSource{@link #IMediaPlayer#openWithCustomSource} 启动外部音频流混音。 - 使用参考建议:首次推送数据,请在应用侧先缓存一定数据(如 200 毫秒),然后一次性推送过去;此后的推送操作定时 10 毫秒一次,并且每次的音频数据量为 10 毫秒数据量。 - 如果要暂停播放,暂停推送即可。
inherited
registerAudioFrameObserver(IMediaPlayerAudioFrameObserver observer) Future<int?>
@detail api @brief 注册回调句柄以在本地音乐文件混音时,收到相关回调。 @param observer 参看 IMediaPlayerAudioFrameObserver{@link #IMediaPlayerAudioFrameObserver}。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note 此接口仅支持音频文件,不支持 PCM 数据。
inherited
resume() Future<int?>
@detail api @brief 调用 pause{@link #IMediaPlayer#pause} 暂停音频播放后,调用本方法恢复播放。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note 此接口仅支持音频文件,不支持 PCM 数据。
inherited
selectAudioTrack(int index) Future<int?>
@detail api @brief 指定当前音乐文件的播放音轨 @param index 指定的播放音轨,从 0 开始,取值范围为 [0, getAudioTrackCount()-1]
设置的参数值需要小于 getAudioTrackCount{@link #IMediaPlayer#getAudioTrackCount} 的返回值 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 仅在音频播放进行状态时,调用此方法。 - 此方法仅支持音乐文件,不支持 PCM 数据。 - 调用本接口后,会收到 onMediaPlayerEvent{@link #IMediaPlayerEventHandler#onMediaPlayerEvent} 回调。
inherited
setAudioDualMonoMode(AudioMixingDualMonoMode mode) Future<int?>
@detail api @brief 设置当前音乐文件的声道模式 @param mode 声道模式。默认的声道模式和源文件一致,详见 AudioMixingDualMonoMode{@link #AudioMixingDualMonoMode}。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 如果在起播前调用此接口,设置的参数值将被缓存,在起播后生效。 - 仅支持音频文件,不支持 PCM 数据。
inherited
setAudioPitch(int pitch) Future<int?>
@detail api @brief 开启变调功能,多用于 K 歌场景。 @param pitch 与音乐文件原始音调相比的升高/降低值,取值范围为 [-12,12],默认值为 0。每相邻两个值的音高距离相差半音,正值表示升调,负值表示降调。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 如果在起播前调用此接口,设置的参数值将被缓存,在起播后生效。 - 仅支持音乐文件混音,不支持 PCM 数据。
inherited
setEventHandler(IMediaPlayerEventHandler handler) Future<int?>
@detail api @brief 设置回调句柄。 @param handler 参看 IMediaPlayerEventHandler{@link #IMediaPlayerEventHandler}。 @return - 0: 成功。 - < 0: 失败。
inherited
setLoudness(float loudness) Future<int?>
@detail api @brief 如果你需要使用 enableVocalInstrumentBalance{@link #RTCEngine#enableVocalInstrumentBalance} 对音频文件/PCM 音频数据设置音量均衡,你必须通过此接口传入其原始响度。 @param loudness 原始响度,单位:lufs,取值范围为 [-70.0, 0.0]
当设置的值小于 -70.0lufs 时,则默认调整为 -70.0lufs,大于 0.0lufs 时,则不对该响度做音量均衡处理。默认值为 1.0lufs,即不做处理。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 如果在起播前调用此接口,设置的参数值将被缓存,在起播后生效。 - 此方法对音频文件和音频裸数据播放都可用。
inherited
setPlaybackSpeed(int speed) Future<int?>
@detail api @brief 设置播放速度 @param speed 播放速度与原始文件速度的比例,单位:%,取值范围为 [50,200],默认值为 100。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 如果在起播前调用此接口,设置的参数值将被缓存,在起播后生效。 - 此方法对音频文件可用,不支持 PCM 数据。
inherited
setPosition(int position) Future<int?>
@detail api @brief 设置音乐文件的起始播放位置。 @param position 音乐文件起始播放位置,单位为毫秒。
你可以通过 getTotalDuration{@link #IMediaPlayer#getTotalDuration} 获取音乐文件总时长,position 的值应小于音乐文件总时长。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 此接口仅支持音频文件,不支持 PCM 数据。 - 在播放在线文件时,调用此接口可能造成播放延迟的现象。 - 调用本接口后,会收到 onMediaPlayerEvent{@link #IMediaPlayerEventHandler#onMediaPlayerEvent} 回调。
inherited
setProgressInterval(int interval) Future<int?>
@detail api @brief 设置音频文件混音时,收到 onMediaPlayerPlayingProgress{@link #IMediaPlayerEventHandler#onMediaPlayerPlayingProgress} 的间隔。 @param interval 时间间隔,单位毫秒。
- interval > 0 时,触发回调。实际间隔为 10 的倍数。如果输入数值不能被 10 整除,将自动向上取整。例如传入 52,实际间隔为 60 ms。 - interval <= 0 时,不会触发回调。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note - 如果在起播前调用此接口,设置的参数值将被缓存,在起播后生效。 - 此方法仅支持音频文件,不支持 PCM 数据。
inherited
setVolume(int volume, AudioMixingType type) Future<int?>
@detail api @brief 调节指定混音的音量大小,包括音乐文件混音和 PCM 混音。 @param volume 播放音量相对原音量的比值。单位为 %。范围为 [0, 400],建议范围是 [0, 100]。带溢出保护。 @param type 详见 AudioMixingType{@link #AudioMixingType}。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note 如果在起播前调用此接口,设置的参数值将被缓存,在起播后生效。
inherited
start() Future<int?>
@detail api @brief 播放音乐。你仅需要在调用 open{@link #IMediaPlayer#open},且未开启自动播放时,调用此方法。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明 @note
inherited
stop() Future<int?>
@detail api @brief 调用 open{@link #IMediaPlayer#open}, start{@link #IMediaPlayer#start}, 或 openWithCustomSource{@link #IMediaPlayer#openWithCustomSource} 开始播放后,可以调用本方法停止。 @return - 0: 调用成功。 - < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明
inherited
toString() String
A string representation of this object.
inherited
transformToPlatformConstructorArgs(List args, List<int> indices, Map<String, dynamic> typeMap, Map<String, dynamic> enumMap, Map<String, dynamic> classMap, String platformVar) List
实例化参数处理 将 pack 过后的 enum / class 转成 android / ios 平台侧的 enum / class
inherited
updateInstance(dynamic instance) → void
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited