Skip to main content
Version: v7 Alpha

Plugin Usage Examples

This document provides practical examples of implementing common plugin scenarios for React Native Video.

Basic Plugin Template

Android
class MyPlugin : ReactNativeVideoPlugin("MyPlugin") {
override fun onPlayerCreated(player: WeakReference<NativeVideoPlayer>) {
Log.d("MyPlugin", "Player created with uri ${player.get()?.source.uri}")
}

override fun onPlayerDestroyed(player: WeakReference<NativeVideoPlayer>) {
Log.d("MyPlugin", "Player destroyed")
}

override fun overrideSource(source: NativeVideoPlayerSource): NativeVideoPlayerSource {
Log.d("MyPlugin", "Overriding source with uri ${source.uri}")
return source
}
}

// Usage
val plugin = MyPlugin() // Automatically registered
iOS
class MyPlugin: ReactNativeVideoPlugin {
init() {
super.init(name: "MyPlugin")
}

override func onPlayerCreated(player: Weak<NativeVideoPlayer>) {
// Custom logic when player is created
}

override func onPlayerDestroyed(player: Weak<NativeVideoPlayer>) {
// Custom cleanup when player is destroyed
}

override func overrideSource(source: NativeVideoPlayerSource) async -> NativeVideoPlayerSource {
// Modify source if needed
return source
}
}

// Usage
let plugin = MyPlugin() // Automatically registered

DRM Plugin

Implement custom DRM handling for protected content.

warning

DRM plugins are not supported yet in React Native Video. getDRMManager is not implemented yet and will have no effect.

Android
class CustomDRMPlugin : ReactNativeVideoPlugin("CustomDRM") {
override fun getDRMManager(source: NativeVideoPlayerSource): Any? {
if (source.isDRMProtected() && source.drmType == "custom") {
return CustomDRMManager(
licenseUrl = source.drmLicenseUrl,
certificateUrl = source.drmCertificateUrl,
keyId = source.drmKeyId
)
}
return null
}
}
iOS
class CustomDRMPlugin: ReactNativeVideoPlugin {
init() {
super.init(name: "CustomDRM")
}

override func getDRMManager(source: NativeVideoPlayerSource) async -> Any? {
guard source.isDRMProtected() && source.drmType == "custom" else {
return nil
}

return CustomDRMManager(
licenseUrl: source.drmLicenseUrl,
certificateUrl: source.drmCertificateUrl,
keyId: source.drmKeyId
)
}
}
We are TheWidlarzGroupPremium support →