本文提供媒体播放器组件的发版说明。
媒体播放器组件是声网针对音视频直播场景研发的媒体播放器插件,与声网 Native SDK(2.4.0 或更高版本)兼容。
该插件通过精简、灵活的 API,帮助开发者在实时音视频直播中,实现媒体资源播放功能,将主播播放的本地或在线媒体资源分享给频道内所有用户欣赏。详见功能描述。
为获取更多直播玩法和更好的实时互动体验,我们推荐你在如下场景中使用媒体播放器组件:
早于 2010 年的 macOS 设备不支持 Metal 渲染,因此媒体播放器组件在这种设备上会出现视频渲染卡顿。
MediaPlayer Kit 仅支持播放 60fps 以下(不含)帧率的视频。
该版本于 2021 年 7 月 20 日发布。
为提升 MediaPlayer Kit 的平台兼容性,该版本支持在 M1 Mac 上集成运行 MediaPlayer Kit。
多码率切换
为保证复杂网络环境下的播放质量,该版本新增 switchSrc
方法,允许用户根据网络状态随时切换码率。支持通过该方法的 syncPts
参数同步点播流的当前播放位置,实现多码率的平滑切换。
调用 switchSrc
后,如果你收到 didOccurEvent
回调报告事件 AgoraMediaPlayerEventSwitchComplete
,则切换码率成功;如果你收到 didOccurEvent
回调报告事件 AgoraMediaPlayerEventSwitchError
,则切换码率失败。
预加载
为提升多个文件播放的连续性,该版本支持预加载功能。你可以调用 addPreloadSrc
方法将媒体资源提前加载到播放列表,再调用 playPreload
播放该文件。如需预加载多个媒体资源,你需要多次调用 addPreloadSrc
方法。
调用 addPreloadSrc
后,如果收到 didPreloadEvent
回调报告事件 AgoraMediaPlayerPreloadEventComplete
,则预加载成功;如果你收到 didPreloadEvent
回调报告事件 AgoraMediaPlayerPreloadEventError
,预加载失败。
为提升用户体验,该版本对 MediaPlayer Kit 的播放行为进行如下改进:
seekToPosition
且 position
参数取值大于媒体文件总时长时,MediaPlayer Kit 会定位到最后一帧。为了降低 CPU 消耗,改善使用性能,该版本将解码默认方式由软件解码更改为硬件解码。
open
,首帧等待时间过长。自该版本起,MediaPlayer Kit 包中新增 AgoraPlayerFFmpeg.framework
文件。如果你升级至 v1.2.4 或更高版本,请参考如下步骤在集成 MediaPlayer 时添加 AgoraPlayerFFmpeg.framework
:
AgoraMediaPlayer.framework
所在文件夹中。AgoraPlayerFFmpeg.framework
,并确保动态库的 Embed 属性为 Embed & Sign。1. 拓展播放功能
为满足多样化的播放需求,该版本新增如下 API:
changePlaybackSpeed
: 改变播放速度。比如倍速播放。selectAudioTrack
: 选择播放的音轨。setLoopCount
:设置循环播放次数。setExternalSubtitle
:设置外接字幕。2. 在线缓冲提示
该版本新增在线缓冲提示。播放在线媒体资源时,MediaPlayer Kit 每隔一秒触发一次 didPlayBufferUpdate
回调,报告当前缓冲的数据能够支持多久的播放。
3. 获取 Kit 版本号
自该版本起,你可以通过 getPlayerSdkVersion
方法获取当前使用的 MediaPlayer Kit 的版本号。
4. 设置私有选项
为满足开发者的特殊需求,该版本新增 setPlayerOptionInt
和 setPlayerOptionString
方法,以设置 MediaPlayer Kit 的私有选项。一般情况下,你可以直接使用默认的私有选项设置,无需了解该方法的具体用法。
1. 媒体附属信息
为解析更多类型的 SEI 数据,如声网 CDN 直播推流服务中发送的 SEI 数据,自该版本起,didReceiveData
回调的触发时机发生改动:
1.2.4 版之前 | 1.2.4 版或之后 |
---|---|
当 MediaPlayer Kit 接收到的 SEI 的 type 为 5 时 | 当 MediaPlayer Kit 接收到的 SEI 的 type 为 5 或 100 时 |
2. 默认音量类型
为贴近用户使用习惯,自该版本起,MediaPlayer Kit 默认走媒体音量。相比通话音量,媒体音量具有更好的声音表现力且可以调整为 0,更适用于播放音视频。详见 enableVoiceChatMode 参数。
3. 精确参数单位
该版本将如下参数的数值单位由秒更改为毫秒:
open 和 seekToPosition 方法中设置播放位置参数的单位由秒改为毫秒。
通过 getPlayPosition
方法获取的播放进度参数的单位由秒更改为毫秒。getDuration
方法获取的媒体文件总时长参数的单位由秒改为毫秒。didChangedToPosition
事件中 position
参数的单位由秒改为毫秒。4. 播放格式
自该版本起,MediaPlayer Kit 新增支持播放更多格式的音视频:
seekToPosition
后自动播放。seekToPosition
和 play
方法定位播放时,偶现画面卡顿。该版本于 2020 年 12 月 31 日发布。
该版本修复了偶现的崩溃。
该版本于 2020 年 5 月 11 日发布。
该版本修复了 RTMP 流播放异常的问题。
该版本于 2020 年 3 月 23 日发布。
该版本主要功能如下:
主播端播放本地或在线音视频,同步分享给频道内的所有用户,实现更多直播玩法。
通过创建多个 AgoraMediaPlayer 实例,实现同时播放多个媒体资源,满足主播多种直播需求。
打开、播放、暂停播放、恢复播放、定位播放该媒体资源,实现即时的播放控制。
分别调节本地和远端的播放音量,精准地控制不同阶段的播放音量,同时照顾播放端和订阅端的用户体验。
通过调用相关方法主动获取播放相关的各种信息,如当前播放进度、状态和媒体流的详细信息。
AgoraMediaPlayerDelegate
中包含一系列事件,如播放进度、播放状态和定位状态。通过监听这些事件,你可以更好地掌握播放过程。当播放发生异常时,你可以通过这些事件来排查问题。
此外,你还可以监听媒体附属信息、每帧音频帧和每帧视频帧的接收事件,实现更为复杂的功能满足多种场景需求,如使用自定义格式数据、录制音频、录制视频和截图。
我们为媒体播放器组件提供了完整的文档,你可以参考如下链接进行使用:
该版本于 2019 年 9 月 4 日发布。
这是媒体播放器组件的第一个版本,你可以在项目中使用它实现如下功能:
主播端播放本地或在线音视频,同步分享给频道内的所有用户,实现更多直播玩法。
载入、播放、暂停播放、恢复播放、定位播放该媒体资源,实现即时的播放控制。
分别调节本地和远端的播放音量,精准地控制不同阶段的播放音量,同时照顾播放端和订阅端的用户体验。
MediaPlayerKitDelegate
中包含一系列事件:
通过监听这些事件,你可以更好地掌握播放过程。