我需要能够同时拥有AVCaptureVideoDataOutput和AVCaptureMovieFileOutput工作.以下代码有效,但视频录制没有.在didFinishRecordingToOutputFileAtURL直接后调用委托startRecordingToOutputFileURL被调用.现在,如果我AVCaptureVideoDataOutput从
AVCaptureSession简单的评论中删除该行:
[captureSession addOutput:captureDataOutput];
视频录制工作,但然后不调用SampleBufferDelegate(我需要).
我怎样才能兼顾AVCaptureVideoDataOutput并AVCaptureMovieFileOutput同时工作.
- (void)initCapture {
AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice:[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] error:NULL];
captureDataOutput = [[AVCaptureVideoDataOutput alloc] init];
[captureDataOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()];
m_captureFileOutput = [[AVCaptureMovieFileOutput alloc] init];
NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey;
NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA];
NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key];
[captureDataOutput setVideoSettings:videoSettings];
captureSession = [[AVCaptureSession alloc] init];
[captureSession addInput:captureInput];
[captureSession addOutput:m_captureFileOutput];
[captureSession addOutput:captureDataOutput];
[captureSession beginConfiguration];
[captureSession setSessionPreset:AVCaptureSessionPresetLow];
[captureSession commitConfiguration];
[self performSelector:@selector(startRecording) …Run Code Online (Sandbox Code Playgroud) 有没有办法在不通过Apple控件的情况下在iPhone上的代码中拍照?我见过很多应用程序,但我不确定使用什么API调用.
我正在写的应用程序需要相机功能.因此,要了解如何操作相机,我遵循以下脚本:
我已将活动放入清单中,在横向模式下为其设置屏幕方向.
我遇到的问题是,当相机被侧向握住时(所以我将Galaxy Tab P1000保持在横向位置),视图就会伸展开来.
为了更具体地说明我的脚本,我使用了Google制作的完整代码副本.它可以在android-sdk\samples\android-8\ApiDemos\src\com\example\android\apis\graphics \中找到
该文件本身称为CameraPreview.
我真的不知道为什么屏幕看起来如此拉伸.当然,格式很奇怪而不是方形,但是当使用设备上安装的默认相机应用程序时,它根本不会变形.当我将图像侧向握住并将相机移动一点时,此相机会使图像变形.


我做的是:我拿着我的星系标签来拍摄物体的照片(在这种情况下是笔记本电脑),然后用我的银河手机拍了一张照片.在Galaxy上我在我正在制作的app中打开相机屏幕.这对两个图像都很重要.一个我侧身,一个我在纵向视图中.照片有点不清楚,但你可以看到,在风景画中,相机变得非常宽.
我正在尝试使用通过intent(MediaStore.ACTION_IMAGE_CAPTURE)启动的默认设备相机应用程序拍摄多张照片.使用我正在测试的设备,相机启动,拍照,要求确认,然后返回到我处理结果的活动.
我考虑过使用广播接收器回调或内容观察者; 但是,在用户完成之前,我找不到启动相机并保持活动状态的方法.如果可能,我希望避免开发自定义相机应用程序.
我必须这样做的原因是因为用户通常需要连续拍摄多张照片,而在某些设备上,相机启动时间超过5秒,使用该软件的用户连续拍摄10 - 30张照片; 不仅如此,他们还需要控制各种相机参数.
有没有办法启动相机意图,只有在用户退出相机应用程序后才返回我的活动?
我目前使用名为procamcalib的JavaCV软件来校准Kinect-Projector设置,该设置以Kinect RGB Camera为原点.此设置仅包括Kinect RGB相机(我现在大致使用Kinect作为普通相机)和一台投影仪.该校准软件使用LibFreenect(OpenKinect)作为Kinect驱动程序.
一旦软件完成其过程,它将为我提供相机和投影仪的内在和外在参数,这些参数被抛出在OpenGL软件上以验证校准,并且是一些问题开始的地方.正确设置投影和模型视图后,我应该能够适应Kinect所看到的投影内容,但为了达到这个目的,我必须在所有3轴上进行手动平移,最后一部分不做对我有任何意义!你能帮我解整一下吗?用于检索Kinect数据的SDK是OpenNI(不是最新的2.x版本,应该是1.5.x)
我将解释我正在做什么来重现这个错误.校准参数使用如下:
投影矩阵设置为(基于 http://sightations.wordpress.com/2010/08/03/simulating-calibrated-cameras-in-opengl/):
r = width/2.0f; l = -width/2.0f;
t = height/2.0f; b = -height/2.0f;
alpha = fx; beta = fy;
xo = cx; yo = cy;
X = kinectCalibration.c_near + kinectCalibration.c_far;
Y = kinectCalibration.c_near*kinectCalibration.c_far;
d = kinectCalibration.c_near - kinectCalibration.c_far;
float* glOrthoMatrix = (float*)malloc(16*sizeof(float));
glOrthoMatrix[0] = 2/(r-l); glOrthoMatrix[4] = 0.0f; glOrthoMatrix[8] = 0.0f; glOrthoMatrix[12] = (r+l)/(l-r);
glOrthoMatrix[1] = 0.0f; glOrthoMatrix[5] = 2/(t-b); glOrthoMatrix[9] = …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中有一个自定义相机,它工作正常,但在新的更新后,我收到此错误:
'jpegPhotoDataRepresentation(forJPEGSampleBuffer:previewPhotoSampleBuffer :)'在iOS 11.0中已弃用:请改用 - [AVCapturePhoto fileDataRepresentation].
这是我收到错误的行:
guard let imageData =
AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: photoSampleBuffer, previewPhotoSampleBuffer: previewPhotoSampleBuffer) else {
return
}
Run Code Online (Sandbox Code Playgroud)
这是我的全部功能(如果需要):
//Take pic function
func photoOutput(_ captureOutput: AVCapturePhotoOutput,
didFinishProcessingPhoto photoSampleBuffer: CMSampleBuffer?,
previewPhoto previewPhotoSampleBuffer: CMSampleBuffer?,
resolvedSettings: AVCaptureResolvedPhotoSettings,
bracketSettings: AVCaptureBracketedStillImageSettings?,
error: Error?) {
// Make sure we get some photo sample buffer
guard error == nil,
let photoSampleBuffer = photoSampleBuffer else {
print("Error capturing photo: \(String(describing: error))")
return
}
// Convert photo same buffer to a jpeg image data by using // …Run Code Online (Sandbox Code Playgroud) 有没有办法在仿真器相机拍摄照片时设置静态图片?我想在模拟器上用zxing条形码阅读器测试ir.
看来Camera.Parameters的setJpegQuality方法被忽略了,至少在我尝试过的设备上是这样的(Nexus S,Galaxy S2).
它是否适用于其他任何人,或者这是一个已知问题,还是我做错了什么,还是......?
下面设置参数的代码.jpeg质量1非常独特,因此很容易在视觉上确定它是否正常工作......而事实并非如此!此处设置的其他参数(例如棕褐色)起作用.
camera = Camera.open();
final Camera.Parameters parameters = camera.getParameters();
parameters.setJpegQuality(1);
parameters.setPictureFormat(ImageFormat.JPEG);
// Let's set a SEPIA effect, just to verify these parameters are working at all!
parameters.setColorEffect(Camera.Parameters.EFFECT_SEPIA);
// I've seen this syntax too on the internet, presumably it's legacy.
parameters.set("jpeg-quality", 1);
camera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud) 我正在尝试从Android的前置摄像头录制视频,同时在表面视图上显示.
我在前置摄像头发现的是,即使表面视图显示正常视图,它也会在录制过程中镜像翻转视频.
有什么方法可以防止这种情况或修复它吗?
我读过其他stackoverflow文章,比如如何防止android从前置摄像头反转图像?
但它似乎只是谈论用前置摄像头拍摄照片并反转图像,我已经使用矩阵自行修复了这些照片.但是,似乎使用矩阵的视频不起作用.
我使用navigator.getUserMedia与约束来访问用户的摄像头,采用饲料作为HTML源<video>,然后复制其流,以drawImage一个<canvas>背景.我正在做这一切,所以我可以定期拍摄快照.
我想要做的是,一旦页面开始拍摄快照,锁定getUserMedia相机的焦点/曝光,以便在快照间隔之间环境可以改变,而不会改变光平衡或相机重新聚焦.
有谁知道JS方面是否可行?