mirror of
				https://github.com/yattee/yattee.git
				synced 2025-11-04 06:32:03 +00:00 
			
		
		
		
	Load audio and video together with one command with MPV
This commit is contained in:
		@@ -153,28 +153,30 @@ final class MPVBackend: PlayerBackend {
 | 
			
		||||
 | 
			
		||||
            self.stop()
 | 
			
		||||
 | 
			
		||||
            if let url = stream.singleAssetURL {
 | 
			
		||||
                self.onFileLoaded = {
 | 
			
		||||
                    updateCurrentStream()
 | 
			
		||||
                    startPlaying()
 | 
			
		||||
            DispatchQueue.main.async { [weak self] in
 | 
			
		||||
                guard let self = self else {
 | 
			
		||||
                    return
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                self.client.loadFile(url, time: time) { [weak self] _ in
 | 
			
		||||
                    self?.isLoadingVideo = true
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                self.onFileLoaded = { [weak self] in
 | 
			
		||||
                    DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
 | 
			
		||||
                        self?.client.addAudio(stream.audioAsset.url) { _ in
 | 
			
		||||
                            updateCurrentStream()
 | 
			
		||||
                            startPlaying()
 | 
			
		||||
                        }
 | 
			
		||||
                if let url = stream.singleAssetURL {
 | 
			
		||||
                    self.onFileLoaded = {
 | 
			
		||||
                        updateCurrentStream()
 | 
			
		||||
                        startPlaying()
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                self.client.loadFile(stream.videoAsset.url, time: time) { [weak self] _ in
 | 
			
		||||
                    self?.isLoadingVideo = true
 | 
			
		||||
                    self?.pause()
 | 
			
		||||
                    self.client.loadFile(url, time: time) { [weak self] _ in
 | 
			
		||||
                        self?.isLoadingVideo = true
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    self.onFileLoaded = { [weak self] in
 | 
			
		||||
                        updateCurrentStream()
 | 
			
		||||
                        startPlaying()
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    self.client.loadFile(stream.videoAsset.url, audio: stream.audioAsset.url, time: time) { [weak self] _ in
 | 
			
		||||
                        self?.isLoadingVideo = true
 | 
			
		||||
                        self?.pause()
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -103,13 +103,21 @@ final class MPVClient: ObservableObject {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    func loadFile(_ url: URL, time: CMTime? = nil, completionHandler: ((Int32) -> Void)? = nil) {
 | 
			
		||||
    func loadFile(_ url: URL, audio: URL? = nil, time: CMTime? = nil, completionHandler: ((Int32) -> Void)? = nil) {
 | 
			
		||||
        var args = [url.absoluteString]
 | 
			
		||||
        var options = [String]()
 | 
			
		||||
 | 
			
		||||
        if let time = time {
 | 
			
		||||
            args.append("replace")
 | 
			
		||||
            args.append("start=\(Int(time.seconds))")
 | 
			
		||||
            options.append("start=\(Int(time.seconds))")
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if let audioURL = audio?.absoluteString {
 | 
			
		||||
            options.append("audio-files-append=\"\(audioURL)\"")
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        args.append(options.joined(separator: ","))
 | 
			
		||||
 | 
			
		||||
        command("loadfile", args: args, returnValueCallback: completionHandler)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user