@@ -147,6 +147,32 @@ public class VLCView: NSObject, FlutterPlatformView {
147147 result ( nil )
148148 return
149149
150+ case . changeSound:
151+ let audioNumber = arguments [ " audioNumber " ] as? String ?? " "
152+ let audioNumberInt = Int32 ( audioNumber) ?? 0
153+ self . player. audioChannel = audioNumberInt
154+ return
155+
156+ case . changeSubtitle:
157+ let subtitleNumber = arguments [ " subtitleNumber " ] as? String ?? " "
158+ let subtitleInt = Int32 ( subtitleNumber) ?? 0
159+
160+ self . player. currentVideoSubTitleIndex = subtitleInt
161+ return
162+
163+ case . addSubtitle:
164+
165+ guard let urlString = arguments [ " filePath " ] as? String , let url = URL ( string: urlString) else {
166+
167+ result ( FlutterError ( code: " 500 " ,
168+ message: " subtitle file path failed " ,
169+ details: nil )
170+ )
171+ return
172+ }
173+ self . player. addPlaybackSlave ( url, type: . subtitle, enforce: true )
174+ return
175+
150176 default :
151177 result ( FlutterMethodNotImplemented)
152178 return
@@ -196,6 +222,13 @@ class VLCPlayerEventStreamHandler:NSObject, FlutterStreamHandler, VLCMediaPlayer
196222 var height = 0
197223 var width = 0
198224
225+ //subtitle
226+ let audioCount = player? . numberOfAudioTracks ?? 0
227+ let activeAudioTracks = player? . audioChannel ?? 0
228+ let spuCount = player? . numberOfSubtitlesTracks ?? 0
229+ let activeSpu = player? . currentVideoSubTitleIndex ?? 0
230+
231+
199232 if player? . currentVideoTrackIndex != - 1 {
200233 if ( player? . currentVideoTrackIndex) != nil {
201234 track = tracks [ 0 ] as! NSDictionary
@@ -226,7 +259,12 @@ class VLCPlayerEventStreamHandler:NSObject, FlutterStreamHandler, VLCMediaPlayer
226259 " ratio " : NSNumber ( value: ratio) ,
227260 " height " : height,
228261 " width " : width,
229- " length " : value
262+ " length " : value,
263+ " audioCount " : audioCount,
264+ " activeAudioTracks " : activeAudioTracks,
265+ " spuCount " : spuCount,
266+ " activeSpu " : activeSpu
267+
230268 ] )
231269 }
232270 return
@@ -311,4 +349,7 @@ enum FlutterMethodCallOption :String {
311349 case setPlaybackSpeed = " setPlaybackSpeed "
312350 case setTime = " setTime "
313351 case setVolume = " setVolume "
352+ case changeSound = " changeSound "
353+ case changeSubtitle = " changeSubtitle "
354+ case addSubtitle = " addSubtitle "
314355}
0 commit comments