Преобразовать код ViewController для RTSP в файл Swift для вызова в View Controller - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь написать приложение, которое использует RTSP Video, и я хотел бы в конечном итоге использовать функциональность AVCaptureSession для записи и сохранения видео.

Я смог транслировать видео в реальном времени через мой View Controller, используяэтот кодКогда я пытаюсь переместить код в другой файл swift, я получаю ошибку, касающуюся комбинации Objective C, которую View Controller позволяет вам вызывать, но функция, которую я пытаюсь написать, теперь позволяет это делать.Это функция обновления.Кроме того, я не совсем понимаю эту часть кода, так как кажется, что он ссылается на ViewController, и я не уверен, на что он должен ссылаться, если он находится вне ViewController "target: self, selector: #selector (ViewController).update),

Код ViewController в настоящее время использует интерфейс, созданный в C-файле, который выглядит следующим образом для создания проигрывателя RTSP.

Также, если кто-нибудь может помочь мне с тем, какполучить UIImage в качестве типа устройства, используемого для AVCaptureSession / PreviewLayer. Это было бы очень полезно.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView! var video: RTSPPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        video = RTSPPlayer(video: "rtsp://admin:admin@192.168.150.243", usesTcp: false)
        video.outputWidth = Int32(UIScreen.main.bounds.width)
        video.outputHeight = Int32(UIScreen.main.bounds.height)
        video.seekTime(0.0)

        let timer = Timer.scheduledTimer(timeInterval: 1.0/30, target: self, selector: #selector(ViewController.update), userInfo: nil,
repeats: true)
        timer.fire()
    }

    @objc func update(timer: Timer) {
        if(!video.stepFrame()){
            timer.invalidate()
            video.closeAudio()
        }
        imageView.image = video.currentImage
    }

}
...