- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 AVCaptureSession 获取相机输出并成功添加了音频和视频输入和输出。
{
var captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) as AVCaptureDevice
var error: NSError? = nil
do {
//remove the previous inputs
let inputs = cameraSession.inputs as! [AVCaptureDeviceInput]
for oldInput:AVCaptureDeviceInput in inputs {
cameraSession.removeInput(oldInput)
}
cameraSession.beginConfiguration()
if cameraPosition.isEqualToString("Front") {
captureDevice = cameraWithPosition(.Front)!
}
else {
captureDevice = cameraWithPosition(.Back)!
}
let deviceInput = try AVCaptureDeviceInput(device: captureDevice)
if (cameraSession.canAddInput(deviceInput) == true) {
cameraSession.addInput(deviceInput)
}
let dataOutput = AVCaptureVideoDataOutput()
dataOutput.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString) : NSNumber(unsignedInt: kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)]
dataOutput.alwaysDiscardsLateVideoFrames = true
if (cameraSession.canAddOutput(dataOutput) == true) {
cameraSession.addOutput(dataOutput)
}
let audioCheck = AVCaptureDevice.devicesWithMediaType(AVMediaTypeAudio)
if audioCheck.isEmpty {
print("no audio device")
return
}
let audioDevice: AVCaptureDevice! = audioCheck.first as! AVCaptureDevice
var audioDeviceInput: AVCaptureDeviceInput?
do {
audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice)
} catch let error2 as NSError {
error = error2
audioDeviceInput = nil
} catch {
fatalError()
}
if error != nil{
print(error)
let alert = UIAlertController(title: "Error", message: error!.localizedDescription
, preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
if cameraSession.canAddInput(audioDeviceInput){
cameraSession.addInput(audioDeviceInput)
}
cameraSession.commitConfiguration()
let queue = dispatch_queue_create("com.invasivecode.videoQueue", DISPATCH_QUEUE_SERIAL)
dataOutput.setSampleBufferDelegate(self, queue: queue)
}
catch let error as NSError {
NSLog("\(error), \(error.localizedDescription)")
}
}
使用 AVCaptureMovieFileOutput 可以使用
将输出视频保存在照片库中movieFileOutput.startRecordingToOutputFileURL( outputFilePath, recordingDelegate: self)
但我使用 AVCaptureVideoDataOutput 作为输出,对我从代表那里获得的元数据进行额外的工作并尝试录制视频,但我无法获得任何开始和停止录制视频的方法.
建议如何使用 AVCaptureVideoDataOutput 录制视频
最佳答案
你需要一个 AVCaptureSession 来做到这一点:
//First add AVCaptureVideoDataOutput to AVCaptureSession
AVCaptureSession *_captureSession;
_captureSession = [[AVCaptureSession alloc] init];
......Configuration......
AVCaptureVideoDataOutput *videoOut = [[AVCaptureVideoDataOutput alloc] init];
......Configuration......
if ( [_captureSession canAddOutput:videoOut] ) {
[_captureSession addOutput:videoOut];
}
//Then use captureSession to start and stop recording
[_captureSession startRunning];
[_captureSession stopRunning];
请查看 RosyWriterCapturePipeline.m,这是一个很好的例子:
关于ios - 如何使用 AVCaptureVideoDataOutput 录制视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38977579/
我使用 AVCaptureVideoDataOutput 从相机检索图像并显示在 iPhone 显示屏上。我在使用 iOS8.4 的 iPhone 6 plus 上运行代码,效果很好。图像全屏显示。但
我正在使用 AVFoundation 框架用 iPhone 摄像头捕捉视频,我的代码: self.session = [[AVCaptureSession alloc] init]; ... s
我正在捕获视频并将其转换为 CGImage 来对其进行处理。它将工作约 10 秒,收到内存警告,然后崩溃(通常表示数据格式化程序暂时不可用)。有人可以帮我解决这个问题吗? - (void) captu
我正在编写一个应用程序,它对从 AVCaptureSession 中的 AVCaptureVideoDataOutput 获取的图像数据进行一些实时处理。 我目前能够启动 session ,添加输入和
无论如何使用 AVCaptureVideoDataOutput (或其他方式?)以每秒至少 30 帧的速度在 10 位 P3 颜色空间中获取 CMSampleBuffers?我可以将 AVCaptur
我有一个 layerRect 显示我的相机的图像是这样的: CGRect layerRect = [[videoStreamView layer] bounds]; [[[self captureMa
背景: 我使用 AVCaptureVideoDataOutput 与 AVCaptureSession 和其他各种 AV 工具配合来创建视频 session ,以便我可以创建相机 session 。我
如果我们使用 AVCaptureMovieFileOutput,我们有 recordedDuration 属性,它给出了录制视频的长度。 但是,对于使用 AVCaptureVideoDataOutpu
借助 iOS4 中包含的 AVFoundation 中的新视频功能,可以使用 AVCaptureVideoDataOutput 访问相机捕获的原始视频帧。 我想在这些帧上叠加文本和其他信息,然后将它们
我不确定我应该在方法中放入什么 - (void) captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSam
我正在使用 AVCaptureScreenInput 在 Mac 上尝试屏幕捕获,但从未调用 AVCaptureVideoDataOutput 委托(delegate) captureOutput,我
这就是问题所在。我正在使用 AVCaptureVideoDataOutput 从相机获取视频帧并使用 AVAssetWriter 从中制作视频。它工作正常,但我得到的视频是颠倒的,因为我的应用程序的设
我正在使用 AVCaptureSession 获取相机输出并成功添加了音频和视频输入和输出。 { var captureDevice = AVCaptureDevice.defaultDevi
根据this documentation ,AVCaptureVideoDataOutput 应该允许通过像素格式选项kCVPixelFormatType_128RGBAFloat 将图像捕获为 fl
我运行了一个 AVCaptureVideoDataOutput session ,设置如下,效果很好,并将缓冲区记录到文件中。 我还想录制音频,但缓冲区中似乎没有任何音频,即使我已将麦克风添加为 ca
Apple 最近的示例代码之一使用相同的串行队列从 AVCaptureVideoDataOutput 和 AVCaptureAudioDataOutput 委托(delegate)接收示例。我需要知道
我想保存视频流中的图像,我已将 session 预设设置为 AVCaptureSessionPresetPhoto,但我在设备上获得的分辨率非常低。我在 3GS 上进行测试,此预设返回 512x384
我正在使用 AVFoundation 从后置摄像头捕获视频,并希望在按下开始按钮时处理帧。问题是,在我按下开始按钮的那一刻,我从样本缓冲区中抓取帧并对其进行处理,但我得到的帧似乎是过去的帧,这意味着不
我正在向我的 AVCaptureVideoDataOutput 添加 key 。添加 key 时 AVVideoProfileLevelKey 系统抛出我 -> Failed to set (cont
我正在尝试通过设置 kCVPixelBufferWidthKey 和 kCVPixelBufferHeightKey 从 AVCaptureVideoDataOutput 捕获特定大小的帧。 问题是缓
我是一名优秀的程序员,十分优秀!