【问题标题】:SwiftUI How to Edit video in UIImagePickerController?SwiftUI 如何在 UIImagePickerController 中编辑视频?
【发布时间】:2023-01-22 23:39:56
【问题描述】:

我做了一个视频录制功能。我想知道如何在我按下之前使用这个栏编辑视频使用视频按钮。 喜欢这个视频。 下面是我的代码。

struct ContentView: View {
    @State private var isShowCamara = false
    var body: some View {
            Button {
                isShowCamara.toggle()
            } label: {
                Text("Record and Save Video")
            }
        }
        .sheet(isPresented: $isShowCamara) {
            RecordVideoPicker(sourceType: .camera)
            
        }
    }
}
struct RecordVideoPicker: UIViewControllerRepresentable {
    @Environment(\.presentationMode) private var presentationMode
    var sourceType: UIImagePickerController.SourceType = .camera
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
        
    }
    func makeUIViewController(context: UIViewControllerRepresentableContext<RecordVideoPicker>) -> UIViewController {
        let mediaUI = UIImagePickerController()
        mediaUI.sourceType = sourceType
        mediaUI.mediaTypes = [kUTTypeMovie as String]
        mediaUI.allowsEditing = true
        mediaUI.delegate = context.coordinator
        return mediaUI
    }
    final class Coordinator : NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
        var parent: RecordVideoPicker

        init(_ parent: RecordVideoPicker) {
                self.parent = parent
        }
                func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
                    parent.presentationMode.wrappedValue.dismiss()
                    guard
                      let mediaType = info[UIImagePickerController.InfoKey.mediaType] as? String,
                      mediaType == (kUTTypeMovie as String),
                      let url = info[UIImagePickerController.InfoKey.mediaURL] as? URL,
                      UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(url.path)
                      else { return }
                    UISaveVideoAtPathToSavedPhotosAlbum(url.path, self, nil
                        ,nil)
                }
        
    }
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }
}

我希望流程是录制视频,它可以编辑视频长度(用户可以使用屏幕上方的栏进行编辑),然后按使用视频按钮保存视频。

【问题讨论】:

    标签: video swiftui camera avfoundation


    【解决方案1】:

    要编辑视频,您应该使用UIVideoEditorController。您需要将其包装在 UIViewControllerRepresentable 中,就像您对 UIImagePickerController 所做的那样。

    来自Apple's documentation

    当您打算为电影编辑提供界面时,请使用视频编辑器 [UIVideoEditorController]。虽然 UIImagePickerController 类还允许用户修剪电影,它的主要作用是选择保存的照片和电影,以及捕捉新的照片和电影。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多