MediaCas 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
MediaCas 可用于获取密钥,以便与 android.media.MediaDescrambler
一起对受保护的媒体流进行反乱处理。
[Android.Runtime.Register("android/media/MediaCas", ApiSince=26, DoNotGenerateAcw=true)]
public sealed class MediaCas : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IAutoCloseable
[<Android.Runtime.Register("android/media/MediaCas", ApiSince=26, DoNotGenerateAcw=true)>]
type MediaCas = class
inherit Object
interface IAutoCloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 继承
- 属性
- 实现
注解
MediaCas 可用于获取密钥,以便与 android.media.MediaDescrambler
一起对受保护的媒体流进行反乱处理。 MediaCas API 旨在支持条件访问,例如 ISO/IEC13818-1 中的那些。 CA 系统由 16 位整数CA_system_id标识。 争用算法通常是专有的,由设备上安装的特定于供应商的 CA 插件实现。
应用负责为其要使用的 CA 系统构造 MediaCas 对象。 应用可以使用静态方法 #isSystemIdSupported
查询特定 CA 系统是否受支持。 它还可以使用静态方法 #enumeratePlugins
获取受支持 CA 系统的完整列表。
构造 MediaCas 对象后,应用应使用 方法和 #provision
/或 #processEmm
正确预配它。 ) (权利管理消息的 EMM 可以在带外或带内随流一起分发。
为了对基本流进行析构,应用首先调用 #openSession
以生成将唯一 Session
标识会话的 对象。 会话为后续密钥更新和取消乱分活动提供上下文。 ) (权利控制消息的 ECM 通过方法 Session#processEcm
发送到会话。
接下来,应用构造 MediaDescrambler 对象,并使用 会话 MediaDescrambler#setMediaCasSession
对其进行初始化。 这会将解乱器与会话相关联,然后可以使用解乱器来解构受会话密钥保护的内容,无论是在提取期间还是在使用 android.media.MediaCodec
解码期间。
如果应用使用其自己的提取程序处理示例提取,则它可以使用 MediaDescrambler 将样本分解为清除缓冲区 (如果会话的许可证不需要安全解码器) ,或者对少量数据进行反分解,以检索下游管道处理示例所需的信息 (如果会话的许可证需要安全解码器) 。
如果会话需要安全解码器,则需要向 MediaCodec 提供 MediaDescrambler,以便将排队的 MediaCodec#queueSecureInputBuffer
样本解析到受保护的缓冲区中。 应用应使用 MediaCodec#configure(MediaFormat, android.view.Surface, int, MediaDescrambler)
而不是常规 MediaCodec#configure(MediaFormat, android.view.Surface, MediaCrypto, int)
方法来配置 MediaCodec。
<h3>使用 Android 的 MediaExtractor</h3>
如果应用使用 MediaExtractor
,则可以通过调用 MediaExtractor#setMediaCas
将 CAS 会话管理委托给 MediaExtractor。 MediaExtractor 将接管并调用 #openSession
、 #processEmm
和/或 Session#processEcm
等。 如有必要。
使用 MediaExtractor
时,如果许可需要安全解码器,应用仍需要 MediaDescrambler 才能与 一起使用 MediaCodec
。 可以通过调用 MediaExtractor#getCasInfo
来检索与轨道的解乱器关联的会话,并用于初始化 MediaCodec 的 MediaDescrambler 对象。
<h3>侦听器</h3>
应用可以使用 方法 #setEventListener
注册侦听器以从 CA 系统接收事件。 事件的确切格式特定于方案,不由此 API 指定。
的 android.media.MediaCas
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
构造函数
MediaCas(Context, Int32, String, Int32) |
实例化指定系统 ID 的 CA 系统。 |
MediaCas(Context, Int32, String, Int32, Handler, MediaCas+IEventListener) |
实例化指定系统 ID 的 CA 系统。 |
MediaCas(Int32) |
实例化指定系统 ID 的 CA 系统。 |
字段
PluginStatusPhysicalModuleChanged |
已过时.
指示通过删除或插入物理 CAS 模块更改 CAS 系统状态的事件。 |
PluginStatusSessionNumberChanged |
已过时.
指示更改 CAS 系统的会话数的事件。 |
ScramblingModeAes128 |
已过时.
高级加密系统 (AES) 128 位加密模式。 |
ScramblingModeAesCbc |
已过时.
高级加密系统 (AES) 加密块链接 (CBC) 模式。 |
ScramblingModeAesEcb |
已过时.
高级加密系统 (AES) 电子代码簿 (欧洲央行) 模式。 |
ScramblingModeAesScte52 |
已过时.
高级加密系统 (AES) 电缆电信工程师协会 (SCTE) 52 模式。 |
ScramblingModeDvbCissaV1 |
已过时.
DVB 通用 IPTV 面向软件的乱抓算法 (CISSA) 版本 1。 |
ScramblingModeDvbCsa1 |
已过时.
DVB (数字视频广播) 常见争用算法 (CSA) 1。 |
ScramblingModeDvbCsa2 |
已过时.
DVB CSA 2。 |
ScramblingModeDvbCsa3Enhance |
已过时.
完全增强模式下的 DVB CSA 3。 |
ScramblingModeDvbCsa3Minimal |
已过时.
最低增强模式下的 DVB CSA 3。 |
ScramblingModeDvbCsa3Standard |
已过时.
标准模式下的 DVB CSA 3。 |
ScramblingModeDvbIdsa |
已过时.
ATIS-0800006 IIF 默认杂乱算法 (IDSA) 。 |
ScramblingModeMulti2 |
已过时.
对称密钥算法。 |
ScramblingModeReserved |
已过时.
DVB (数字视频广播) 保留模式。 |
ScramblingModeTdesEcb |
已过时.
三重数据加密算法 (TDES) 电子代码簿 (ECB) 模式。 |
ScramblingModeTdesScte52 |
已过时.
三重数据加密算法 (TDES) 电缆电信工程师协会 (SCTE) 52 模式。 |
SessionUsageLive |
已过时.
Cas 会话用于对实时流进行析构。 |
SessionUsagePlayback |
已过时.
Cas 会话用于对重新录制的流进行解构。 |
SessionUsageRecord |
已过时.
Cas 会话用于对实时流进行析构并加密本地录制的内容 |
SessionUsageTimeshift |
已过时.
Cas 会话用于解密实时流、加密本地录制的内容和播放本地加密内容。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
MediaCas 可用于获取密钥,以便与 |
JniPeerMembers |
MediaCas 可用于获取密钥,以便与 |
PeerReference |
MediaCas 可用于获取密钥,以便与 |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 (继承自 Object) |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 (继承自 Object) |
方法
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Close() |
MediaCas 可用于获取密钥,以便与 |
Dispose() |
MediaCas 可用于获取密钥,以便与 |
Dispose(Boolean) |
MediaCas 可用于获取密钥,以便与 |
EnumeratePlugins() |
列出设备上所有可用的 CA 插件。 |
Equals(Object) |
指示某个其他对象是否“等于”此对象。 (继承自 Object) |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
IsSystemIdSupported(Int32) |
查询此设备是否支持某个 CA 系统。 |
JavaFinalize() |
当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。 (继承自 Object) |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
OpenSession() |
打开会话以对条件访问系统乱码的一个或多个流进行拆乱。 |
OpenSession(Int32, Int32) |
打开会话以对条件访问系统乱码的一个或多个流进行拆乱。 |
ProcessEmm(Byte[]) |
将接收的 EMM 数据包发送到 CA 系统。 |
ProcessEmm(Byte[], Int32, Int32) |
将接收的 EMM 数据包发送到 CA 系统。 |
Provision(String) |
为 CA 系统启动预配操作。 |
RefreshEntitlements(Int32, Byte[]) |
通知 CA 系统刷新权利密钥。 |
SendEvent(Int32, Int32, Byte[]) |
将事件发送到 CA 系统。 |
SetEventListener(MediaCas+IEventListener, Handler) |
设置事件侦听器以接收来自 MediaCas 实例的通知。 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
SetPrivateData(Byte[]) |
发送 CA 系统的专用数据。 |
ToArray<T>() |
MediaCas 可用于获取密钥,以便与 |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
MediaCas 可用于获取密钥,以便与 |
Wait() |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<> (继承自 Object) |
Wait(Int64) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
Wait(Int64, Int32) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
显式接口实现
IJavaPeerable.Disposed() |
MediaCas 可用于获取密钥,以便与 |
IJavaPeerable.DisposeUnlessReferenced() |
MediaCas 可用于获取密钥,以便与 |
IJavaPeerable.Finalized() |
MediaCas 可用于获取密钥,以便与 |
IJavaPeerable.JniManagedPeerState |
MediaCas 可用于获取密钥,以便与 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
MediaCas 可用于获取密钥,以便与 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
MediaCas 可用于获取密钥,以便与 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
MediaCas 可用于获取密钥,以便与 |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
MediaCas 可用于获取密钥,以便与 |
GetJniTypeName(IJavaPeerable) |
MediaCas 可用于获取密钥,以便与 |