视频播放开发指导
场景介绍
视频播放包括播放控制、播放设置和播放查询,如播放的开始/停止、播放速度设置和是否循环播放等。
接口说明
接口名 | 功能描述 |
---|---|
Player(Context context) | 创建Player实例。 |
setSource(Source source) | 设置媒体源。 |
prepare() | 准备播放。 |
play() | 开始播放。 |
pause() | 暂停播放。 |
stop() | 停止播放。 |
rewindTo(long microseconds) | 拖拽播放。 |
setVolume(float volume) | 调节播放音量。 |
setVideoSurface(Surface surface) | 设置视频播放的窗口。 |
enableSingleLooping(boolean looping) | 设置为单曲循环。 |
isSingleLooping() | 检查是否单曲循环播放。 |
isNowPlaying() | 检查是否播放。 |
getCurrentTime() | 获取当前播放位置。 |
getDuration() | 获取媒体文件总时长。 |
getVideoWidth() | 获取视频宽度。 |
getVideoHeight() | 获取视频高度。 |
setPlaybackSpeed(float speed) | 设置播放速度。 |
getPlaybackSpeed() | 获取播放速度。 |
setAudioStreamType(int type) | 设置音频类型。 |
getAudioStreamType() | 获取音频类型。 |
setNextPlayer(Player next) | 设置当前播放结束后的下一个播放器。 |
reset() | 重置播放器。 |
release() | 释放播放资源。 |
setPlayerCallback(IPlayerCallback callback) | 注册回调,接收播放器的事件通知或异常通知。 |
开发步骤
创建Player实例,可调用Player(Context context),创建本地播放器,用于在本设备播放。
构造数据源对象,并调用Player实例的setSource(Source source)方法,设置媒体源,代码示例如下:
Player player = new Player(context);File file = new File("/sdcard/test_audio.mp4"); // 根据实际情况设置文件路径FileInputStream in = new FileInputStream(file);FileDescriptor fd = in.getFD(); // 从输入流获取FD对象Source source = new Source(fd);player.setSource(source);
调用prepare(),准备播放。
(可选)构造IPlayerCallback,IPlayerCallback需要实现onPlayBackComplete和onError(int errorType, int errorCode)两个方法,实现播放完成和播放异常时做相应的操作。代码示例如下:
@Overridepublic void onPlayBackComplete() { HiLog.info(TAG, "PlayerCallback onPlayBackComplete"); if (player != null) { player.stop(); player = null; }} @Overridepublic void onError(int errorType, int errorCode) { HiLog.error(TAG, "PlayerCallback onError errorType: %{public}d, errorCode: %{public}d", errorType, errorCode);}
调用play()方法,开始播放。
(可选)调用pause()方法和play()方法,可以实现暂停和恢复播放。
(可选)调用rewindTo(long microseconds)方法实现播放中的拖拽功能。
(可选)调用getDuration()方法和getCurrentTime()方法,可以实现获取总播放时长以及当前播放位置功能。
调用 stop()方法停止播放。
播放结束后,调用release()释放资源。
相关实例
针对视频播放开发,有以下示例工程可供参考:
VideoPlayer
本示例演示了如何操作网络视频和本地MP4、MOV、AVI 等格式的视频,包含设置视频资源、播放、暂停、释放资源等。
针对视频播放开发,有以下Codelabs可供参考:
简易视频播放器
基于HarmonyOS Player,实现视频文件的播放。
跨设备视频播放
基于分布式能力和IDL跨进程通信,实现视频跨设备播放、控制。