媒体播放器
本文介绍如何调用媒体播放器相关的 API 播放本地或在线媒体资源,或将媒体资源分享给声网频道内的远端用户观看或收听。
前提条件
在进行操作之前,请确保你已经在项目中实现了基本的实时音视频功能。有关详细信息,请参考实现音视频互动。
实现方法
参考如下步骤,在你的项目中实现媒体播放功能:
-
初始化
RtcEngine
后,创建一个IMediaPlayer
对象,并调用registerPlayerObserver
方法注册播放观测器。Javaengine = RtcEngine.create(config);
...
mediaPlayer = engine.createMediaPlayer();
mediaPlayer.registerPlayerObserver(this); -
实现媒体播放器观测器的回调。
Java@Override
public void onPlayerStateChanged(io.agora.mediaplayer.Constants.MediaPlayerState mediaPlayerState, io.agora.mediaplayer.Constants.MediaPlayerError mediaPlayerError) {
Log.e(TAG, "onPlayerStateChanged mediaPlayerState " + mediaPlayerState);
Log.e(TAG, "onPlayerStateChanged mediaPlayerError " + mediaPlayerError);
if (mediaPlayerState.equals(PLAYER_STATE_OPEN_COMPLETED)) {
setMediaPlayerViewEnable(true);
} else if (mediaPlayerState.equals(PLAYER_STATE_IDLE) || mediaPlayerState.equals(PLAYER_STATE_PLAYBACK_COMPLETED) ) {
setMediaPlayerViewEnable(false);
}
}
@Override
public void onPositionChanged(long position) {
Log.e(TAG, "onPositionChanged position " + position);
if (playerDuration > 0) {
final int result = (int) ((float) position / (float) playerDuration * 100);
handler.post(new Runnable() {
@Override
public void run() {
progressBar.setProgress(Long.valueOf(result).intValue());
}
});
}
}
@Override
public void onPlayerEvent(io.agora.mediaplayer.Constants.MediaPlayerEvent mediaPlayerEvent) {
Log.e(TAG, " onPlayerEvent mediaPlayerEvent " + mediaPlayerEvent);
} -
渲染本地媒体播放视图。
JavaVideoCanvas videoCanvas = new VideoCanvas(surfaceView, Constants.RENDER_MODE_HIDDEN, Constants.VIDEO_MIRROR_MODE_AUTO,
Constants.VIDEO_SOURCE_MEDIA_PLAYER, mediaPlayer.getMediaPlayerId(), 0);
engine.setupLocalVideo(videoCanvas); -
加入频道前,设置媒体播放器 ID,发布媒体播放器的音视频,将媒体资源分享给声网频道内的远端用户。
Javaprivate ChannelMediaOptions options = new ChannelMediaOptions();
...
options.publishMediaPlayerId = mediaPlayer.getMediaPlayerId();
options.publishMediaPlayerAudioTrack = true;
options.publishMediaPlayerVideoTrack = true;
int res = engine.joinChannel(accessToken, channelId, 0, options); -
打开本地或在线媒体文件。
JavamediaPlayer.open(url, 0);
-
播放媒体文件。
注意请在收到
onPlayerStateChanged
回调报告播放状态为PLAYER_STATE_OPEN_COMPLETED
后再调用play
方法播放媒体文件。JavamediaPlayer.play();
-
当用户离开频道时,停止播放、销毁媒体播放器、取消注册播放观测器,并销毁分配的资源。
JavamediaPlayer.stop();
mediaPlayer.destroy();
mediaPlayer.unRegisterPlayerObserver(this);
参考信息
本节介绍本文中使用方法的更多信息以及相关页面的链接。
示例项目
声网在 GitHub 上提供了一个开源的示例项目。