Swift 4 - MobileVLCKit перейти к последнему кадру - PullRequest
0 голосов
/ 12 сентября 2018

Я разрабатываю приложение для iOS, которое получает видеопоток через RTMP. Я использую библиотеку MobileVLCKit для выполнения этой задачи, но производительность проигрывателя очень низкая. Я хочу, чтобы каждый раз, когда видео буферизировало видео, снова отображалось в реальном времени, не увеличивая время задержки.

Это мой код

class ScreenPlayer: UIViewController, VLCMediaPlayerDelegate {

    @IBOutlet weak var viewPlayer: UIView!
    @IBOutlet weak var loading: UIActivityIndicatorView!
    
    let player: VLCMediaPlayer = {
        let p = VLCMediaPlayer()
        return p
    }()
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidLoad()
        
        let streamUrl = URL(string: rtmp.nome)
        
        let media = VLCMedia(url: streamUrl!)
        player.media = media
        
        // I'm using this because the video stops and only the audio continues, but I still do not have a good result, if you can help me with this too it will be great
        player.media .addOptions([
            "network-caching" : 10000,
            "codec": "avcodec"
            ])
        player.delegate = self
        player.drawable = self.viewPlayer
        player.play()

    }

func mediaPlayerStateChanged(_ aNotification: Notification!) {
        switch player.state {
        case .buffering:
        // This is when the video stops and starts to buffering
            print("loading")
            loading.startAnimating()
            loading.isHidden = false
            break
        case .playing:
            print("playing")
            break
        case .stopped:
            print("stopped")
            break
        case .error:
            print("erro")
            break
        case .ended:
            print("finished")
            break
        case .esAdded:
            print("i don't know what is this")
            break
        default: break
        }
        print(player.state.rawValue, player.rate, player.time, player.media.state.rawValue, player.position)
        print(self.player.media.metaDictionary)

    }
...