如何在视频文件Swift(iOS)上添加文本

时间:2019-08-11 18:44:00

标签: ios swift avfoundation

我有一个功能,我试图在其中保存视频文件。一切正常。但是我不知道如何向将实时读取元数据(以动态形式)的函数添加方法。现在,我的功能仅在访问时捕获(在屏幕上滑动)。你可以帮帮我吗。我read in this topic的一种方法可以在视频的不同时间覆盖文本:。我需要不断地(动态地)覆盖文本,并捕获元数据中是否有变化。每半秒/秒有效。

func trimVideo(sourceURL: URL, duration: Double, metaData: AVMutableMetadataItem, completion: @escaping (Result<URL, Error>)->Void) {

        guard sourceURL.isFileURL else { fatalError() }

        let asset = AVURLAsset(url: sourceURL, options: [AVURLAssetPreferPreciseDurationAndTimingKey: true])

        guard let exportSession = AVAssetExportSession(asset: asset,
                                                       presetName: AVAssetExportPresetPassthrough) else { fatalError() }

        exportSession.timeRange = generateRange(startTime: asset.duration.seconds - duration,
                                                endTime: asset.duration.seconds)
        exportSession.outputURL = FileManager.createNewFilePath(fileName: videoName)
        exportSession.outputFileType = AVFileType.mp4
        exportSession.shouldOptimizeForNetworkUse = true
        exportSession.metadata = [metaData]

        exportSession.exportAsynchronously(completionHandler: {() -> Void in
            switch exportSession.status {
            case .failed:
                print(exportSession.error ?? "No error")
                completion(.failure(exportSession.error!))
            case .cancelled:
                let error = NSError(domain: "VideoApp", code: 00, userInfo: ["Message": "Export cancelled"])
                completion(.failure(error))
            case .completed:
                guard let correctURL = exportSession.outputURL
                else {
                    print("error getting url")
                    return
                }
                print("Successful! \(correctURL)")
                completion(.success(correctURL))
            default:
                fatalError()
            }
        })
    }

0 个答案:

没有答案