spactureai-mobile-player 1.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +474 -0
- package/UnifiedPlayer.podspec +51 -0
- package/android/CMakeLists.txt +29 -0
- package/android/build.gradle +249 -0
- package/android/fix-prefab.gradle +51 -0
- package/android/gradle.properties +15 -0
- package/android/src/main/AndroidManifest.xml +10 -0
- package/android/src/main/AndroidManifestNew.xml +9 -0
- package/android/src/main/cpp/cpp-adapter.cpp +9 -0
- package/android/src/main/java/com/unifiedplayer/core/AudioFocusManager.kt +233 -0
- package/android/src/main/java/com/unifiedplayer/core/VideoError.kt +105 -0
- package/android/src/main/java/com/unifiedplayer/core/VideoManager.kt +292 -0
- package/android/src/main/java/com/unifiedplayer/core/extensions/ResizeMode+AspectRatioFrameLayout.kt +20 -0
- package/android/src/main/java/com/unifiedplayer/core/extensions/SubtitleType+toString.kt +14 -0
- package/android/src/main/java/com/unifiedplayer/core/extensions/VideoPlaybackService+ServiceManagment.kt +59 -0
- package/android/src/main/java/com/unifiedplayer/core/fragments/FullscreenVideoFragment.kt +346 -0
- package/android/src/main/java/com/unifiedplayer/core/fragments/PictureInPictureHelperFragment.kt +85 -0
- package/android/src/main/java/com/unifiedplayer/core/player/DRMManagerSpec.kt +23 -0
- package/android/src/main/java/com/unifiedplayer/core/player/DataSourceFactoryUtils.kt +93 -0
- package/android/src/main/java/com/unifiedplayer/core/player/MediaItemUtils.kt +141 -0
- package/android/src/main/java/com/unifiedplayer/core/player/MediaSourceUtils.kt +134 -0
- package/android/src/main/java/com/unifiedplayer/core/player/OnAudioFocusChangedListener.kt +25 -0
- package/android/src/main/java/com/unifiedplayer/core/plugins/PluginsRegistry.kt +223 -0
- package/android/src/main/java/com/unifiedplayer/core/plugins/ReactNativeVideoPlugin.kt +173 -0
- package/android/src/main/java/com/unifiedplayer/core/recivers/AudioBecomingNoisyReceiver.kt +38 -0
- package/android/src/main/java/com/unifiedplayer/core/services/playback/CustomMediaNotificationProvider.kt +151 -0
- package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackCallback.kt +96 -0
- package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackService.kt +219 -0
- package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackServiceConnection.kt +59 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/PictureInPictureUtils.kt +153 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/SmallVideoPlayerOptimizer.kt +157 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/SourceLoader.kt +48 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/TextTrackUtils.kt +175 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/Threading.kt +75 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/VideoFileHelper.kt +51 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/VideoInformationUtils.kt +67 -0
- package/android/src/main/java/com/unifiedplayer/core/utils/VideoOrientationUtils.kt +30 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayer/HybridVideoPlayer.kt +732 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayer/HybridVideoPlayerFactory.kt +16 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayereventemitter/HybridVideoPlayerEventEmitter.kt +180 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayersource/HybridVideoPlayerSource.kt +67 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoplayersource/HybridVideoPlayerSourceFactory.kt +58 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoviewviewmanager/HybridVideoViewViewManager.kt +187 -0
- package/android/src/main/java/com/unifiedplayer/hybrids/videoviewviewmanager/HybridVideoViewViewManagerFactory.kt +13 -0
- package/android/src/main/java/com/unifiedplayer/react/VideoPackage.kt +25 -0
- package/android/src/main/java/com/unifiedplayer/react/VideoViewViewManager.kt +78 -0
- package/android/src/main/java/com/unifiedplayer/view/VideoView.kt +565 -0
- package/android/src/main/res/layout/custom_player_control_view.xml +82 -0
- package/android/src/main/res/layout/player_view_surface.xml +13 -0
- package/android/src/main/res/layout/player_view_texture.xml +13 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNCVideoViewManagerDelegate.java +32 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNCVideoViewManagerInterface.java +16 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/DashMediaSource.kt +35 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/DashUtil.kt +11 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/AdaptationSet.kt +9 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/DashManifest.kt +10 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/Period.kt +7 -0
- package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/Representation.kt +8 -0
- package/android/src/stubs/hls/androidx/media3/exoplayer/hls/HlsMediaSource.kt +33 -0
- package/ios/RNCVideoViewManager.mm +39 -0
- package/ios/Video-Bridging-Header.h +2 -0
- package/ios/core/HLSAuthProxy.swift +428 -0
- package/ios/core/VideoError.swift +164 -0
- package/ios/core/VideoManager.swift +219 -0
- package/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift +697 -0
- package/ios/hybrids/VideoPlayer/HybridVideoPlayerFactory.swift +15 -0
- package/ios/hybrids/VideoPlayer/VLCPlaybackDelegates.swift +58 -0
- package/ios/hybrids/VideoPlayerEmitter/HybridVideoPlayerEventEmitter.swift +203 -0
- package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSource.swift +55 -0
- package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSourceFactory.swift +29 -0
- package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManager.swift +266 -0
- package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManagerFactory.swift +14 -0
- package/ios/view/VideoComponentView.swift +196 -0
- package/ios/view/VideoComponentViewObserver.swift +48 -0
- package/lib/module/core/VideoPlayer.js +287 -0
- package/lib/module/core/VideoPlayer.js.map +1 -0
- package/lib/module/core/VideoPlayerEvents.js +84 -0
- package/lib/module/core/VideoPlayerEvents.js.map +1 -0
- package/lib/module/core/hooks/useEvent.js +19 -0
- package/lib/module/core/hooks/useEvent.js.map +1 -0
- package/lib/module/core/hooks/useManagedInstance.js +75 -0
- package/lib/module/core/hooks/useManagedInstance.js.map +1 -0
- package/lib/module/core/hooks/useVideoPlayer.js +57 -0
- package/lib/module/core/hooks/useVideoPlayer.js.map +1 -0
- package/lib/module/core/types/BufferConfig.js +2 -0
- package/lib/module/core/types/BufferConfig.js.map +1 -0
- package/lib/module/core/types/DrmParams.js +2 -0
- package/lib/module/core/types/DrmParams.js.map +1 -0
- package/lib/module/core/types/Events.js +10 -0
- package/lib/module/core/types/Events.js.map +1 -0
- package/lib/module/core/types/IgnoreSilentSwitchMode.js +2 -0
- package/lib/module/core/types/IgnoreSilentSwitchMode.js.map +1 -0
- package/lib/module/core/types/MixAudioMode.js +2 -0
- package/lib/module/core/types/MixAudioMode.js.map +1 -0
- package/lib/module/core/types/ResizeMode.js +2 -0
- package/lib/module/core/types/ResizeMode.js.map +1 -0
- package/lib/module/core/types/TextTrack.js +2 -0
- package/lib/module/core/types/TextTrack.js.map +1 -0
- package/lib/module/core/types/Utils.js +2 -0
- package/lib/module/core/types/Utils.js.map +1 -0
- package/lib/module/core/types/VideoConfig.js +4 -0
- package/lib/module/core/types/VideoConfig.js.map +1 -0
- package/lib/module/core/types/VideoError.js +100 -0
- package/lib/module/core/types/VideoError.js.map +1 -0
- package/lib/module/core/types/VideoInformation.js +4 -0
- package/lib/module/core/types/VideoInformation.js.map +1 -0
- package/lib/module/core/types/VideoOrientation.js +2 -0
- package/lib/module/core/types/VideoOrientation.js.map +1 -0
- package/lib/module/core/types/VideoPlayerBase.js +4 -0
- package/lib/module/core/types/VideoPlayerBase.js.map +1 -0
- package/lib/module/core/types/VideoPlayerSourceBase.js +4 -0
- package/lib/module/core/types/VideoPlayerSourceBase.js.map +1 -0
- package/lib/module/core/types/VideoPlayerStatus.js +2 -0
- package/lib/module/core/types/VideoPlayerStatus.js.map +1 -0
- package/lib/module/core/utils/playerFactory.js +25 -0
- package/lib/module/core/utils/playerFactory.js.map +1 -0
- package/lib/module/core/utils/sourceFactory.js +138 -0
- package/lib/module/core/utils/sourceFactory.js.map +1 -0
- package/lib/module/core/video-view/NativeVideoView.tsx +18 -0
- package/lib/module/core/video-view/VideoView.js +261 -0
- package/lib/module/core/video-view/VideoView.js.map +1 -0
- package/lib/module/expo-plugins/@types.js +2 -0
- package/lib/module/expo-plugins/@types.js.map +1 -0
- package/lib/module/expo-plugins/getPackageInfo.js +23 -0
- package/lib/module/expo-plugins/getPackageInfo.js.map +1 -0
- package/lib/module/expo-plugins/withAndroidExtensions.js +35 -0
- package/lib/module/expo-plugins/withAndroidExtensions.js.map +1 -0
- package/lib/module/expo-plugins/withAndroidNotificationControls.js +29 -0
- package/lib/module/expo-plugins/withAndroidNotificationControls.js.map +1 -0
- package/lib/module/expo-plugins/withAndroidPictureInPicture.js +18 -0
- package/lib/module/expo-plugins/withAndroidPictureInPicture.js.map +1 -0
- package/lib/module/expo-plugins/withBackgroundAudio.js +22 -0
- package/lib/module/expo-plugins/withBackgroundAudio.js.map +1 -0
- package/lib/module/expo-plugins/withReactNativeVideo.js +27 -0
- package/lib/module/expo-plugins/withReactNativeVideo.js.map +1 -0
- package/lib/module/expo-plugins/writeToPodfile.js +53 -0
- package/lib/module/expo-plugins/writeToPodfile.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/spec/fabric/VideoViewNativeComponent.ts +17 -0
- package/lib/module/spec/nitro/VideoPlayer.nitro.js +4 -0
- package/lib/module/spec/nitro/VideoPlayer.nitro.js.map +1 -0
- package/lib/module/spec/nitro/VideoPlayerEventEmitter.nitro.js +4 -0
- package/lib/module/spec/nitro/VideoPlayerEventEmitter.nitro.js.map +1 -0
- package/lib/module/spec/nitro/VideoPlayerSource.nitro.js +4 -0
- package/lib/module/spec/nitro/VideoPlayerSource.nitro.js.map +1 -0
- package/lib/module/spec/nitro/VideoViewViewManager.nitro.js +4 -0
- package/lib/module/spec/nitro/VideoViewViewManager.nitro.js.map +1 -0
- package/lib/typescript/drm-plugin/src/PluginManager.nitro.d.ts +10 -0
- package/lib/typescript/drm-plugin/src/PluginManager.nitro.d.ts.map +1 -0
- package/lib/typescript/drm-plugin/src/index.d.ts +4 -0
- package/lib/typescript/drm-plugin/src/index.d.ts.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/core/VideoPlayer.d.ts +88 -0
- package/lib/typescript/src/core/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/core/VideoPlayerEvents.d.ts +22 -0
- package/lib/typescript/src/core/VideoPlayerEvents.d.ts.map +1 -0
- package/lib/typescript/src/core/hooks/useEvent.d.ts +11 -0
- package/lib/typescript/src/core/hooks/useEvent.d.ts.map +1 -0
- package/lib/typescript/src/core/hooks/useManagedInstance.d.ts +19 -0
- package/lib/typescript/src/core/hooks/useManagedInstance.d.ts.map +1 -0
- package/lib/typescript/src/core/hooks/useVideoPlayer.d.ts +16 -0
- package/lib/typescript/src/core/hooks/useVideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/core/types/BufferConfig.d.ts +97 -0
- package/lib/typescript/src/core/types/BufferConfig.d.ts.map +1 -0
- package/lib/typescript/src/core/types/DrmParams.d.ts +64 -0
- package/lib/typescript/src/core/types/DrmParams.d.ts.map +1 -0
- package/lib/typescript/src/core/types/Events.d.ts +224 -0
- package/lib/typescript/src/core/types/Events.d.ts.map +1 -0
- package/lib/typescript/src/core/types/IgnoreSilentSwitchMode.d.ts +2 -0
- package/lib/typescript/src/core/types/IgnoreSilentSwitchMode.d.ts.map +1 -0
- package/lib/typescript/src/core/types/MixAudioMode.d.ts +2 -0
- package/lib/typescript/src/core/types/MixAudioMode.d.ts.map +1 -0
- package/lib/typescript/src/core/types/ResizeMode.d.ts +10 -0
- package/lib/typescript/src/core/types/ResizeMode.d.ts.map +1 -0
- package/lib/typescript/src/core/types/TextTrack.d.ts +20 -0
- package/lib/typescript/src/core/types/TextTrack.d.ts.map +1 -0
- package/lib/typescript/src/core/types/Utils.d.ts +2 -0
- package/lib/typescript/src/core/types/Utils.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoConfig.d.ts +138 -0
- package/lib/typescript/src/core/types/VideoConfig.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoError.d.ts +31 -0
- package/lib/typescript/src/core/types/VideoError.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoInformation.d.ts +38 -0
- package/lib/typescript/src/core/types/VideoInformation.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoOrientation.d.ts +2 -0
- package/lib/typescript/src/core/types/VideoOrientation.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoPlayerBase.d.ts +155 -0
- package/lib/typescript/src/core/types/VideoPlayerBase.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoPlayerSourceBase.d.ts +17 -0
- package/lib/typescript/src/core/types/VideoPlayerSourceBase.d.ts.map +1 -0
- package/lib/typescript/src/core/types/VideoPlayerStatus.d.ts +9 -0
- package/lib/typescript/src/core/types/VideoPlayerStatus.d.ts.map +1 -0
- package/lib/typescript/src/core/utils/playerFactory.d.ts +12 -0
- package/lib/typescript/src/core/utils/playerFactory.d.ts.map +1 -0
- package/lib/typescript/src/core/utils/sourceFactory.d.ts +29 -0
- package/lib/typescript/src/core/utils/sourceFactory.d.ts.map +1 -0
- package/lib/typescript/src/core/video-view/NativeVideoView.d.ts +2 -0
- package/lib/typescript/src/core/video-view/NativeVideoView.d.ts.map +1 -0
- package/lib/typescript/src/core/video-view/VideoView.d.ts +104 -0
- package/lib/typescript/src/core/video-view/VideoView.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +13 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/spec/fabric/VideoViewNativeComponent.d.ts +13 -0
- package/lib/typescript/src/spec/fabric/VideoViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/spec/nitro/VideoPlayer.nitro.d.ts +55 -0
- package/lib/typescript/src/spec/nitro/VideoPlayer.nitro.d.ts.map +1 -0
- package/lib/typescript/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts +150 -0
- package/lib/typescript/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts.map +1 -0
- package/lib/typescript/src/spec/nitro/VideoPlayerSource.nitro.d.ts +21 -0
- package/lib/typescript/src/spec/nitro/VideoPlayerSource.nitro.d.ts.map +1 -0
- package/lib/typescript/src/spec/nitro/VideoViewViewManager.nitro.d.ts +75 -0
- package/lib/typescript/src/spec/nitro/VideoViewViewManager.nitro.d.ts.map +1 -0
- package/nitro.json +47 -0
- package/nitrogen/generated/android/UnifiedPlayer+autolinking.cmake +95 -0
- package/nitrogen/generated/android/UnifiedPlayer+autolinking.gradle +27 -0
- package/nitrogen/generated/android/UnifiedPlayerOnLoad.cpp +122 -0
- package/nitrogen/generated/android/UnifiedPlayerOnLoad.hpp +34 -0
- package/nitrogen/generated/android/c++/JBandwidthData.hpp +65 -0
- package/nitrogen/generated/android/c++/JBufferConfig.hpp +101 -0
- package/nitrogen/generated/android/c++/JCustomVideoMetadata.hpp +74 -0
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.hpp +126 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_BandwidthData.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_TimedMetadata.hpp +81 -0
- package/nitrogen/generated/android/c++/JFunc_void_VideoPlayerStatus.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_onLoadData.hpp +79 -0
- package/nitrogen/generated/android/c++/JFunc_void_onLoadStartData.hpp +82 -0
- package/nitrogen/generated/android/c++/JFunc_void_onPlaybackStateChangeData.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_onProgressData.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_onVolumeChangeData.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__TextTrack__.hpp +83 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_std__string_.hpp +95 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.cpp +224 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.hpp +82 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.cpp +60 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.hpp +63 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.cpp +106 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.hpp +64 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.cpp +124 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.hpp +64 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.cpp +300 -0
- package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.hpp +98 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.cpp +56 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.hpp +63 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.cpp +185 -0
- package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.hpp +87 -0
- package/nitrogen/generated/android/c++/JIgnoreSilentSwitchMode.hpp +61 -0
- package/nitrogen/generated/android/c++/JListenerSubscription.hpp +67 -0
- package/nitrogen/generated/android/c++/JLivePlaybackParams.hpp +73 -0
- package/nitrogen/generated/android/c++/JMixAudioMode.hpp +64 -0
- package/nitrogen/generated/android/c++/JNativeDrmParams.hpp +111 -0
- package/nitrogen/generated/android/c++/JNativeExternalSubtitle.hpp +71 -0
- package/nitrogen/generated/android/c++/JNativeVideoConfig.hpp +136 -0
- package/nitrogen/generated/android/c++/JOnGetLicensePayload.hpp +69 -0
- package/nitrogen/generated/android/c++/JResizeMode.hpp +64 -0
- package/nitrogen/generated/android/c++/JResolution.hpp +61 -0
- package/nitrogen/generated/android/c++/JSourceType.hpp +58 -0
- package/nitrogen/generated/android/c++/JSubtitleType.hpp +67 -0
- package/nitrogen/generated/android/c++/JSurfaceType.hpp +58 -0
- package/nitrogen/generated/android/c++/JTextTrack.hpp +70 -0
- package/nitrogen/generated/android/c++/JTimedMetadata.hpp +78 -0
- package/nitrogen/generated/android/c++/JTimedMetadataObject.hpp +61 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_HybridVideoPlayerSourceSpec.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_HybridVideoPlayerSourceSpec.hpp +72 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_TextTrack.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_TextTrack.hpp +73 -0
- package/nitrogen/generated/android/c++/JVideoInformation.hpp +86 -0
- package/nitrogen/generated/android/c++/JVideoOrientation.hpp +73 -0
- package/nitrogen/generated/android/c++/JVideoPlayerStatus.hpp +64 -0
- package/nitrogen/generated/android/c++/JonLoadData.hpp +74 -0
- package/nitrogen/generated/android/c++/JonLoadStartData.hpp +65 -0
- package/nitrogen/generated/android/c++/JonPlaybackStateChangeData.hpp +61 -0
- package/nitrogen/generated/android/c++/JonProgressData.hpp +65 -0
- package/nitrogen/generated/android/c++/JonVolumeChangeData.hpp +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/BandwidthData.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/BufferConfig.kt +101 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/CustomVideoMetadata.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_BandwidthData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_TimedMetadata.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_VideoPlayerStatus.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_bool.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onLoadData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onLoadStartData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onPlaybackStateChangeData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onProgressData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onVolumeChangeData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_std__optional_std__variant_nitro__NullType__TextTrack__.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_std__vector_std__string_.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerEventEmitterSpec.kt +226 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerFactorySpec.kt +54 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSourceFactorySpec.kt +58 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSourceSpec.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSpec.kt +178 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoViewViewManagerFactorySpec.kt +54 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoViewViewManagerSpec.kt +168 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/IgnoreSilentSwitchMode.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/ListenerSubscription.kt +55 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/LivePlaybackParams.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/MixAudioMode.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeDrmParams.kt +85 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeExternalSubtitle.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeVideoConfig.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/OnGetLicensePayload.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/ResizeMode.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Resolution.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SourceType.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SubtitleType.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SurfaceType.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TextTrack.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TimedMetadata.kt +51 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TimedMetadataObject.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/UnifiedPlayerOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Variant_NullType_HybridVideoPlayerSourceSpec.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Variant_NullType_TextTrack.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoInformation.kt +86 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoOrientation.kt +28 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoPlayerStatus.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onLoadData.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onLoadStartData.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onPlaybackStateChangeData.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onProgressData.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onVolumeChangeData.kt +56 -0
- package/nitrogen/generated/ios/UnifiedPlayer+autolinking.rb +62 -0
- package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Bridge.cpp +280 -0
- package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Bridge.hpp +1106 -0
- package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Umbrella.hpp +162 -0
- package/nitrogen/generated/ios/UnifiedPlayerAutolinking.mm +49 -0
- package/nitrogen/generated/ios/UnifiedPlayerAutolinking.swift +50 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.hpp +279 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.hpp +87 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceFactorySpecSwift.hpp +125 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceSpecSwift.hpp +125 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoPlayerSpecSwift.hpp +256 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.hpp +84 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.hpp +217 -0
- package/nitrogen/generated/ios/swift/BandwidthData.swift +65 -0
- package/nitrogen/generated/ios/swift/BufferConfig.swift +201 -0
- package/nitrogen/generated/ios/swift/CustomVideoMetadata.swift +114 -0
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.swift +61 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BandwidthData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_TimedMetadata.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_VideoInformation.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_VideoPlayerStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onLoadData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onLoadStartData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onPlaybackStateChangeData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onProgressData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_onVolumeChangeData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__TextTrack__.swift +65 -0
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__string__.swift +66 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec.swift +74 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec_cxx.swift +479 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec.swift +55 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec_cxx.swift +145 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec_cxx.swift +156 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec_cxx.swift +157 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec.swift +80 -0
- package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec_cxx.swift +490 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec.swift +55 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec_cxx.swift +141 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec.swift +72 -0
- package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec_cxx.swift +390 -0
- package/nitrogen/generated/ios/swift/IgnoreSilentSwitchMode.swift +44 -0
- package/nitrogen/generated/ios/swift/ListenerSubscription.swift +37 -0
- package/nitrogen/generated/ios/swift/LivePlaybackParams.swift +114 -0
- package/nitrogen/generated/ios/swift/MixAudioMode.swift +48 -0
- package/nitrogen/generated/ios/swift/NativeDrmParams.swift +193 -0
- package/nitrogen/generated/ios/swift/NativeExternalSubtitle.swift +44 -0
- package/nitrogen/generated/ios/swift/NativeVideoConfig.swift +136 -0
- package/nitrogen/generated/ios/swift/OnGetLicensePayload.swift +44 -0
- package/nitrogen/generated/ios/swift/ResizeMode.swift +48 -0
- package/nitrogen/generated/ios/swift/Resolution.swift +34 -0
- package/nitrogen/generated/ios/swift/SourceType.swift +40 -0
- package/nitrogen/generated/ios/swift/SubtitleType.swift +52 -0
- package/nitrogen/generated/ios/swift/SurfaceType.swift +40 -0
- package/nitrogen/generated/ios/swift/TextTrack.swift +57 -0
- package/nitrogen/generated/ios/swift/TimedMetadata.swift +35 -0
- package/nitrogen/generated/ios/swift/TimedMetadataObject.swift +34 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_TextTrack.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType__any_HybridVideoPlayerSourceSpec_.swift +30 -0
- package/nitrogen/generated/ios/swift/VideoInformation.swift +64 -0
- package/nitrogen/generated/ios/swift/VideoOrientation.swift +60 -0
- package/nitrogen/generated/ios/swift/VideoPlayerStatus.swift +48 -0
- package/nitrogen/generated/ios/swift/onLoadData.swift +49 -0
- package/nitrogen/generated/ios/swift/onLoadStartData.swift +41 -0
- package/nitrogen/generated/ios/swift/onPlaybackStateChangeData.swift +34 -0
- package/nitrogen/generated/ios/swift/onProgressData.swift +39 -0
- package/nitrogen/generated/ios/swift/onVolumeChangeData.swift +34 -0
- package/nitrogen/generated/shared/c++/BandwidthData.hpp +91 -0
- package/nitrogen/generated/shared/c++/BufferConfig.hpp +128 -0
- package/nitrogen/generated/shared/c++/CustomVideoMetadata.hpp +100 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.cpp +40 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.hpp +115 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerFactorySpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerFactorySpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceFactorySpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceFactorySpec.hpp +69 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceSpec.hpp +69 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.cpp +57 -0
- package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.hpp +120 -0
- package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerFactorySpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerFactorySpec.hpp +64 -0
- package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerSpec.cpp +46 -0
- package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerSpec.hpp +99 -0
- package/nitrogen/generated/shared/c++/IgnoreSilentSwitchMode.hpp +80 -0
- package/nitrogen/generated/shared/c++/ListenerSubscription.hpp +83 -0
- package/nitrogen/generated/shared/c++/LivePlaybackParams.hpp +99 -0
- package/nitrogen/generated/shared/c++/MixAudioMode.hpp +84 -0
- package/nitrogen/generated/shared/c++/NativeDrmParams.hpp +113 -0
- package/nitrogen/generated/shared/c++/NativeExternalSubtitle.hpp +97 -0
- package/nitrogen/generated/shared/c++/NativeVideoConfig.hpp +121 -0
- package/nitrogen/generated/shared/c++/OnGetLicensePayload.hpp +95 -0
- package/nitrogen/generated/shared/c++/ResizeMode.hpp +84 -0
- package/nitrogen/generated/shared/c++/Resolution.hpp +87 -0
- package/nitrogen/generated/shared/c++/SourceType.hpp +76 -0
- package/nitrogen/generated/shared/c++/SubtitleType.hpp +88 -0
- package/nitrogen/generated/shared/c++/SurfaceType.hpp +76 -0
- package/nitrogen/generated/shared/c++/TextTrack.hpp +96 -0
- package/nitrogen/generated/shared/c++/TimedMetadata.hpp +85 -0
- package/nitrogen/generated/shared/c++/TimedMetadataObject.hpp +87 -0
- package/nitrogen/generated/shared/c++/VideoInformation.hpp +112 -0
- package/nitrogen/generated/shared/c++/VideoOrientation.hpp +96 -0
- package/nitrogen/generated/shared/c++/VideoPlayerStatus.hpp +84 -0
- package/nitrogen/generated/shared/c++/onLoadData.hpp +100 -0
- package/nitrogen/generated/shared/c++/onLoadStartData.hpp +92 -0
- package/nitrogen/generated/shared/c++/onPlaybackStateChangeData.hpp +87 -0
- package/nitrogen/generated/shared/c++/onProgressData.hpp +91 -0
- package/nitrogen/generated/shared/c++/onVolumeChangeData.hpp +87 -0
- package/package.json +180 -0
- package/react-native.config.js +10 -0
- package/src/core/VideoPlayer.ts +357 -0
- package/src/core/VideoPlayerEvents.ts +146 -0
- package/src/core/hooks/useEvent.ts +24 -0
- package/src/core/hooks/useManagedInstance.ts +96 -0
- package/src/core/hooks/useVideoPlayer.ts +73 -0
- package/src/core/types/BufferConfig.ts +103 -0
- package/src/core/types/DrmParams.ts +65 -0
- package/src/core/types/Events.ts +283 -0
- package/src/core/types/IgnoreSilentSwitchMode.ts +1 -0
- package/src/core/types/MixAudioMode.ts +1 -0
- package/src/core/types/ResizeMode.ts +9 -0
- package/src/core/types/TextTrack.ts +22 -0
- package/src/core/types/Utils.ts +1 -0
- package/src/core/types/VideoConfig.ts +150 -0
- package/src/core/types/VideoError.ts +174 -0
- package/src/core/types/VideoInformation.ts +45 -0
- package/src/core/types/VideoOrientation.ts +8 -0
- package/src/core/types/VideoPlayerBase.ts +181 -0
- package/src/core/types/VideoPlayerSourceBase.ts +19 -0
- package/src/core/types/VideoPlayerStatus.ts +8 -0
- package/src/core/utils/playerFactory.ts +33 -0
- package/src/core/utils/sourceFactory.ts +171 -0
- package/src/core/video-view/NativeVideoView.tsx +18 -0
- package/src/core/video-view/VideoView.tsx +492 -0
- package/src/expo-plugins/@types.ts +37 -0
- package/src/expo-plugins/getPackageInfo.ts +23 -0
- package/src/expo-plugins/withAndroidExtensions.ts +46 -0
- package/src/expo-plugins/withAndroidNotificationControls.ts +43 -0
- package/src/expo-plugins/withAndroidPictureInPicture.ts +31 -0
- package/src/expo-plugins/withBackgroundAudio.ts +26 -0
- package/src/expo-plugins/withReactNativeVideo.ts +32 -0
- package/src/expo-plugins/writeToPodfile.ts +74 -0
- package/src/index.tsx +29 -0
- package/src/spec/fabric/VideoViewNativeComponent.ts +17 -0
- package/src/spec/nitro/VideoPlayer.nitro.ts +62 -0
- package/src/spec/nitro/VideoPlayerEventEmitter.nitro.ts +207 -0
- package/src/spec/nitro/VideoPlayerSource.nitro.ts +18 -0
- package/src/spec/nitro/VideoViewViewManager.nitro.ts +92 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ListenerSubscription,
|
|
3
|
+
VideoPlayerEventEmitter,
|
|
4
|
+
} from '../spec/nitro/VideoPlayerEventEmitter.nitro';
|
|
5
|
+
import {
|
|
6
|
+
ALL_PLAYER_EVENTS,
|
|
7
|
+
type JSVideoPlayerEvents,
|
|
8
|
+
type AllPlayerEvents as PlayerEvents,
|
|
9
|
+
} from './types/Events';
|
|
10
|
+
|
|
11
|
+
export class VideoPlayerEvents {
|
|
12
|
+
protected eventEmitter: VideoPlayerEventEmitter;
|
|
13
|
+
protected jsEventListeners: Partial<
|
|
14
|
+
Record<keyof JSVideoPlayerEvents, Set<(...params: any[]) => void>>
|
|
15
|
+
> = {};
|
|
16
|
+
|
|
17
|
+
protected readonly supportedEvents: (keyof PlayerEvents)[] =
|
|
18
|
+
ALL_PLAYER_EVENTS;
|
|
19
|
+
|
|
20
|
+
constructor(eventEmitter: VideoPlayerEventEmitter) {
|
|
21
|
+
this.eventEmitter = eventEmitter;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
protected triggerJSEvent<Event extends keyof JSVideoPlayerEvents>(
|
|
25
|
+
event: Event,
|
|
26
|
+
...params: Parameters<JSVideoPlayerEvents[Event]>
|
|
27
|
+
): boolean {
|
|
28
|
+
if (!this.jsEventListeners[event]) return false;
|
|
29
|
+
this.jsEventListeners[event]?.forEach((fn) => fn(...params));
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Adds a listener for a player event.
|
|
35
|
+
* @throw Error if the event is not supported.
|
|
36
|
+
* @param event - The event to add a listener for.
|
|
37
|
+
* @param callback - The callback to call when the event is triggered.
|
|
38
|
+
* @returns A subscription object that can be used to remove the listener.
|
|
39
|
+
*/
|
|
40
|
+
addEventListener<Event extends keyof PlayerEvents>(
|
|
41
|
+
event: Event,
|
|
42
|
+
callback: PlayerEvents[Event]
|
|
43
|
+
): ListenerSubscription {
|
|
44
|
+
switch (event) {
|
|
45
|
+
// ----------------- JS Events -----------------
|
|
46
|
+
case 'onError':
|
|
47
|
+
this.jsEventListeners.onError ??= new Set();
|
|
48
|
+
this.jsEventListeners.onError.add(
|
|
49
|
+
callback as JSVideoPlayerEvents['onError']
|
|
50
|
+
);
|
|
51
|
+
return {
|
|
52
|
+
remove: () =>
|
|
53
|
+
this.jsEventListeners.onError?.delete(
|
|
54
|
+
callback as JSVideoPlayerEvents['onError']
|
|
55
|
+
),
|
|
56
|
+
};
|
|
57
|
+
// ----------------- Native Events -----------------
|
|
58
|
+
case 'onAudioBecomingNoisy':
|
|
59
|
+
return this.eventEmitter.addOnAudioBecomingNoisyListener(
|
|
60
|
+
callback as PlayerEvents['onAudioBecomingNoisy']
|
|
61
|
+
);
|
|
62
|
+
case 'onAudioFocusChange':
|
|
63
|
+
return this.eventEmitter.addOnAudioFocusChangeListener(
|
|
64
|
+
callback as PlayerEvents['onAudioFocusChange']
|
|
65
|
+
);
|
|
66
|
+
case 'onBandwidthUpdate':
|
|
67
|
+
return this.eventEmitter.addOnBandwidthUpdateListener(
|
|
68
|
+
callback as PlayerEvents['onBandwidthUpdate']
|
|
69
|
+
);
|
|
70
|
+
case 'onBuffer':
|
|
71
|
+
return this.eventEmitter.addOnBufferListener(
|
|
72
|
+
callback as PlayerEvents['onBuffer']
|
|
73
|
+
);
|
|
74
|
+
case 'onControlsVisibleChange':
|
|
75
|
+
return this.eventEmitter.addOnControlsVisibleChangeListener(
|
|
76
|
+
callback as PlayerEvents['onControlsVisibleChange']
|
|
77
|
+
);
|
|
78
|
+
case 'onEnd':
|
|
79
|
+
return this.eventEmitter.addOnEndListener(
|
|
80
|
+
callback as PlayerEvents['onEnd']
|
|
81
|
+
);
|
|
82
|
+
case 'onExternalPlaybackChange':
|
|
83
|
+
return this.eventEmitter.addOnExternalPlaybackChangeListener(
|
|
84
|
+
callback as PlayerEvents['onExternalPlaybackChange']
|
|
85
|
+
);
|
|
86
|
+
case 'onLoad':
|
|
87
|
+
return this.eventEmitter.addOnLoadListener(
|
|
88
|
+
callback as PlayerEvents['onLoad']
|
|
89
|
+
);
|
|
90
|
+
case 'onLoadStart':
|
|
91
|
+
return this.eventEmitter.addOnLoadStartListener(
|
|
92
|
+
callback as PlayerEvents['onLoadStart']
|
|
93
|
+
);
|
|
94
|
+
case 'onPlaybackStateChange':
|
|
95
|
+
return this.eventEmitter.addOnPlaybackStateChangeListener(
|
|
96
|
+
callback as PlayerEvents['onPlaybackStateChange']
|
|
97
|
+
);
|
|
98
|
+
case 'onPlaybackRateChange':
|
|
99
|
+
return this.eventEmitter.addOnPlaybackRateChangeListener(
|
|
100
|
+
callback as PlayerEvents['onPlaybackRateChange']
|
|
101
|
+
);
|
|
102
|
+
case 'onProgress':
|
|
103
|
+
return this.eventEmitter.addOnProgressListener(
|
|
104
|
+
callback as PlayerEvents['onProgress']
|
|
105
|
+
);
|
|
106
|
+
case 'onReadyToDisplay':
|
|
107
|
+
return this.eventEmitter.addOnReadyToDisplayListener(
|
|
108
|
+
callback as PlayerEvents['onReadyToDisplay']
|
|
109
|
+
);
|
|
110
|
+
case 'onSeek':
|
|
111
|
+
return this.eventEmitter.addOnSeekListener(
|
|
112
|
+
callback as PlayerEvents['onSeek']
|
|
113
|
+
);
|
|
114
|
+
case 'onTimedMetadata':
|
|
115
|
+
return this.eventEmitter.addOnTimedMetadataListener(
|
|
116
|
+
callback as PlayerEvents['onTimedMetadata']
|
|
117
|
+
);
|
|
118
|
+
case 'onTextTrackDataChanged':
|
|
119
|
+
return this.eventEmitter.addOnTextTrackDataChangedListener(
|
|
120
|
+
callback as PlayerEvents['onTextTrackDataChanged']
|
|
121
|
+
);
|
|
122
|
+
case 'onTrackChange':
|
|
123
|
+
return this.eventEmitter.addOnTrackChangeListener(
|
|
124
|
+
callback as PlayerEvents['onTrackChange']
|
|
125
|
+
);
|
|
126
|
+
case 'onVolumeChange':
|
|
127
|
+
return this.eventEmitter.addOnVolumeChangeListener(
|
|
128
|
+
callback as PlayerEvents['onVolumeChange']
|
|
129
|
+
);
|
|
130
|
+
case 'onStatusChange':
|
|
131
|
+
return this.eventEmitter.addOnStatusChangeListener(
|
|
132
|
+
callback as PlayerEvents['onStatusChange']
|
|
133
|
+
);
|
|
134
|
+
default:
|
|
135
|
+
throw new Error(`[Unified Player] Unsupported event: ${event}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Clears all events from the event emitter.
|
|
141
|
+
*/
|
|
142
|
+
clearAllEvents() {
|
|
143
|
+
this.jsEventListeners = {};
|
|
144
|
+
this.eventEmitter.clearAllListeners();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { VideoPlayer } from '../VideoPlayer';
|
|
3
|
+
import { type AllPlayerEvents } from '../types/Events';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Attaches an event listener to a `VideoPlayer` instance for a specified event.
|
|
7
|
+
*
|
|
8
|
+
* @param player - The player to attach the event to
|
|
9
|
+
* @param event - The name of the event to attach the callback to
|
|
10
|
+
* @param callback - The callback for the event
|
|
11
|
+
*/
|
|
12
|
+
export const useEvent = <T extends keyof AllPlayerEvents>(
|
|
13
|
+
player: VideoPlayer,
|
|
14
|
+
event: T,
|
|
15
|
+
callback: AllPlayerEvents[T]
|
|
16
|
+
) => {
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const subscription = player.addEventListener(event, callback);
|
|
19
|
+
|
|
20
|
+
return () => {
|
|
21
|
+
subscription.remove();
|
|
22
|
+
};
|
|
23
|
+
}, [player, event, callback]);
|
|
24
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useEffect,
|
|
3
|
+
useMemo,
|
|
4
|
+
useRef,
|
|
5
|
+
useState,
|
|
6
|
+
type DependencyList,
|
|
7
|
+
} from 'react';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
* A hook that helps to manage the lifecycle of a native instance in a React component.
|
|
12
|
+
* It allows instance to be recreated when dependencies change, but not when the component is hot reloaded.
|
|
13
|
+
*
|
|
14
|
+
* @param config.factory - The factory function that creates the instance.
|
|
15
|
+
* @param config.cleanup - The cleanup function that destroys the instance.
|
|
16
|
+
* @param config.dependenciesEqualFn - The function that compares the dependencies.
|
|
17
|
+
*
|
|
18
|
+
* @param dependencies - The dependencies array.
|
|
19
|
+
* @returns The managed instance.
|
|
20
|
+
*/
|
|
21
|
+
export const useManagedInstance = <T, D extends DependencyList[number]>(
|
|
22
|
+
config: {
|
|
23
|
+
factory: () => T;
|
|
24
|
+
cleanup: (object: T) => void;
|
|
25
|
+
dependenciesEqualFn?: (a: D, b?: D) => boolean;
|
|
26
|
+
},
|
|
27
|
+
dependencies: D[]
|
|
28
|
+
): T => {
|
|
29
|
+
const { factory, cleanup, dependenciesEqualFn } = config;
|
|
30
|
+
|
|
31
|
+
const objectRef = useRef<T | null>(null);
|
|
32
|
+
const isFastRefresh = useRef(false);
|
|
33
|
+
const previousDependencies = useRef(dependencies);
|
|
34
|
+
|
|
35
|
+
// Wee need to force a "re-render" to recalculate the object
|
|
36
|
+
const [released, setReleased] = useState(false);
|
|
37
|
+
|
|
38
|
+
if (objectRef.current == null) {
|
|
39
|
+
objectRef.current = factory();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const object = useMemo(() => {
|
|
43
|
+
let newObject = objectRef.current;
|
|
44
|
+
|
|
45
|
+
const dependenciesChanged =
|
|
46
|
+
previousDependencies.current?.length === dependencies.length &&
|
|
47
|
+
dependencies.every(
|
|
48
|
+
(value, index) =>
|
|
49
|
+
dependenciesEqualFn?.(value, previousDependencies.current[index]) ??
|
|
50
|
+
value === previousDependencies.current[index]
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
if (!newObject || !dependenciesChanged || released) {
|
|
54
|
+
// Destroy the old object
|
|
55
|
+
if (objectRef.current) {
|
|
56
|
+
cleanup(objectRef.current);
|
|
57
|
+
objectRef.current = null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Create a new object
|
|
61
|
+
newObject = factory();
|
|
62
|
+
objectRef.current = newObject;
|
|
63
|
+
setReleased(false);
|
|
64
|
+
|
|
65
|
+
// Update the previous dependencies
|
|
66
|
+
previousDependencies.current = dependencies;
|
|
67
|
+
} else {
|
|
68
|
+
// If useMemo is re-evaluated, but dependencies are the same
|
|
69
|
+
// and object is still the same, we can assume that that
|
|
70
|
+
// the component is being hot reloaded
|
|
71
|
+
isFastRefresh.current = true;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return newObject;
|
|
75
|
+
|
|
76
|
+
// factory and cleanup are stable, so we don't need to re-evaluate
|
|
77
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
78
|
+
}, [...dependencies, released]);
|
|
79
|
+
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
isFastRefresh.current = false;
|
|
82
|
+
|
|
83
|
+
return () => {
|
|
84
|
+
if (!isFastRefresh.current && objectRef.current) {
|
|
85
|
+
cleanup(objectRef.current);
|
|
86
|
+
objectRef.current = null;
|
|
87
|
+
setReleased(true);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// factory and cleanup are stable, so we don't need to re-evaluate
|
|
92
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
93
|
+
}, []);
|
|
94
|
+
|
|
95
|
+
return object;
|
|
96
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
import type { VideoPlayerSource } from '../../spec/nitro/VideoPlayerSource.nitro';
|
|
3
|
+
import type { NoAutocomplete } from '../types/Utils';
|
|
4
|
+
import type { VideoConfig, VideoSource } from '../types/VideoConfig';
|
|
5
|
+
import { isVideoPlayerSource } from '../utils/sourceFactory';
|
|
6
|
+
import { VideoPlayer } from '../VideoPlayer';
|
|
7
|
+
import { useManagedInstance } from './useManagedInstance';
|
|
8
|
+
|
|
9
|
+
const sourceEqual = <T extends VideoConfig | VideoSource | VideoPlayerSource>(
|
|
10
|
+
a: T,
|
|
11
|
+
b?: T
|
|
12
|
+
) => {
|
|
13
|
+
if (isVideoPlayerSource(a) && isVideoPlayerSource(b)) {
|
|
14
|
+
return a.equals(b);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Creates a `VideoPlayer` instance and manages its lifecycle.
|
|
22
|
+
*
|
|
23
|
+
* if `initializeOnCreation` is true (default), the `setup` function will be called when the player is started loading source.
|
|
24
|
+
* if `initializeOnCreation` is false, the `setup` function will be called when the player is created. changes made to player made before initializing will be overwritten when initializing.
|
|
25
|
+
*
|
|
26
|
+
* @param source - The source of the video to play
|
|
27
|
+
* @param setup - A function to setup the player
|
|
28
|
+
* @returns The `VideoPlayer` instance
|
|
29
|
+
*/
|
|
30
|
+
export const useVideoPlayer = (
|
|
31
|
+
source: VideoConfig | VideoSource | NoAutocomplete<VideoPlayerSource>,
|
|
32
|
+
setup?: (player: VideoPlayer) => void
|
|
33
|
+
) => {
|
|
34
|
+
const setupCalled = useRef(false);
|
|
35
|
+
|
|
36
|
+
return useManagedInstance(
|
|
37
|
+
{
|
|
38
|
+
factory: () => {
|
|
39
|
+
const player = new VideoPlayer(source);
|
|
40
|
+
|
|
41
|
+
if (setup === undefined) {
|
|
42
|
+
return player;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (player.source.config.initializeOnCreation !== false) {
|
|
46
|
+
// if source is small video, it can happen that onLoadStart is called before we set event from JS
|
|
47
|
+
// Thats why we adding event listener and calling setup once if player is loading or ready to play
|
|
48
|
+
// That way we ensure that setup is always called
|
|
49
|
+
|
|
50
|
+
const callSetupOnce = () => {
|
|
51
|
+
if (!setupCalled.current) {
|
|
52
|
+
setupCalled.current = true;
|
|
53
|
+
setup?.(player);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
player.addEventListener('onLoadStart', callSetupOnce);
|
|
58
|
+
player.addEventListener('onStatusChange', callSetupOnce);
|
|
59
|
+
} else {
|
|
60
|
+
setup?.(player);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return player;
|
|
64
|
+
},
|
|
65
|
+
cleanup: (player) => {
|
|
66
|
+
player.__destroy();
|
|
67
|
+
setupCalled.current = false;
|
|
68
|
+
},
|
|
69
|
+
dependenciesEqualFn: sourceEqual,
|
|
70
|
+
},
|
|
71
|
+
[JSON.stringify(source)]
|
|
72
|
+
);
|
|
73
|
+
};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export interface LivePlaybackParams {
|
|
2
|
+
/**
|
|
3
|
+
* Minimum playback speed for catching up to target live offset.
|
|
4
|
+
* @platform android
|
|
5
|
+
*/
|
|
6
|
+
minPlaybackSpeed?: number;
|
|
7
|
+
/**
|
|
8
|
+
* Maximum playback speed for catching up to target live offset.
|
|
9
|
+
* @platform android
|
|
10
|
+
*/
|
|
11
|
+
maxPlaybackSpeed?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Maximum allowed live offset. The player won’t exceed this limit.
|
|
14
|
+
* @platform android
|
|
15
|
+
*/
|
|
16
|
+
maxOffsetMs?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Minimum allowed live offset. The player won’t go below this limit.
|
|
19
|
+
* @platform android
|
|
20
|
+
*/
|
|
21
|
+
minOffsetMs?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Target live offset. The player will try to maintain this offset.
|
|
24
|
+
* @platform android, ios, visionOS, tvOS
|
|
25
|
+
*/
|
|
26
|
+
targetOffsetMs?: number;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface Resolution {
|
|
30
|
+
width: number;
|
|
31
|
+
height: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface BufferConfig {
|
|
35
|
+
/**
|
|
36
|
+
* Configuration for live playback.
|
|
37
|
+
*/
|
|
38
|
+
livePlayback?: LivePlaybackParams;
|
|
39
|
+
|
|
40
|
+
// -------- Android specific options --------
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Minimum duration (ms) the player will attempt to keep buffered.
|
|
44
|
+
* @default 5000
|
|
45
|
+
* @platform android
|
|
46
|
+
*/
|
|
47
|
+
minBufferMs?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Maximum duration (ms) the player will attempt to keep buffered.
|
|
50
|
+
* @default 10000
|
|
51
|
+
* @platform android
|
|
52
|
+
*/
|
|
53
|
+
maxBufferMs?: number;
|
|
54
|
+
/**
|
|
55
|
+
* Duration (ms) of media that must be buffered for playback to start or resume following a user action such as a seek.
|
|
56
|
+
* @default 1000
|
|
57
|
+
* @platform android
|
|
58
|
+
*/
|
|
59
|
+
bufferForPlaybackMs?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Duration (ms) of media that must be buffered for playback to resume after a rebuffer.
|
|
62
|
+
* @default 2000
|
|
63
|
+
* @platform android
|
|
64
|
+
*/
|
|
65
|
+
bufferForPlaybackAfterRebufferMs?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Duration (ms) of media that must be buffered before it can be played from the back buffer.
|
|
68
|
+
* @platform android
|
|
69
|
+
*/
|
|
70
|
+
backBufferDurationMs?: number;
|
|
71
|
+
|
|
72
|
+
// -------- iOS specific options --------
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The preferred duration (ms) of media that the player will attempt to retain in the buffer.
|
|
76
|
+
* @platform ios, visionOS, tvOS
|
|
77
|
+
*/
|
|
78
|
+
preferredForwardBufferDurationMs?: number;
|
|
79
|
+
/**
|
|
80
|
+
* The desired limit, in bits per second, of network bandwidth used for loading the current item.
|
|
81
|
+
*
|
|
82
|
+
* You can use {@linkcode preferredPeakBitRateForExpensiveNetworks} to set a different bit rate when on an expensive network (e.g. cellular).
|
|
83
|
+
* @platform ios, visionOS, tvOS
|
|
84
|
+
*/
|
|
85
|
+
preferredPeakBitRate?: number;
|
|
86
|
+
/**
|
|
87
|
+
* The preferred maximum resolution of the video.
|
|
88
|
+
*
|
|
89
|
+
* You can use {@linkcode preferredMaximumResolutionForExpensiveNetworks} to set a different resolution when on an expensive network (e.g. cellular).
|
|
90
|
+
* @platform ios, visionOS, tvOS
|
|
91
|
+
*/
|
|
92
|
+
preferredMaximumResolution?: Resolution;
|
|
93
|
+
/**
|
|
94
|
+
* The desired limit, in bits per second, of network bandwidth used for loading the current item when on an expensive network (e.g. cellular).
|
|
95
|
+
* @platform ios, visionOS, tvOS
|
|
96
|
+
*/
|
|
97
|
+
preferredPeakBitRateForExpensiveNetworks?: number;
|
|
98
|
+
/**
|
|
99
|
+
* The preferred maximum resolution of the video when on an expensive network (e.g. cellular).
|
|
100
|
+
* @platform ios, visionOS, tvOS
|
|
101
|
+
*/
|
|
102
|
+
preferredMaximumResolutionForExpensiveNetworks?: Resolution;
|
|
103
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headers type specifically for DRM license requests
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export interface DrmParams {
|
|
6
|
+
/**
|
|
7
|
+
* The license URL for the DRM license request.
|
|
8
|
+
* @platform Android, iOS, visionOS
|
|
9
|
+
*/
|
|
10
|
+
licenseUrl?: string;
|
|
11
|
+
/**
|
|
12
|
+
* The certificate URL for the DRM license request.
|
|
13
|
+
* @platform iOS, visionOS
|
|
14
|
+
*/
|
|
15
|
+
certificateUrl?: string;
|
|
16
|
+
/**
|
|
17
|
+
* The content ID for the DRM license request.
|
|
18
|
+
* @platform iOS, visionOS
|
|
19
|
+
*/
|
|
20
|
+
contentId?: string;
|
|
21
|
+
/**
|
|
22
|
+
* The type of DRM to use.
|
|
23
|
+
* @platform Android, iOS, visionOS
|
|
24
|
+
*/
|
|
25
|
+
type?: DRMType;
|
|
26
|
+
/**
|
|
27
|
+
* The headers to send with the DRM license request.
|
|
28
|
+
* @platform Android, iOS, visionOS
|
|
29
|
+
*/
|
|
30
|
+
licenseHeaders?: Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* Whether to allow multiple sessions for the DRM license request.
|
|
33
|
+
* @platform Android
|
|
34
|
+
*/
|
|
35
|
+
multiSession?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* A function to get the license for the DRM license request.
|
|
38
|
+
* @platform iOS
|
|
39
|
+
*/
|
|
40
|
+
getLicense?: (payload: OnGetLicensePayload) => Promise<string>;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
interface OnGetLicensePayload {
|
|
44
|
+
/**
|
|
45
|
+
* The content ID for the DRM license request.
|
|
46
|
+
* This is typically a unique identifier for the content being played.
|
|
47
|
+
*/
|
|
48
|
+
contentId: string;
|
|
49
|
+
/**
|
|
50
|
+
* The license URL for the DRM license request.
|
|
51
|
+
*/
|
|
52
|
+
licenseUrl: string;
|
|
53
|
+
/**
|
|
54
|
+
* The key URL for the DRM license request.
|
|
55
|
+
* Typically starts with starting with skd:// or clearkey://
|
|
56
|
+
*/
|
|
57
|
+
keyUrl: string;
|
|
58
|
+
/**
|
|
59
|
+
* The secure playback context (SPC) for the DRM license request.
|
|
60
|
+
* This is typically a base64-encoded string that contains information about the playback environment.
|
|
61
|
+
*/
|
|
62
|
+
spc: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
type DRMType = 'widevine' | 'fairplay' | (string & {});
|