Получите вывод из AVCaptureSession в Swift для отправки на сервер
Мне удалось написать код, который открывает камеру и просматривает видео. Теперь я хочу захватить кадры с выхода для отправки на сервер, идеально кодируемый как H.264
Вот что у меня есть:
import UIKit
import AVFoundation
class ViewController: UIViewController {
let captureSession = AVCaptureSession()
var previewLayer : AVCaptureVideoPreviewLayer?
// If we find a device we'll store it here for later use
var captureDevice : AVCaptureDevice?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
captureSession.sessionPreset = AVCaptureSessionPresetHigh
let devices = AVCaptureDevice.devices()
// Loop through all the capture devices on this phone
for device in devices {
// Make sure this particular device supports video
if (device.hasMediaType(AVMediaTypeVideo)) {
// Finally check the position and confirm we've got the back camera
if(device.position == AVCaptureDevicePosition.Back) {
captureDevice = device as? AVCaptureDevice
if captureDevice != nil {
println("Capture device found")
beginSession()
}
}
}
}
}
func beginSession() {
var err : NSError? = nil
captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err))
if err != nil {
println("error: \(err?.localizedDescription)")
}
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
self.view.layer.addSublayer(previewLayer)
previewLayer?.frame = self.view.layer.frame
captureSession.startRunning()
}
}
Откроется камера, и я могу просмотреть кадры.
Я нашел этот код Objective C, который выглядит так, как будто он выводит результат, но я не знаю, как его преобразовать в swift. Он использует AVCaptureVideoDataOutput, AVAssetWriter, AVAssetWriterInput и AVAssetWriterInputPixelBufferAdaptor для записи кадров в файл с кодировкой H.264.
Можно одновременно использовать AVCaptureVideoDataOutput и AVCaptureMovieFileOutput?
Может кто-то помочь преобразовать его или дать мне указания относительно того, как получить фреймы из моего текущего кода?
Ответы
Ответ 1
У Apple есть образец проекта AVCam в ObjectiveC, который работает с этим.
Вот еще один вопрос о SO об использовании AVCamera в Swift.
Я лично использовал этот https://github.com/alex-chan/AVCamSwift, и это нормально. Мне нужно было преобразовать его в синтаксис Last Swift в Xcode, и он работал нормально.
Другое предложение - использовать найденный вами код ObjectiveC и импортировать его в код Swift через заголовок моста.