Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
CMSampleBuffer é uma estrutura fundamental no desenvolvimento de aplicativos multimídia no ecossistema Apple. Ele é utilizado para encapsular amostras de áudio e vídeo, facilitando o processamento e a manipulação de dados multimídia em tempo real. Este artigo técnico irá guiá-lo através dos conceitos básicos de CMSampleBuffer e fornecer exemplos práticos de como utilizá-lo em seus projetos.
CMSampleBuffer é parte do Core Media, uma estrutura poderosa da Apple que lida com dados de mídia em baixo nível. Ele é amplamente utilizado em aplicativos que requerem processamento de áudio e vídeo, como editores de vídeo, aplicativos de streaming e câmeras personalizadas.
Vamos explorar como capturar e processar dados de vídeo usando CMSampleBuffer no Swift. Este exemplo básico irá configurar uma sessão de captura de vídeo e processar os frames capturados.
import AVFoundation
import UIKit
class VideoCaptureViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate {
var captureSession: AVCaptureSession?
var videoOutput: AVCaptureVideoDataOutput?
override func viewDidLoad() {
super.viewDidLoad()
setupCaptureSession()
}
func setupCaptureSession() {
captureSession = AVCaptureSession()
guard let captureSession = captureSession else { return }
guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return }
let videoInput: AVCaptureDeviceInput
do {
videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)
} catch {
return
}
if (captureSession.canAddInput(videoInput)) {
captureSession.addInput(videoInput)
} else {
return
}
videoOutput = AVCaptureVideoDataOutput()
guard let videoOutput = videoOutput else { return }
videoOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue"))
if (captureSession.canAddOutput(videoOutput)) {
captureSession.addOutput(videoOutput)
}
captureSession.startRunning()
}
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
// Process the sampleBuffer here
print("Captured a frame!")
}
}
AVCaptureSession
e configuramos um dispositivo de captura de vídeo padrão.AVCaptureVideoDataOutput
para capturar frames em tempo real e definimos um delegado para processar os buffers de amostra.captureOutput
para lidar com cada CMSampleBuffer
capturado.O CMSampleBuffer é uma ferramenta poderosa para desenvolvedores que trabalham com dados de mídia no iOS e macOS. Compreender como capturar e manipular esses buffers é essencial para criar aplicativos multimídia de alto desempenho.