expo-mpv 0.1.1 → 0.1.2
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/build/ExpoMpv.types.d.ts +2 -0
- package/build/ExpoMpv.types.d.ts.map +1 -1
- package/build/ExpoMpv.types.js.map +1 -1
- package/build/ExpoMpvView.d.ts.map +1 -1
- package/build/ExpoMpvView.js +1 -0
- package/build/ExpoMpvView.js.map +1 -1
- package/ios/ExpoMpv.podspec +1 -0
- package/ios/ExpoMpvModule.swift +4 -0
- package/ios/ExpoMpvView.swift +9 -0
- package/package.json +1 -1
- package/src/ExpoMpv.types.ts +2 -0
- package/src/ExpoMpvView.tsx +2 -0
package/build/ExpoMpv.types.d.ts
CHANGED
|
@@ -151,6 +151,8 @@ export type ExpoMpvViewRef = {
|
|
|
151
151
|
reloadSubtitles: () => Promise<void>;
|
|
152
152
|
/** Set subtitle delay in seconds (positive = later, negative = earlier). */
|
|
153
153
|
setSubtitleDelay: (seconds: number) => Promise<void>;
|
|
154
|
+
/** Set an mpv property by name (string value). */
|
|
155
|
+
setPropertyString: (name: string, value: string) => Promise<void>;
|
|
154
156
|
getPlaybackInfo: () => Promise<PlaybackInfo>;
|
|
155
157
|
getTrackList: () => Promise<TrackInfo[]>;
|
|
156
158
|
getCurrentTrackIds: () => Promise<CurrentTrackIds>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoMpv.types.d.ts","sourceRoot":"","sources":["../src/ExpoMpv.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExpoMpv.types.d.ts","sourceRoot":"","sources":["../src/ExpoMpv.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoMpv.types.js","sourceRoot":"","sources":["../src/ExpoMpv.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { StyleProp, ViewStyle } from 'react-native';\n\n// MARK: - Event Payloads\n\nexport type PlaybackStateChangeEvent = {\n state: 'playing' | 'paused' | 'stopped';\n isPlaying: boolean;\n};\n\nexport type ProgressEvent = {\n position: number;\n duration: number;\n bufferedDuration: number;\n};\n\nexport type LoadEvent = {\n duration: number;\n width: number;\n height: number;\n};\n\nexport type ErrorEvent = {\n error: string;\n};\n\nexport type EndEvent = {\n reason: 'ended' | 'error' | 'stopped' | 'unknown';\n};\n\nexport type BufferEvent = {\n isBuffering: boolean;\n};\n\nexport type SeekEvent = {};\n\nexport type VolumeChangeEvent = {\n volume: number;\n muted: boolean;\n};\n\nexport type PlaybackInfo = {\n position: number;\n duration: number;\n isPlaying: boolean;\n speed: number;\n volume: number;\n muted: boolean;\n};\n\nexport type TrackInfo = {\n id: number;\n type: 'video' | 'audio' | 'sub' | string;\n title: string;\n lang: string;\n codec: string;\n selected: boolean;\n isDefault: boolean;\n isExternal: boolean;\n // audio-specific\n channelCount?: number;\n sampleRate?: number;\n // video-specific\n width?: number;\n height?: number;\n fps?: number;\n};\n\nexport type CurrentTrackIds = {\n vid: number;\n aid: number;\n sid: number;\n};\n\n// MARK: - Module Events (non-view)\n\nexport type ExpoMpvModuleEvents = {};\n\n// MARK: - View Props\n\nexport type ExpoMpvViewProps = {\n /**\n * Media source URL to play. Can be a remote URL or a local file path.\n */\n source?: string;\n\n /**\n * Whether playback is paused.\n */\n paused?: boolean;\n\n /**\n * Playback speed multiplier. Default is 1.0.\n */\n speed?: number;\n\n /**\n * Volume level (0-100). Default is 100.\n */\n volume?: number;\n\n /**\n * Whether audio is muted.\n */\n muted?: boolean;\n\n /**\n * Whether to loop the current file.\n */\n loop?: boolean;\n\n /**\n * Called when playback state changes (play/pause).\n */\n onPlaybackStateChange?: (event: { nativeEvent: PlaybackStateChangeEvent }) => void;\n\n /**\n * Called periodically with current playback progress.\n */\n onProgress?: (event: { nativeEvent: ProgressEvent }) => void;\n\n /**\n * Called when a media file has been loaded and is ready to play.\n */\n onLoad?: (event: { nativeEvent: LoadEvent }) => void;\n\n /**\n * Called when an error occurs.\n */\n onError?: (event: { nativeEvent: ErrorEvent }) => void;\n\n /**\n * Called when playback reaches the end.\n */\n onEnd?: (event: { nativeEvent: EndEvent }) => void;\n\n /**\n * Called when buffering state changes.\n */\n onBuffer?: (event: { nativeEvent: BufferEvent }) => void;\n\n /**\n * Called when a seek operation completes.\n */\n onSeek?: (event: { nativeEvent: SeekEvent }) => void;\n\n /**\n * Called when volume or mute state changes.\n */\n onVolumeChange?: (event: { nativeEvent: VolumeChangeEvent }) => void;\n\n style?: StyleProp<ViewStyle>;\n};\n\n// MARK: - View Ref Methods\n\nexport type ExpoMpvViewRef = {\n play: () => Promise<void>;\n pause: () => Promise<void>;\n togglePlay: () => Promise<void>;\n stop: () => Promise<void>;\n seekTo: (position: number) => Promise<void>;\n seekBy: (offset: number) => Promise<void>;\n setSpeed: (speed: number) => Promise<void>;\n setVolume: (volume: number) => Promise<void>;\n setMuted: (muted: boolean) => Promise<void>;\n setSubtitleTrack: (trackId: number) => Promise<void>;\n setAudioTrack: (trackId: number) => Promise<void>;\n /** Load an external subtitle file (local path or URL). */\n addSubtitle: (path: string, flag?: string, title?: string, lang?: string) => Promise<void>;\n /** Remove a subtitle track by ID. */\n removeSubtitle: (trackId: number) => Promise<void>;\n /** Reload current subtitles. */\n reloadSubtitles: () => Promise<void>;\n /** Set subtitle delay in seconds (positive = later, negative = earlier). */\n setSubtitleDelay: (seconds: number) => Promise<void>;\n getPlaybackInfo: () => Promise<PlaybackInfo>;\n getTrackList: () => Promise<TrackInfo[]>;\n getCurrentTrackIds: () => Promise<CurrentTrackIds>;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ExpoMpv.types.js","sourceRoot":"","sources":["../src/ExpoMpv.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { StyleProp, ViewStyle } from 'react-native';\n\n// MARK: - Event Payloads\n\nexport type PlaybackStateChangeEvent = {\n state: 'playing' | 'paused' | 'stopped';\n isPlaying: boolean;\n};\n\nexport type ProgressEvent = {\n position: number;\n duration: number;\n bufferedDuration: number;\n};\n\nexport type LoadEvent = {\n duration: number;\n width: number;\n height: number;\n};\n\nexport type ErrorEvent = {\n error: string;\n};\n\nexport type EndEvent = {\n reason: 'ended' | 'error' | 'stopped' | 'unknown';\n};\n\nexport type BufferEvent = {\n isBuffering: boolean;\n};\n\nexport type SeekEvent = {};\n\nexport type VolumeChangeEvent = {\n volume: number;\n muted: boolean;\n};\n\nexport type PlaybackInfo = {\n position: number;\n duration: number;\n isPlaying: boolean;\n speed: number;\n volume: number;\n muted: boolean;\n};\n\nexport type TrackInfo = {\n id: number;\n type: 'video' | 'audio' | 'sub' | string;\n title: string;\n lang: string;\n codec: string;\n selected: boolean;\n isDefault: boolean;\n isExternal: boolean;\n // audio-specific\n channelCount?: number;\n sampleRate?: number;\n // video-specific\n width?: number;\n height?: number;\n fps?: number;\n};\n\nexport type CurrentTrackIds = {\n vid: number;\n aid: number;\n sid: number;\n};\n\n// MARK: - Module Events (non-view)\n\nexport type ExpoMpvModuleEvents = {};\n\n// MARK: - View Props\n\nexport type ExpoMpvViewProps = {\n /**\n * Media source URL to play. Can be a remote URL or a local file path.\n */\n source?: string;\n\n /**\n * Whether playback is paused.\n */\n paused?: boolean;\n\n /**\n * Playback speed multiplier. Default is 1.0.\n */\n speed?: number;\n\n /**\n * Volume level (0-100). Default is 100.\n */\n volume?: number;\n\n /**\n * Whether audio is muted.\n */\n muted?: boolean;\n\n /**\n * Whether to loop the current file.\n */\n loop?: boolean;\n\n /**\n * Called when playback state changes (play/pause).\n */\n onPlaybackStateChange?: (event: { nativeEvent: PlaybackStateChangeEvent }) => void;\n\n /**\n * Called periodically with current playback progress.\n */\n onProgress?: (event: { nativeEvent: ProgressEvent }) => void;\n\n /**\n * Called when a media file has been loaded and is ready to play.\n */\n onLoad?: (event: { nativeEvent: LoadEvent }) => void;\n\n /**\n * Called when an error occurs.\n */\n onError?: (event: { nativeEvent: ErrorEvent }) => void;\n\n /**\n * Called when playback reaches the end.\n */\n onEnd?: (event: { nativeEvent: EndEvent }) => void;\n\n /**\n * Called when buffering state changes.\n */\n onBuffer?: (event: { nativeEvent: BufferEvent }) => void;\n\n /**\n * Called when a seek operation completes.\n */\n onSeek?: (event: { nativeEvent: SeekEvent }) => void;\n\n /**\n * Called when volume or mute state changes.\n */\n onVolumeChange?: (event: { nativeEvent: VolumeChangeEvent }) => void;\n\n style?: StyleProp<ViewStyle>;\n};\n\n// MARK: - View Ref Methods\n\nexport type ExpoMpvViewRef = {\n play: () => Promise<void>;\n pause: () => Promise<void>;\n togglePlay: () => Promise<void>;\n stop: () => Promise<void>;\n seekTo: (position: number) => Promise<void>;\n seekBy: (offset: number) => Promise<void>;\n setSpeed: (speed: number) => Promise<void>;\n setVolume: (volume: number) => Promise<void>;\n setMuted: (muted: boolean) => Promise<void>;\n setSubtitleTrack: (trackId: number) => Promise<void>;\n setAudioTrack: (trackId: number) => Promise<void>;\n /** Load an external subtitle file (local path or URL). */\n addSubtitle: (path: string, flag?: string, title?: string, lang?: string) => Promise<void>;\n /** Remove a subtitle track by ID. */\n removeSubtitle: (trackId: number) => Promise<void>;\n /** Reload current subtitles. */\n reloadSubtitles: () => Promise<void>;\n /** Set subtitle delay in seconds (positive = later, negative = earlier). */\n setSubtitleDelay: (seconds: number) => Promise<void>;\n /** Set an mpv property by name (string value). */\n setPropertyString: (name: string, value: string) => Promise<void>;\n getPlaybackInfo: () => Promise<PlaybackInfo>;\n getTrackList: () => Promise<TrackInfo[]>;\n getCurrentTrackIds: () => Promise<CurrentTrackIds>;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoMpvView.d.ts","sourceRoot":"","sources":["../src/ExpoMpvView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKnE,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"ExpoMpvView.d.ts","sourceRoot":"","sources":["../src/ExpoMpvView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKnE,QAAA,MAAM,WAAW,yFA4Bf,CAAC;AAIH,eAAe,WAAW,CAAC"}
|
package/build/ExpoMpvView.js
CHANGED
|
@@ -20,6 +20,7 @@ const ExpoMpvView = forwardRef((props, ref) => {
|
|
|
20
20
|
removeSubtitle: (trackId) => nativeRef.current?.removeSubtitle(trackId),
|
|
21
21
|
reloadSubtitles: () => nativeRef.current?.reloadSubtitles(),
|
|
22
22
|
setSubtitleDelay: (seconds) => nativeRef.current?.setSubtitleDelay(seconds),
|
|
23
|
+
setPropertyString: (name, value) => nativeRef.current?.setPropertyString(name, value),
|
|
23
24
|
getPlaybackInfo: () => nativeRef.current?.getPlaybackInfo(),
|
|
24
25
|
getTrackList: () => nativeRef.current?.getTrackList(),
|
|
25
26
|
getCurrentTrackIds: () => nativeRef.current?.getCurrentTrackIds(),
|
package/build/ExpoMpvView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoMpvView.js","sourceRoot":"","sources":["../src/ExpoMpvView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAIhE,MAAM,UAAU,GACd,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAE/B,MAAM,WAAW,GAAG,UAAU,CAAmC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC9E,MAAM,SAAS,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;IAEpC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QACrC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE;QACvC,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE;QACjD,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QACrC,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;QACjE,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7D,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC/D,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC;QACnE,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;QAChE,gBAAgB,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACnF,aAAa,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;QAC7E,WAAW,EAAE,CAAC,IAAY,EAAE,IAAa,EAAE,KAAc,EAAE,IAAa,EAAE,EAAE,CAC1E,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;QACzD,cAAc,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;QAC/E,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE;QAC3D,gBAAgB,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACnF,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE;QAC3D,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE;QACrD,kBAAkB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE;KAClE,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;AAExC,eAAe,WAAW,CAAC","sourcesContent":["import { requireNativeView } from 'expo';\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\n\nimport { ExpoMpvViewProps, ExpoMpvViewRef } from './ExpoMpv.types';\n\nconst NativeView: React.ComponentType<ExpoMpvViewProps & { ref?: React.Ref<any> }> =\n requireNativeView('ExpoMpv');\n\nconst ExpoMpvView = forwardRef<ExpoMpvViewRef, ExpoMpvViewProps>((props, ref) => {\n const nativeRef = useRef<any>(null);\n\n useImperativeHandle(ref, () => ({\n play: () => nativeRef.current?.play(),\n pause: () => nativeRef.current?.pause(),\n togglePlay: () => nativeRef.current?.togglePlay(),\n stop: () => nativeRef.current?.stop(),\n seekTo: (position: number) => nativeRef.current?.seekTo(position),\n seekBy: (offset: number) => nativeRef.current?.seekBy(offset),\n setSpeed: (speed: number) => nativeRef.current?.setSpeed(speed),\n setVolume: (volume: number) => nativeRef.current?.setVolume(volume),\n setMuted: (muted: boolean) => nativeRef.current?.setMuted(muted),\n setSubtitleTrack: (trackId: number) => nativeRef.current?.setSubtitleTrack(trackId),\n setAudioTrack: (trackId: number) => nativeRef.current?.setAudioTrack(trackId),\n addSubtitle: (path: string, flag?: string, title?: string, lang?: string) =>\n nativeRef.current?.addSubtitle(path, flag, title, lang),\n removeSubtitle: (trackId: number) => nativeRef.current?.removeSubtitle(trackId),\n reloadSubtitles: () => nativeRef.current?.reloadSubtitles(),\n setSubtitleDelay: (seconds: number) => nativeRef.current?.setSubtitleDelay(seconds),\n getPlaybackInfo: () => nativeRef.current?.getPlaybackInfo(),\n getTrackList: () => nativeRef.current?.getTrackList(),\n getCurrentTrackIds: () => nativeRef.current?.getCurrentTrackIds(),\n }));\n\n return <NativeView ref={nativeRef} {...props} />;\n});\n\nExpoMpvView.displayName = 'ExpoMpvView';\n\nexport default ExpoMpvView;\n"]}
|
|
1
|
+
{"version":3,"file":"ExpoMpvView.js","sourceRoot":"","sources":["../src/ExpoMpvView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { requireNativeView } from 'expo';\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\n\nimport { ExpoMpvViewProps, ExpoMpvViewRef } from './ExpoMpv.types';\n\nconst NativeView: React.ComponentType<ExpoMpvViewProps & { ref?: React.Ref<any> }> =\n requireNativeView('ExpoMpv');\n\nconst ExpoMpvView = forwardRef<ExpoMpvViewRef, ExpoMpvViewProps>((props, ref) => {\n const nativeRef = useRef<any>(null);\n\n useImperativeHandle(ref, () => ({\n play: () => nativeRef.current?.play(),\n pause: () => nativeRef.current?.pause(),\n togglePlay: () => nativeRef.current?.togglePlay(),\n stop: () => nativeRef.current?.stop(),\n seekTo: (position: number) => nativeRef.current?.seekTo(position),\n seekBy: (offset: number) => nativeRef.current?.seekBy(offset),\n setSpeed: (speed: number) => nativeRef.current?.setSpeed(speed),\n setVolume: (volume: number) => nativeRef.current?.setVolume(volume),\n setMuted: (muted: boolean) => nativeRef.current?.setMuted(muted),\n setSubtitleTrack: (trackId: number) => nativeRef.current?.setSubtitleTrack(trackId),\n setAudioTrack: (trackId: number) => nativeRef.current?.setAudioTrack(trackId),\n addSubtitle: (path: string, flag?: string, title?: string, lang?: string) =>\n nativeRef.current?.addSubtitle(path, flag, title, lang),\n removeSubtitle: (trackId: number) => nativeRef.current?.removeSubtitle(trackId),\n reloadSubtitles: () => nativeRef.current?.reloadSubtitles(),\n setSubtitleDelay: (seconds: number) => nativeRef.current?.setSubtitleDelay(seconds),\n setPropertyString: (name: string, value: string) =>\n nativeRef.current?.setPropertyString(name, value),\n getPlaybackInfo: () => nativeRef.current?.getPlaybackInfo(),\n getTrackList: () => nativeRef.current?.getTrackList(),\n getCurrentTrackIds: () => nativeRef.current?.getCurrentTrackIds(),\n }));\n\n return <NativeView ref={nativeRef} {...props} />;\n});\n\nExpoMpvView.displayName = 'ExpoMpvView';\n\nexport default ExpoMpvView;\n"]}
|
package/ios/ExpoMpv.podspec
CHANGED
package/ios/ExpoMpvModule.swift
CHANGED
|
@@ -113,6 +113,10 @@ public class ExpoMpvModule: Module {
|
|
|
113
113
|
view.setSubtitleDelay(seconds)
|
|
114
114
|
}.runOnQueue(.main)
|
|
115
115
|
|
|
116
|
+
AsyncFunction("setPropertyString") { (view: ExpoMpvView, name: String, value: String) in
|
|
117
|
+
view.setPropertyString(name, value)
|
|
118
|
+
}.runOnQueue(.main)
|
|
119
|
+
|
|
116
120
|
AsyncFunction("getPlaybackInfo") { (view: ExpoMpvView) -> [String: Any] in
|
|
117
121
|
return view.getPlaybackInfo()
|
|
118
122
|
}.runOnQueue(.main)
|
package/ios/ExpoMpvView.swift
CHANGED
|
@@ -460,6 +460,15 @@ class ExpoMpvView: ExpoView {
|
|
|
460
460
|
setDouble("sub-delay", seconds)
|
|
461
461
|
}
|
|
462
462
|
|
|
463
|
+
func setPropertyString(_ name: String, _ value: String) {
|
|
464
|
+
guard mpv != nil else { return }
|
|
465
|
+
let result = mpv_set_property_string(mpv, name, value)
|
|
466
|
+
if result < 0 {
|
|
467
|
+
let errStr = String(cString: mpv_error_string(result))
|
|
468
|
+
log("ERROR: set property string '\(name)'='\(value)' failed: \(errStr)")
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
463
472
|
func getPlaybackInfo() -> [String: Any] {
|
|
464
473
|
let position = getDouble("time-pos")
|
|
465
474
|
let duration = getDouble("duration")
|
package/package.json
CHANGED
package/src/ExpoMpv.types.ts
CHANGED
|
@@ -173,6 +173,8 @@ export type ExpoMpvViewRef = {
|
|
|
173
173
|
reloadSubtitles: () => Promise<void>;
|
|
174
174
|
/** Set subtitle delay in seconds (positive = later, negative = earlier). */
|
|
175
175
|
setSubtitleDelay: (seconds: number) => Promise<void>;
|
|
176
|
+
/** Set an mpv property by name (string value). */
|
|
177
|
+
setPropertyString: (name: string, value: string) => Promise<void>;
|
|
176
178
|
getPlaybackInfo: () => Promise<PlaybackInfo>;
|
|
177
179
|
getTrackList: () => Promise<TrackInfo[]>;
|
|
178
180
|
getCurrentTrackIds: () => Promise<CurrentTrackIds>;
|
package/src/ExpoMpvView.tsx
CHANGED
|
@@ -27,6 +27,8 @@ const ExpoMpvView = forwardRef<ExpoMpvViewRef, ExpoMpvViewProps>((props, ref) =>
|
|
|
27
27
|
removeSubtitle: (trackId: number) => nativeRef.current?.removeSubtitle(trackId),
|
|
28
28
|
reloadSubtitles: () => nativeRef.current?.reloadSubtitles(),
|
|
29
29
|
setSubtitleDelay: (seconds: number) => nativeRef.current?.setSubtitleDelay(seconds),
|
|
30
|
+
setPropertyString: (name: string, value: string) =>
|
|
31
|
+
nativeRef.current?.setPropertyString(name, value),
|
|
30
32
|
getPlaybackInfo: () => nativeRef.current?.getPlaybackInfo(),
|
|
31
33
|
getTrackList: () => nativeRef.current?.getTrackList(),
|
|
32
34
|
getCurrentTrackIds: () => nativeRef.current?.getCurrentTrackIds(),
|