媒体播放器常见问题解答
常见问题解答
- 此版本的W3C媒体API附加程序支持哪些流媒体格式?
- 使用MSE/EME API通过Shaka播放器进行HLS和DASH自适应流媒体播放。
- 通过HTMLMediaElement.src属性播放非自适应流媒体格式(MP4和MP3)。
- 是否支持媒体焦点管理?
- 是,无论是在模拟器上还是在运行Vega OS的Fire TV Stick设备上均支持。方向键和直接播放/暂停/快进/倒回按钮适用于传输控制。
- 该应用是否能实现自己的媒体控件图形用户界面?
- 是,应用可以实现自定义媒体控件图形用户界面并调用API进行播放、暂停和搜索,如下所示。
video.play(); // 恢复播放 video.pause(); // 暂停播放 video.currentTime = <seek position in seconds>; // 搜索到X.Y秒之类的位置
- 是,应用可以实现自定义媒体控件图形用户界面并调用API进行播放、暂停和搜索,如下所示。
- 同一个DRM密钥可以重复用于音频和视频流吗?
- 出于安全原因,仅当视频安全要求允许解密到非安全内存时,我们才支持对音频和视频使用相同的CDK,例如: Widevine等同于L3的要求: SW_SECURE_CRYPTO、SW_SECURE_DECODE,甚至包括允许同时使用SW_SECURE_DECODE的HW_SECURE_CRYPTO。PlayReady: SL150 FairPlay: 不支持。
- 如果对L1(即高清内容)视频URI使用相同的DRM密钥,会发生什么?
- 存在HW_SECURE_ALL限制(又名Widevine的L1、PlayReady的SL2000/3000,Fairplay仅在此模式下运行)的情况下,我们可以支持所有视频变体共享相同的CDK。在这种情况下,音频必须使用不同的CDK。
- Shaka播放器中有等同于使用相同密钥的ExoPlayer的multiSession等效物吗?
- 在DRM中,可以通过两种方式请求和管理CDK:
- 每个DRM会话处理一个CDK。这意味着,如果媒体资产的音频和视频均经过加密,则即使客户端应用共享相同的CDK,也需要为音频和视频创建单独的DRM会话。这意味着单个播放会话将进行多次许可证交换。
- 使用单个DRM会话处理所有CDK。ExoPlayer文档指出,这是更好的方法,因为它避免了多次许可证交换。
- Shaka播放器不提供配置选项来选择使用上述哪一种方法,而ExoPlayer则通过其Multi-session(多会话)旋钮来提供选择。第二个选项是ExoPlayer的默认模式。
- 在DRM中,可以通过两种方式请求和管理CDK:
-
如何解决Shaka播放器DRM许可证HTTP请求失败并出现
DRM_LICENSE_REQUEST_FAILED
错误的问题。当Shaka播放器出现
DRM LICENSE_REQUEST_FAILED (6007)
错误时,可能是由于某些服务器无法解析输入请求所致。要排除此问题,请在HTTP请求中附加“content-type”标头,如以下示例代码所示。const netEngine = this.player.getNetworkingEngine(); const filter = (type : shaka.net.NetworkingEngine.RequestType, request : shaka.extern.Request) :void => { if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) { console.log("为许可证请求附加HTTP标头信息"); request.headers["content-type"] = "application/octet-stream"; /* 如果有其他客户标头。 request.headers["标头"] = "数据"; */ } };
-
Vega支持哪些基于JS的播放器?
Vega支持Shaka播放器、Hls.js和DASH.js(开源)以及Bitmovin、THEOPlayer和Brightcove(专有)。亚马逊发布补丁,将Shaka播放器、Hls.js和DASH.js移植到Vega。
-
亚马逊会为每个新版本的Shaka播放器发布补丁吗?
Vega支持W3C媒体API。Shaka播放器用于演示此API的用法。为此,我们会为Shaka播放器发布必要的补丁。您可以使用该API创建自己的播放器。您可以自由选择任何开源(Shaka播放器、HLS.js、DASH.js等)JS播放器或任何专有播放器,比如Bitmovin、TheoPlayer等。
Shaka播放器在持续不断地更新。您可以根据需要选择任何Shaka播放器版本。有关已发布补丁的Shaka播放器最新版本的信息,请参阅使用Shaka播放器播放自适应内容 (HLS/DASH)。开发者可以参考我们发布的补丁并进行移植(如果需要)。如果您需要Shaka播放器的某个特定版本且我们尚未提供该版本,可以参考我们提供的补丁,并将其移植到您需要的播放器版本。如果您在使用W3C API时遇到任何问题,请及时反馈,我们将协助您解决问题。请注意,我们并未保证会为Shaka播放器的每一个新版本都发布补丁。
-
Shaka播放器补丁遵循什么许可协议?
Shaka播放器补丁遵循Apache License 2.0协议。
-
W3C媒体API支持哪些音频/视频编解码器?
W3C媒体API支持流媒体使用案例中使用的流行音频和视频编解码器,例如用于音频的Dolby Audio(AC3、eAC3、AC4、EC3_JOC)、AAC(LC、AAC+和eAAC+)、MP3、Opus、FLAC和Vorbis,以及用于视频的H.264、H.265、VP8、VP9、MPEG4和AV1。
-
W3C媒体API支持哪些DRM架构?
W3C媒体API支持Widevine (L1) 和PlayReady (SL3000) 等DRM架构。
-
是否支持服务器端插入广告?
支持,前提是主内容→广告和广告→主内容切换时,编解码器类型没有变化。否则不支持。
-
不同的媒体播放使用案例需要哪些权限?
下面列出了媒体播放使用案例所需的一些常见权限。根据您的使用案例,缺少权限可能导致无法播放或显示黑屏。
[offers][[offers.service]] id = "com.amazon.gipc.uuid.*" # GIPC SR所必需 [[wants.service]] id = "com.amazon.gipc.uuid." [[wants.service]] id = "com.amazon.drm.key" # 播放DRM视频所必需 [[wants.service]] id = "com.amazon.drm.crypto" # 播放DRM视频所必需 [[needs.privilege]] id = "com.amazon.privilege.security.file-sharing" # 播放DRM视频所必需 [[needs.privilege]] id="com.amazon.media.secureplayback" # 播放DRM视频所必需 [[wants.service]] id = "com.amazon.mediametrics.service" [[wants.service]] id = "com.amazon.media.server" # 连接媒体播放器/媒体转换器所必需 [[wants.service]] id = "com.amazon.mediabuffer.service" [[wants.service]] id = "com.amazon.mediatransform.service" [[wants.service]] id = "com.amazon.media.playersession.service" # 连接媒体控制所必需 [[wants.service]] id = "com.amazon.inputd.service" # 遥控器按钮事件所必需 [[wants.service]] id = "com.amazon.inputmethod.service" [[wants.service]] id = "com.amazon.audio.stream" # 使用音频流所必需 [[wants.service]] id = "com.amazon.audio.control" # 使用音量控件和其他控件所必需
-
Shaka播放器中无法播放HLS MPEG2TS内容的直播内容。
启用顺序播放模式:
this.player.configure('manifest.hls.sequenceMode', true)
对MPEG2 TS流,建议使用启用源缓冲区的顺序播放模式操作。
-
某些WV L1视频播放失败。
所有亚马逊平台都不支持音频的Widevine L1(安全路径)。音频应使用非安全路径,而视频可以使用安全路径。将
multikey=true
附加到URL,以便为每条曲目使用单独的密钥。 -
支持哪些隐藏式字幕/字幕格式?
W3C媒体API支持CEA 608、CEA 708、TTML、WebVTT和SRT格式的带内和带外隐藏式字幕和字幕。应用能够根据语言选择隐藏式字幕和字幕。URL和MSE模式播放支持隐藏式字幕/字幕。
-
如何实现清单内字幕?
有关清单内字幕的信息,请参阅知识库文章:隐藏式字幕 (CC) 和字幕(仅提供英文版)。
-
如何禁用Shaka播放器的内嵌字幕(在媒体片段内)解析功能?
W3C媒体API现在支持CEA608/708字幕解码。这是在Vega应用中解析字幕的首选方式。要禁用Shaka播放器的内嵌字幕解析功能,请取消注册媒体片段字幕解析器。
shaka.media.ClosedCaptionParser.unregisterParser('video/mp4'); shaka.media.ClosedCaptionParser.unregisterParser('video/mp2t');
-
如何实现客户端广告插入?
有关客户端广告插入的信息,请参阅知识库文章:客户端广告插入 (CSAI) 示例代码(仅提供英文版)。
-
使用Widevine L1或PlayReady SL2000/3000时,是否支持音频解密?
受硬件保护的内存缓冲区不支持音频解密,这意味着音频稳健性值
HW_SECURE_ALL
不受支持。要进行音频和视频解密与解码,请使用MediaKeys
对象。使用
requestMediaKeySystemAccess(...)
请求MediaKeySystemAccess
对象时,请确保正确设置了MediaKeySystemConfiguration
字典中audioCapabilities
和videoCapabilities
的robustness
成员。例如,如果视频对于Widevine必须是安全的,请使用'robustness' : 'HW_SECURE_ALL'
;对于音频,请始终使用'robustness' : 'SW_SECURE_CRYPTO'
。这样可确保使用受硬件保护的缓冲区解密视频数据,而使用非安全缓冲区解密音频数据。
Last updated: 2025年9月30日