首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将捕获会话保存在文档目录中,使用设备的avfoundation!

将捕获会话保存在文档目录中,使用设备的avfoundation!
EN

Stack Overflow用户
提问于 2015-08-11 08:29:04
回答 2查看 1K关注 0票数 2

下面的片段用于将视频保存在文档目录中(NSdata从AVCaptureMoviefileOutput接收)

代码语言:javascript
运行
复制
func captureOutput(captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!, fromConnections connections: [AnyObject]!, error: NSError!) {
    delegate?.recordingStopped?()

   var data = NSData(contentsOfURL: outputFileURL)
    let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
    let documentsDirectory:AnyObject=paths[0]
    let dataPath=documentsDirectory.stringByAppendingPathComponent("/MyFolder")
    if (!NSFileManager.defaultManager().fileExistsAtPath(dataPath)) {
        NSFileManager.defaultManager() .createDirectoryAtPath(dataPath as String, withIntermediateDirectories: false, attributes: nil, error: nil)
    }

    var outputPathr = "\(dataPath)/TestproximityRwqxq.mp4"

    var success = data!.writeToFile(outputPathr as String, options: nil, error: nil)

}

如果用于其他视频(从NSbundle中选择视频并转换为NSdata),则在模拟器中使用相同的代码,但不使用设备,请帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-11 14:08:01

这个代码工作得很好,我们需要使用最低iOS版本8.4(XCode 6.4)的设备。版本低于8.4的设备不使用Swift2获取文档目录的内容。

票数 0
EN

Stack Overflow用户

发布于 2019-10-21 11:22:45

上面的解决方案,我已经修改为swift5,它是为我工作。

代码语言:javascript
运行
复制
func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {

    if (error != nil) {
        print("Error recording movie: \(error!.localizedDescription)")

    } else {
        if let data = NSData(contentsOf: outputFileURL) {

            let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
            let documentDirectory = paths[0]
            let docURL = URL(string: documentDirectory)!
            let dataPath = docURL.appendingPathComponent("/DIRECTORY_NAME")

            if !FileManager.default.fileExists(atPath: dataPath.absoluteString) {
              do {
                    try FileManager.default.createDirectory(atPath: dataPath.absoluteString, withIntermediateDirectories: true, attributes: nil)
                    self.directoryURL = dataPath
                    print("Directory created successfully-\(dataPath.path)")
                } catch let error as NSError{
                    print("error creating directory -\(error.localizedDescription)");
                }
            }

            let outputPath = "\(dataPath.path)/filename.mp4"
            let success = data.write(toFile: outputPath, atomically: true)
            // saving video into photos album.
            UISaveVideoAtPathToSavedPhotosAlbum(outputPath, nil, nil, nil)

        } 
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31936811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档