Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
O framework AVFoundation da Apple fornece uma maneira robusta de capturar e processar mídia em dispositivos iOS. Um dos componentes principais para captura de vídeo é o AVCaptureMovieFileOutput
, que permite gravar vídeo em um arquivo. Este artigo irá guiá-lo através do processo de configuração de uma sessão de captura de vídeo usando AVCaptureMovieFileOutput
.
Exemplos:
1. Configuração Básica de Captura de Vídeo:
Primeiro, precisamos configurar uma sessão de captura e adicionar os dispositivos de entrada e saída apropriados.
import AVFoundation
import UIKit
class VideoCaptureViewController: UIViewController {
var captureSession: AVCaptureSession?
var movieOutput: AVCaptureMovieFileOutput?
var previewLayer: AVCaptureVideoPreviewLayer?
override func viewDidLoad() {
super.viewDidLoad()
setupCaptureSession()
}
func setupCaptureSession() {
captureSession = AVCaptureSession()
guard let captureSession = captureSession else { return }
// Configurar o dispositivo de entrada
guard let videoCaptureDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back) else { return }
let videoInput: AVCaptureDeviceInput
do {
videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)
} catch {
return
}
if captureSession.canAddInput(videoInput) {
captureSession.addInput(videoInput)
} else {
return
}
// Configurar o dispositivo de saída
movieOutput = AVCaptureMovieFileOutput()
if let movieOutput = movieOutput, captureSession.canAddOutput(movieOutput) {
captureSession.addOutput(movieOutput)
}
// Configurar a visualização de vídeo
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer?.frame = view.layer.bounds
previewLayer?.videoGravity = .resizeAspectFill
if let previewLayer = previewLayer {
view.layer.addSublayer(previewLayer)
}
captureSession.startRunning()
}
func startRecording() {
guard let movieOutput = movieOutput else { return }
let outputURL = FileManager.default.temporaryDirectory.appendingPathComponent("output.mov")
movieOutput.startRecording(to: outputURL, recordingDelegate: self)
}
func stopRecording() {
movieOutput?.stopRecording()
}
}
extension VideoCaptureViewController: AVCaptureFileOutputRecordingDelegate {
func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {
if let error = error {
print("Error recording movie: \(error.localizedDescription)")
} else {
print("Movie recorded successfully to: \(outputFileURL)")
}
}
}
2. Iniciar e Parar a Gravação:
Para iniciar a gravação, chame startRecording()
, e para parar, chame stopRecording()
. O vídeo será salvo no diretório temporário do dispositivo.
3. Permissões de Câmera:
Não se esqueça de adicionar a chave NSCameraUsageDescription
no arquivo Info.plist
para solicitar permissão ao usuário para acessar a câmera.
Considerações Finais:
O AVCaptureMovieFileOutput
é uma ferramenta poderosa para capturar vídeos em aplicativos iOS. No entanto, para projetos mais complexos, como a gravação de vídeos em segundo plano ou a aplicação de filtros em tempo real, pode ser necessário explorar outros componentes do AVFoundation ou frameworks adicionais.