diff --git a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj index f9a3ac9..4022548 100644 --- a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj +++ b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 005580782B9F1525004B9567 /* ZZHHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005580772B9F1525004B9567 /* ZZHHelper.swift */; }; 00B946212B67AC9D00DA668F /* CCSpatialPlayController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B946202B67AC9C00DA668F /* CCSpatialPlayController.swift */; }; 00B946232B67B26D00DA668F /* ddd_video.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 00B946222B67B26D00DA668F /* ddd_video.mp4 */; }; 00B946252B67B7DE00DA668F /* CCSpatialPlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B946242B67B7DE00DA668F /* CCSpatialPlayView.swift */; }; @@ -91,6 +92,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 005580772B9F1525004B9567 /* ZZHHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZZHHelper.swift; sourceTree = ""; }; 00B946202B67AC9C00DA668F /* CCSpatialPlayController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpatialPlayController.swift; sourceTree = ""; }; 00B946222B67B26D00DA668F /* ddd_video.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = ddd_video.mp4; sourceTree = ""; }; 00B946242B67B7DE00DA668F /* CCSpatialPlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpatialPlayView.swift; sourceTree = ""; }; @@ -231,6 +233,7 @@ 1E1EA28F2B933C8200A5D5D2 /* VideoWriter.swift */, 00D33BF92B9AB21A00604A44 /* ZZHAVExtension.swift */, 1EE5C5F92B8F97BF00EDFC2F /* SpatialVideoWriter.swift */, + 005580772B9F1525004B9567 /* ZZHHelper.swift */, ); path = Util; sourceTree = ""; @@ -632,6 +635,7 @@ AF2121042B4EA61A00400B7F /* CCMineView.swift in Sources */, AF21210D2B4EA86700400B7F /* RootData.swift in Sources */, AF2121092B4EA7E200400B7F /* CCRequestDefine.swift in Sources */, + 005580782B9F1525004B9567 /* ZZHHelper.swift in Sources */, AF2120C32B4E95DA00400B7F /* NSObject+Add.swift in Sources */, 1EE5C5F72B8F973A00EDFC2F /* CCSpatialShootController.swift in Sources */, 1EFB8C782B88E2F600C72119 /* UIColor+CCExtension.swift in Sources */, diff --git a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift index 610ac7f..3f24959 100644 --- a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift @@ -320,9 +320,10 @@ class CCHomeController: BaseController, LLCycleScrollViewDelegate { self.navigationController?.pushViewController(vc, animated: true) } //选择视频 - view.selectedVideoHandler = { url in + view.selectedVideoHandler = { url,asset in let vc = CCSpatialVideoDisplayController() vc.sourceVideoURL = url + vc.videoOriginalPHAsset = asset self.navigationController?.pushViewController(vc, animated: true) } @@ -413,8 +414,8 @@ extension CCHomeController: TZImagePickerControllerDelegate,UINavigationControll gotoPhotoTransformVC(data: data, url: nil,asset: asset) } //选择视频 - spaceAlbumPopView.selectedVideoHandler = { [self] url in - gotoVideoTransformVC(url: url) + spaceAlbumPopView.selectedVideoHandler = { [self] url,asset in + gotoVideoTransformVC(url: url,asset: asset) } } @@ -429,9 +430,10 @@ extension CCHomeController: TZImagePickerControllerDelegate,UINavigationControll } - func gotoVideoTransformVC(url:URL?) { + func gotoVideoTransformVC(url:URL?,asset:PHAsset?) { let vc = VRVideoTransformController() vc.sourceVideoURL = url + vc.videoOriginalPHAsset = asset self.navigationController?.pushViewController(vc, animated: true) } @@ -493,7 +495,7 @@ extension CCHomeController: TZImagePickerControllerDelegate,UINavigationControll let videoURL = info[.mediaURL] as? URL print("选择视频 Selected video URL: \(String(describing: videoURL))") - gotoVideoTransformVC(url: videoURL) + gotoVideoTransformVC(url: videoURL,asset: info[.phAsset] as? PHAsset) // sourceVideoURL = videoURL // heroAsset1 = AVAsset(url: sourceVideoURL!) diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift index 0566c72..9b1befa 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift @@ -529,9 +529,10 @@ class CCSpatialShootController: BaseController { self.navigationController?.pushViewController(vc, animated: true) } //选择视频 - spaceAlbumPopView.selectedVideoHandler = { url in + spaceAlbumPopView.selectedVideoHandler = { url,asset in let vc = CCSpatialVideoDisplayController() vc.sourceVideoURL = url + vc.videoOriginalPHAsset = asset self.navigationController?.pushViewController(vc, animated: true) } diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController.swift index 30ad05c..d479ae0 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController.swift @@ -7,7 +7,7 @@ import UIKit import AVFoundation - +import Photos enum SpatialType : Int { @@ -38,6 +38,7 @@ class CCSpatialVideoDisplayController: BaseController { var videoOriginalAsset:AVAsset? var videoTempAsset:AVAsset? + var videoOriginalPHAsset:PHAsset? //图片源数据 var sourceVideoURL:URL? @@ -323,6 +324,7 @@ class CCSpatialVideoDisplayController: BaseController { }else if sender.tag == 201 { //右边按钮 let transVC = VRVideoTransformController() + transVC.videoOriginalPHAsset = self.videoOriginalPHAsset transVC.sourceVideoURL = sourceVideoURL self.navigationController?.pushViewController(transVC, animated: true) }else if sender.tag == 202 { diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/VRVideoTransformController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/VRVideoTransformController.swift index 1e9cae7..4a92f0a 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/VRVideoTransformController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/VRVideoTransformController.swift @@ -43,6 +43,8 @@ enum Video3DFormat : Int { class VRVideoTransformController: BaseController { var heroAsset1:AVAsset? + var videoOriginalPHAsset:PHAsset? + var sourceVideoURL:URL? // private var myPlayer: AVPlayer! @@ -154,8 +156,10 @@ class VRVideoTransformController: BaseController { mCenLab1!.textColor = UIColor.hexStringToColor(hexString: "#ffffff") mCenLab1!.font = UIFont.systemFont(ofSize: 14) mCenView!.addSubview(mCenLab1!) - mCenLab1!.text = "20240121020131292.MOV" + mCenLab1!.text = "--" + mCenLab1!.text = videoOriginalPHAsset?.value(forKey: "filename") as? String mCenLab1!.sizeToFit() + if(mCenLab1!.width > mCenView!.width - 140){ mCenLab1!.width = mCenView!.width - 140 } @@ -168,7 +172,13 @@ class VRVideoTransformController: BaseController { mCenLab2!.textColor = UIColor.hexStringToColor(hexString: "#67617A") mCenLab2!.font = UIFont.systemFont(ofSize: 12) mCenView!.addSubview(mCenLab2!) - mCenLab2!.text = "00:00:03 · 10.9 MB" + let durationStr:String = ZZHHelper.formatVideoTime(second: Int(videoOriginalPHAsset?.duration ?? 0)) + + let ar:PHAssetResource = PHAssetResource.assetResources(for: videoOriginalPHAsset!).first! + let fileSize:Double = ar.value(forKey: "fileSize") as! Double + let videoSize = Double(fileSize) / 1024 / 1024 + mCenLab2!.text = String(format: "\(durationStr) · %.1f MB",videoSize) + mCenLab2!.sizeToFit() if(mCenLab2!.width > mCenView!.width - 140){ mCenLab2!.width = mCenView!.width - 140 diff --git a/SwiftProject/SwiftProject/Project/Util/VideoWriter.swift b/SwiftProject/SwiftProject/Project/Util/VideoWriter.swift index 9eec393..4a576f1 100644 --- a/SwiftProject/SwiftProject/Project/Util/VideoWriter.swift +++ b/SwiftProject/SwiftProject/Project/Util/VideoWriter.swift @@ -106,7 +106,7 @@ class VideoWriter { } else { print("audio 追加还未准备好...") - + } } else { diff --git a/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift b/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift new file mode 100644 index 0000000..d1b7964 --- /dev/null +++ b/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift @@ -0,0 +1,34 @@ +// +// ZZHHelper.swift +// SwiftProject +// +// Created by aaa on 2024/3/11. +// + +import Foundation +class ZZHHelper { + class func formatVideoTime(second:Int) -> String { + let allTime: Int = second + var hours = 0 + var minutes = 0 + var seconds = 0 + var hoursText = "" + var minutesText = "" + var secondsText = "" + + hours = allTime / 3600 + hoursText = hours > 9 ? "\(hours)" : "0\(hours)" + + minutes = allTime % 3600 / 60 + minutesText = minutes > 9 ? "\(minutes)" : "0\(minutes)" + + seconds = allTime % 3600 % 60 + secondsText = seconds > 9 ? "\(seconds)" : "0\(seconds)" + + if hoursText == "00" { + return "\(minutesText):\(secondsText)" + }else{ + return "\(hoursText):\(minutesText):\(secondsText)" + } + } +} diff --git a/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFliterPopView.swift b/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFliterPopView.swift index d6b7435..1de4a26 100644 --- a/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFliterPopView.swift +++ b/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFliterPopView.swift @@ -31,7 +31,7 @@ class CCSpaceAlbumFliterPopView: UIView { var photos: [UIImage] = [] var selectedImageHandler: ((Data,PHAsset) -> Void)? - var selectedVideoHandler: ((URL) -> Void)? + var selectedVideoHandler: ((URL,PHAsset) -> Void)? lazy var menuView: CCPopMenuView = { //数据源(icon可不填) @@ -515,12 +515,12 @@ extension CCSpaceAlbumFliterPopView:UICollectionViewDataSource, UICollectionView if Thread.isMainThread { self.hide() - self.selectedVideoHandler?(url) + self.selectedVideoHandler?(url,asset) }else{ DispatchQueue.main.async { self.hide() - self.selectedVideoHandler?(url) + self.selectedVideoHandler?(url,asset) } } }