feat(iOS): rewrite DRM Module (#4136)
* minimal api * add suport for `getLicense` * update logic for obtaining `assetId` * add support for localSourceEncryptionKeyScheme * fix typo * fix pendingLicenses key bug * lint code * code clean * code clean * remove old files * fix tvOS build * fix errors loop * move `localSourceEncryptionKeyScheme` into drm params * add check for drm type * use DebugLog * lint * update docs * lint code * fix bad rebase * update docs * fix crashes on simulators * show error on simulator when using DRM * fix typos * code clean
This commit is contained in:
@@ -119,6 +119,7 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
onTextTrackDataChanged,
|
||||
onVideoTracks,
|
||||
onAspectRatio,
|
||||
localSourceEncryptionKeyScheme,
|
||||
...rest
|
||||
},
|
||||
ref,
|
||||
@@ -189,6 +190,9 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
base64Certificate: selectedDrm.base64Certificate,
|
||||
useExternalGetLicense: !!selectedDrm.getLicense,
|
||||
multiDrm: selectedDrm.multiDrm,
|
||||
localSourceEncryptionKeyScheme:
|
||||
selectedDrm.localSourceEncryptionKeyScheme ||
|
||||
localSourceEncryptionKeyScheme,
|
||||
};
|
||||
|
||||
let _cmcd: NativeCmcdConfiguration | undefined;
|
||||
@@ -238,7 +242,13 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
textTracksAllowChunklessPreparation:
|
||||
resolvedSource.textTracksAllowChunklessPreparation,
|
||||
};
|
||||
}, [drm, source, textTracks, contentStartTime]);
|
||||
}, [
|
||||
drm,
|
||||
source,
|
||||
textTracks,
|
||||
contentStartTime,
|
||||
localSourceEncryptionKeyScheme,
|
||||
]);
|
||||
|
||||
const _selectedTextTrack = useMemo(() => {
|
||||
if (!selectedTextTrack) {
|
||||
|
@@ -62,6 +62,7 @@ type Drm = Readonly<{
|
||||
base64Certificate?: boolean; // ios default: false
|
||||
useExternalGetLicense?: boolean; // ios
|
||||
multiDrm?: WithDefault<boolean, false>; // android
|
||||
localSourceEncryptionKeyScheme?: string; // ios
|
||||
}>;
|
||||
|
||||
type CmcdMode = WithDefault<Int32, 1>;
|
||||
@@ -341,7 +342,6 @@ export interface VideoNativeProps extends ViewProps {
|
||||
fullscreenOrientation?: WithDefault<string, 'all'>;
|
||||
progressUpdateInterval?: Float;
|
||||
restoreUserInterfaceForPIPStopCompletionHandler?: boolean;
|
||||
localSourceEncryptionKeyScheme?: string;
|
||||
debug?: DebugConfig;
|
||||
showNotificationControls?: WithDefault<boolean, false>; // Android, iOS
|
||||
bufferConfig?: BufferConfig; // Android
|
||||
|
@@ -81,6 +81,7 @@ export type Drm = Readonly<{
|
||||
certificateUrl?: string; // ios
|
||||
base64Certificate?: boolean; // ios default: false
|
||||
multiDrm?: boolean; // android
|
||||
localSourceEncryptionKeyScheme?: string; // ios
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
getLicense?: (
|
||||
spcBase64: string,
|
||||
@@ -321,6 +322,7 @@ export interface ReactVideoProps extends ReactVideoEvents, ViewProps {
|
||||
/** @deprecated Use viewType*/
|
||||
useSecureView?: boolean; // Android
|
||||
volume?: number;
|
||||
/** @deprecated use **localSourceEncryptionKeyScheme** key in **drm** props instead */
|
||||
localSourceEncryptionKeyScheme?: string;
|
||||
debug?: DebugConfig;
|
||||
allowsExternalPlayback?: boolean; // iOS
|
||||
|
Reference in New Issue
Block a user