AVFoundation 是苹果公司提供的一个底层多媒体框架,用于处理音频、视频和图像的录制、编辑和播放。在 iOS 和 macOS 上使用 AVFoundation 可以方便地实现视频播放和录制功能。本篇博客将介绍如何使用 AVFoundation 实现视频播放和录制。
视频播放
AVPlayer 是 AVFoundation 提供的用于播放视频的核心类。以下是使用 AVPlayer 实现视频播放的步骤:
-
引入 AVFoundation 框架 在工程的 Build Phases 选项卡中,点击 Link Binary With Libraries,添加 AVFoundation.framework。
-
创建 AVPlayer 对象
import AVFoundation import AVKit let url = URL(fileURLWithPath: "path/to/video.mp4") let player = AVPlayer(url: url)
-
创建 AVPlayerViewController 并将 AVPlayer 设置为其 player 属性
let playerViewController = AVPlayerViewController() playerViewController.player = player
-
将 AVPlayerViewController 显示出来
present(playerViewController, animated: true) { player.play() }
视频录制
使用 AVFoundation 实现视频录制需要借助 AVCaptureSession、AVCaptureInput、AVCaptureOutput 和 AVCaptureVideoPreviewLayer 等类。以下是实现视频录制的步骤:
-
引入 AVFoundation 和 AVKit 框架 在工程的 Build Phases 选项卡中,点击 Link Binary With Libraries,添加 AVFoundation.framework 和 AVKit.framework。
-
创建 AVCaptureSession 对象
let session = AVCaptureSession() session.sessionPreset = .medium
-
创建 AVCaptureDeviceInput 对象
guard let videoDevice = AVCaptureDevice.default(for: .video), let videoDeviceInput = try? AVCaptureDeviceInput(device: videoDevice), session.canAddInput(videoDeviceInput) else { return } session.addInput(videoDeviceInput)
-
创建 AVCaptureMovieFileOutput 对象
let fileOutput = AVCaptureMovieFileOutput() guard session.canAddOutput(fileOutput) else { return } session.addOutput(fileOutput)
-
创建 AVCaptureVideoPreviewLayer 对象
let previewLayer = AVCaptureVideoPreviewLayer(session: session) previewLayer.videoGravity = .resizeAspectFill previewLayer.frame = view.bounds view.layer.insertSublayer(previewLayer, at: 0)
-
启动会话
session.startRunning()
-
开始录制
let outputPath = NSTemporaryDirectory().appending("output.mp4") let outputURL = URL(fileURLWithPath: outputPath) fileOutput.startRecording(to: outputURL, recordingDelegate: self)
以上就是使用 AVFoundation 实现视频播放和录制的简要步骤。为了更好地理解和掌握 AVFoundation 的视频处理功能,你可能需要进一步了解 AVCaptureDevice、AVCaptureMetadataOutput 和 AVAssetExportSession 等类的使用。
希望本篇博客对你有所帮助,如果有任何问题或建议,请随时与我联系。
本文来自极简博客,作者:微笑向暖,转载请注明原文链接:使用AVFoundation实现视频播放和录制