修复app内视频拍摄完毕后保存视频至相册的操作

This commit is contained in:
bluesea 2024-03-14 10:08:00 +08:00
parent dc2fb63193
commit e62f93f9a7

View File

@ -370,6 +370,11 @@ class CCSpatialShootController: BaseController {
} }
do { do {
print("builtInWideAngleCamera:\(backCamera.videoZoomFactor)")
// try backCamera.lockForConfiguration()
// backCamera.videoZoomFactor=3.0
// backCamera.unlockForConfiguration()
wideAngleCameraDeviceInput = try AVCaptureDeviceInput(device: backCamera) wideAngleCameraDeviceInput = try AVCaptureDeviceInput(device: backCamera)
guard let wideAngleCameraDeviceInput = wideAngleCameraDeviceInput, guard let wideAngleCameraDeviceInput = wideAngleCameraDeviceInput,
@ -390,8 +395,13 @@ class CCSpatialShootController: BaseController {
} }
do { do {
print("builtInUltraWideCamera:\(frontCamera.videoZoomFactor)")
// try frontCamera.lockForConfiguration()
// frontCamera.videoZoomFactor = 8.0//
// frontCamera.unlockForConfiguration()
//
// frontCamera.focusMode = .autoFocus
ultraWideCameraDeviceInput = try AVCaptureDeviceInput(device: frontCamera) ultraWideCameraDeviceInput = try AVCaptureDeviceInput(device: frontCamera)
guard let ultraWideCameraDeviceInput = ultraWideCameraDeviceInput, guard let ultraWideCameraDeviceInput = ultraWideCameraDeviceInput,
session.canAddInput(ultraWideCameraDeviceInput) else { session.canAddInput(ultraWideCameraDeviceInput) else {
print("Could not add front camera input") print("Could not add front camera input")
@ -936,12 +946,13 @@ extension CCSpatialShootController: AVCaptureFileOutputRecordingDelegate {
if(rightEyeVideoURL != nil && leftEyeVideoURL != nil){ if(rightEyeVideoURL != nil && leftEyeVideoURL != nil){
let spatialVideoWriter = SpatialVideoWriter() let spatialVideoWriter = SpatialVideoWriter()
Task { Task {
spatialVideoWriter.writeSpatialVideo(leftEyeVideoURL: leftEyeVideoURL!, rightEyeVideoURL: rightEyeVideoURL!, outputVideoURL: outputVideoURL!) { success, error in spatialVideoWriter.writeSpatialVideo(leftEyeVideoURL: leftEyeVideoURL!, rightEyeVideoURL: rightEyeVideoURL!, outputVideoURL: outputVideoURL!) {[self] success, error in
DispatchQueue.main.async { DispatchQueue.main.async {
SVProgressHUD.dismiss() SVProgressHUD.dismiss()
} }
if success { if success {
print("空间视频生成成功") print("空间视频生成成功")
saveVideoToLibrary(videoURL:outputVideoURL!)
DispatchQueue.main.async { DispatchQueue.main.async {
SVProgressHUD.showSuccess(withStatus: "空间视频成功保存到相册") SVProgressHUD.showSuccess(withStatus: "空间视频成功保存到相册")
} }
@ -957,6 +968,19 @@ extension CCSpatialShootController: AVCaptureFileOutputRecordingDelegate {
} }
} }
private func saveVideoToLibrary(videoURL: URL) {
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: videoURL)
}) { success, error in
if success {
print("保存成功")
} else if let error = error {
print("保存失败")
}
}
}
//MARK: //MARK:
private func firstFrame(from videoURL: URL) -> UIImage? { private func firstFrame(from videoURL: URL) -> UIImage? {
let asset = AVURLAsset(url: videoURL) let asset = AVURLAsset(url: videoURL)