使用 Swift 录制视频 avfoundation 时我做错了什么?

2024-01-09

我正在用 AVFoundation 快速录制视频,但看不到 file.mp4。我不知道我是否正在录制并且保存得不好,或者我没有录制。因为我可以显示会话预览,所以所有组件都使其功能正确。我的代码是:

 import UIKit
 import AVFoundation

 class ViewController: UIViewController, AVCaptureFileOutputRecordingDelegate {
 var delegate : AVCaptureFileOutputRecordingDelegate?
 @IBOutlet var imageView : UIImageView
 @IBOutlet var imagePreview : UIView

var session : AVCaptureSession!
var fileOutput : AVCaptureMovieFileOutput!
var previewLayer : AVCaptureVideoPreviewLayer!

func initCamera() -> Bool {
 var cameraBack : AVCaptureDevice?
    var videoIn : AVCaptureDeviceInput

    var devices : NSArray = AVCaptureDevice.devices()
    for device: AnyObject in devices{
        if device.position == AVCaptureDevicePosition.Back{
            cameraBack = device as? AVCaptureDevice
        }
    }
 delegate=self
  var error : NSErrorPointer!
    var deviceInput : AVCaptureInput =      AVCaptureDeviceInput.deviceInputWithDevice(cameraBack, error: error) as AVCaptureInput

 self.session=AVCaptureSession()
    self.session.addInput(deviceInput as AVCaptureInput)

    self.fileOutput = AVCaptureMovieFileOutput()
    self.session.addOutput(self.fileOutput)
 var previewLayer: AVCaptureVideoPreviewLayer =     AVCaptureVideoPreviewLayer.layerWithSession(self.session) as AVCaptureVideoPreviewLayer
    previewLayer.frame = self.imagePreview.bounds
    self.imagePreview.layer.addSublayer(previewLayer)

    self.session.startRunning()

 return true
}


  @IBAction func stop(sender : UIButton) {
    println("Stop")
    self.fileOutput.stopRecording()
}

  @IBAction func record(sender : UIButton) {

    var formatter: NSDateFormatter = NSDateFormatter()
    formatter.dateFormat = "yyyy-MM-dd-HH-mm-ss"
    let dateTimePrefix: String = formatter.stringFromDate(NSDate())

        let paths = NSSearchPathForDirectoriesInDomains(
            .DocumentDirectory, .UserDomainMask, true)

        let documentsDirectory = paths[0] as String

        var filePath:String? = nil
        var fileNamePostfix = 0
        do {
            filePath =
            "\(documentsDirectory)/\(dateTimePrefix)-\(fileNamePostfix++).mp4"
        } while (NSFileManager.defaultManager().fileExistsAtPath(filePath))
    self.fileOutput.startRecordingToOutputFileURL(filePath, recordingDelegate: delegate)

   override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.initCamera()
}


func captureOutput(captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!, fromConnections connections: AnyObject[]!, error: NSError!){
    recording=true
}

func captureOutput(captureOutput: AVCaptureFileOutput!, didStartRecordingToOutputFileAtURL fileURL: NSURL!, fromConnections connections: AnyObject[]!) {
    recording=false

  }

有什么我看不到的明显错误吗?

Thanks!!


AVCaptureFileOutput -startRecordingToOutputFileURL需要一个NSURL。在发布的代码中,传递的参数filePath is a String。尝试使用NSURL(string: filePath)反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Swift 录制视频 avfoundation 时我做错了什么? 的相关文章

随机推荐

  • 如何在spark中设置驱动程序的python版本?

    我正在使用 Spark 1 4 0 rc2 因此我可以将 python 3 与 Spark 一起使用 如果我添加export PYSPARK PYTHON python3 to my bashrc文件中 我可以与 python 3 交互运行
  • 清除 Laravel 的 orderBy

    我有一个通用函数 它为我提供通用查询集 例如 class Model extends Eloquent public static function get queryset queryset self where foo bar Do t
  • wxPython:wx.PyControl可以包含wx.Sizer吗?

    Can a wx PyControl包含一个wx Sizer 请注意 我最终想要在这里做的事情 具有浮点值的旋转器 已经在另一个问题中得到了回答 我对在 a 中布局小部件特别感兴趣wx PyControl如果我需要制作自己的自定义小部件 这
  • 上传文件时发生 Curl 错误“创建表单数据失败”

    当我尝试使用 php 和curl 上传文件时 出现错误 创建表单数据失败 我知道当文件路径不正确时会发生错误 test php postcontent files test jpg test php 和 test jpg 在同一文件夹中 但
  • 解析用户对象ACL

    我是解析新手 对解析用户 表 中数据的安全性有疑问 我想将附加数据与用户数据一起存储 例如 电话号码 但默认情况下 解析将用户表设置为任何人都具有读取权限 因此 如果有人点击我的解析 api 他们将能够获得所有用户及其电话号码的列表 显然这
  • 将基本 Cocoa 应用程序转换为基于文档的应用程序

    我和我的团队一直在开发一个现有的 非基于文档的 Cocoa 应用程序 这是我们的第一个 Cocoa 应用程序 尽管到目前为止我们已经开发了许多 iOS 应用程序 不过 该应用程序确实应该是基于文档的 因此我已经开始尝试对其进行转换 但这里和
  • Sphinx:同一图形可能有不同的相对路径吗?

    我是狮身人面像新手 想在两个不同的版本中显示相同的图形 rst files 第一个 rst 文件 lower rst 与 figures 文件夹位于同一级别 我在其中包含一个图形 如下所示 figure figures figure1 pn
  • 模数除法如何工作

    我不太明白模数除法是如何工作的 我在计算27 16并结束了11我不明白为什么 我似乎无法在网上找到通俗易懂的解释 有人可以详细说明这里发生了什么吗 大多数解释都遗漏了一个重要步骤 让我们用另一个例子来填补空白 鉴于以下情况 Dividend
  • 启动进程的服务不会显示 GUI C#

    嘿 我正在尝试获取服务来启动我的程序 但它没有显示 GUI 该过程开始 但没有显示任何内容 我尝试启用 允许服务与桌面交互 但仍然不起作用 我的程序是一个计算机锁定设备 用于阻止未经授权的用户访问计算机 我正在运行带有 64 位操作系统的
  • 在 Mac 应用程序中执行 AppleScript 文件?

    我正在寻找一种从 Mac 应用程序中执行 Applescript 文件的方法 我以前制作过使用的 mac 应用程序NSAppleScript script NSAppleScript alloc initWithSource MY CODE
  • 识别某人正在玩的游戏而无需聊天(discord bot python)

    不和谐机器人蟒蛇 代码是 如果有人聊天 如果这个人正在玩 守望先锋 他或她将被提升为玩家角色 如果没有 他或她将被删除或什么也不会发生 但我正在寻找一种无需聊天即可识别正在玩的游戏的方法 有人能帮我吗 client event async
  • 在 PHP 中组合图像同时保留透明度

    看看这里 我想删除蓝色部分末端的白色东西 但我尝试了很多不同的方法 但都不起作用 如果需要 可以在以下位置找到 pnghttp tyilo jbusers com PNG http tyilo jbusers com PNG 文件夹 htt
  • Owl Carousel 2 - 如何获取当前物品?

    我正在使用 Owl Carousel 2 开发一个网站 我只想检测哪个项目显示在前面 以前是这样的 http owlgraphic com owlcarousel demos owlStatus html http owlgraphic c
  • 从不同文件夹加载 Jar 文件

    我目前正在制作 Minecraft Mod Loader package spideyzac import java util concurrent CopyOnWriteArrayList import org lwjgl opengl
  • 无法将 Enumerable.Count 与 List 一起使用,编译器假定为 List.Count

    我还没有注意到这种行为 也许是因为我更喜欢 VB NET 中的查询语法并将查询和执行方法拆分为不同的语句 如果我尝试编译以下简单查询 Dim wordList As List Of String New List Of String Dim
  • 如何使用spring mvc使用@RequestParam捕获多个参数?

    假设单击一个超链接并使用以下参数列表触发一个 urlmyparam myValue1 myparam myValue2 myparam myValue3 现在我如何使用捕获所有参数 RequestParam在 Spring MVC 中 我的
  • Firefox/Chrome 上的字体大小和缩进不一致

    Demo http jsfiddle net waitinforatrain 9JU5b http jsfiddle net waitinforatrain 9JU5b I m trying to make a notification i
  • 关于 iOS 本地化

    在以下文档中 http developer apple com library mac documentation MacOSX Conceptual BPInternational Articles LanguageDesignation
  • Maven打包有效pom

    我有一个带有许多子模块的 Maven 项目 其中一些子模块打包为 jar 并部署到 Nexus Maven 存储库 我遇到的问题是打包的 jar 引用了不一定部署的父 pom 有没有办法让Maven部署有效的pom而不是pom xml 您需
  • 使用 Swift 录制视频 avfoundation 时我做错了什么?

    我正在用 AVFoundation 快速录制视频 但看不到 file mp4 我不知道我是否正在录制并且保存得不好 或者我没有录制 因为我可以显示会话预览 所以所有组件都使其功能正确 我的代码是 import UIKit import AV