我想在进行视频录制时在我的应用程序中打开手电筒模式AVCaptureTorchModeOn.
我使用下面的代码.
-(void)set_TorchMode:(BOOL)turnOn
{
AVCaptureDevice *theDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([theDevice hasTorch]) {
[theDevice lockForConfiguration: nil];
AVCaptureTorchMode currentMode = [theDevice torchMode];
BOOL isAlreadyTurnedOn = (AVCaptureTorchModeOn == currentMode);
if (isAlreadyTurnedOn != turnOn) {
[theDevice setTorchMode: turnOn? AVCaptureTorchModeOn: AVCaptureTorchModeOff];
}
[theDevice unlockForConfiguration];
}
}
Run Code Online (Sandbox Code Playgroud)
我在开始录音时打开这个方法打开,在停止录音时将其关闭.
我第一次录制它时工作正常,但是当第二次开始录制时,它开启但立即关闭.录制运行时它不会保持打开状态.
谢谢你的帮助.
我试图在单个用户点击相机预览后拍几张照片,这样我就可以呈现它们,用户可以选择一个时机最好或者在"电影条"模式下全部使用.预期的用户体验是:"我打开相机,拍照,然后我看到每秒拍摄5张照片.我没有按下'拍照'按钮5次,一个就足以启动序列" .
我是iOS和Swift的新手,我的工作基于'Swift Recipes'一书(https://www.safaribooksonline.com/library/view/ios-8-swift/9781491908969/).
拍摄单张照片的源代码是:
controller = UIImagePickerController()
if let theController = controller{
theController.sourceType = .Camera
theController.mediaTypes = [kUTTypeImage as NSString]
theController.allowsEditing = true
theController.delegate = self
presentViewController(theController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
加上相关的图像处理(通过func imagePickerController).我尝试使用上面的控制器目标,但悲惨地失败了:(我相信这不是正确的方式来获得我想要的,但我很难找到合适的.任何帮助将不胜感激.
以 1080 x 1440 显示预览;使用代码在 iPhone 8 Plus 上获取最大分辨率 (3024 x 4032) 和质量的照片:
capturePhotoOutput?.capturePhoto(with: configurePhotoSettings(), delegate: self)
Run Code Online (Sandbox Code Playgroud)
使用照片设置:
private func configurePhotoSettings() -> AVCapturePhotoSettings {
let photoSettings = AVCapturePhotoSettings()
photoSettings.isHighResolutionPhotoEnabled = true
photoSettings.isAutoStillImageStabilizationEnabled = (capturePhotoOutput?.isStillImageStabilizationSupported)!
photoSettings.isAutoDualCameraFusionEnabled = (capturePhotoOutput?.isDualCameraFusionSupported)!
return photoSettings
}
Run Code Online (Sandbox Code Playgroud)
即使我在didFinishProcessingPhoto.
正在寻找使捕获顺利的解决方案,也许在后台线程中,但目前我被卡住了..
我正在开发一个自定义颤振插件,我将颤振图像相机发送到 swift 并使用颤振相机插件(https://pub.dev/packages/camera)创建一个 UIImage 。为此,我使用此方法发送相机图像字节:
startImageStream((CameraImage img) {
sendFrameBytes(bytesList: img.planes.map((plane) {
return plane.bytes;
}).toList(),
)}
Run Code Online (Sandbox Code Playgroud)
平面包含一个数组,其中包含图像的 RGBA 字节。在 swift 代码中,我将 RGBA 字节作为 NSArray 并创建一个像这样的 UIImage:
func detectFromFrame1(args:NSDictionary, result:FlutterResult){
var rgbaPlan = args["bytesList"] as! NSArray
let rgbaTypedData = rgbaPlan[0] as! FlutterStandardTypedData
let rgbaUint8 = [UInt8](rgbaTypedData.data)
let data = NSData(bytes: rgbaUint8, length: rgbaUint8.count)
let uiimage = UIImage(data: data as Data)
print(uiimage)
}
Run Code Online (Sandbox Code Playgroud)
问题是rgbaTypedData,rgbaUint8,data不为空,创建的uiimage总是nil,不明白问题出在哪里。
我需要通过 webrtc 流式传输视频并在网页上播放它,它在所有桌面浏览器窗口和 mac 操作系统上都能正常工作。它也适用于 Android 浏览器。但在 Safari iOS 上,视频会横向旋转。它在两者上旋转(当使用 iOS safari 捕获视频时以及在 chrome 或 safari 桌面上接收流时)。我使用 safari iOS 的 webrtc 网站上的默认基本 getUserMedia 示例演示对其进行了测试,并且存在同样的问题。如何解决它或者是否还有其他解决方案?
我正在制作一个应用程序,允许我将图像拼接成一个全景场景.我希望能够以编程方式打开iPhone 4上的闪光LED.
我怎样才能做到这一点?
我阅读了文档并发现我需要使用AVCaptureFlashMode
但我无法弄清楚2如何使用它?
任何帮助,将不胜感激.
更新了以下代码.谢谢SIF!
NSError* error = nil;
NSLog(@"Setting up LED");
if([captDevice hasTorch] == NO)
{
NSLog(@"Error: This device doesnt have a torch");
}
if([captDevice isTorchModeSupported:AVCaptureTorchModeOn] == NO)
{
NSLog(@"Error: This device doesnt support AVCaptureTorchModeOn");
}
AVCaptureSession* captureSession = [[AVCaptureSession alloc] init];
AVCaptureDeviceInput* videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:captDevice error:&error];
AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init];
if (videoInput && videoOutput)
{
[captureSession addInput:videoInput];
[captureSession addOutput:videoOutput];
if([captDevice lockForConfiguration:&error])
{
if (flag == YES) {
captDevice.torchMode = AVCaptureTorchModeOn;
} else … 我正在开发一个支持西班牙语内容的应用程序,这是我通过本地化字符串实现的。
现在我想知道是否有任何方法可以为按钮Retake和Use PhotoUIImagePickerController提供西班牙语支持
下面附有图片以供参考。
uiimagepickercontroller nslocalizedstring ios ios-camera swift
我想创建一个IBAction来在我的应用程序中打开iOS本机相机应用程序,但我似乎无法在线找到相机应用程序的地址。
我知道消息是:UIApplication.shared.open(URL(string: "sms:")!, options: [:], completionHandler: nil)
有谁知道哪个是正确的方案?
我也检查了谷歌和这里。也许这个问题还没有被问过,或者我只是以一种非常奇怪的方式问它。有一些应用程序,我特别注意到的是 Snapchat,当应用程序打开时,即使打开或关闭相机,甚至在静音开关打开或关闭的情况下拍照,音乐也会继续播放。相机的声音也消失了。
举个例子,现在我正在通过 Soundcloud 听音乐,当我打开我的应用程序时,音乐停止播放,但是一旦我将这行代码放入我的方法中,我就可以在使用我的应用程序时按播放并继续播放appWillEnterForeground音乐:[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
当我在 Snapchat 中执行此操作时,音乐会继续播放。即使我也拍视频!
如何?
我正在开发相机应用程序。我使用了一个按钮来在需要时打开和关闭闪光灯模式。此方法非常适用于捕获静止图像,不适用于视频模式。下面是我的代码,请帮忙。TIA
class func setFlashMode(_ flashMode: AVCaptureFlashMode, for device: AVCaptureDevice) {
if device.hasFlash && device.isFlashModeSupported(flashMode) {
do {
try device.lockForConfiguration()
device.flashMode = flashMode
device.unlockForConfiguration()
}
catch
{
print("Error:-\(error)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
Flash 按钮操作
@IBAction func flashButtonClicked(_ sender: UIButton)
{
sender.isSelected = !sender.isSelected
if !(sender.isSelected)
{
sender.setTitle(NSLocalizedString("OFF", comment: ""), for: UIControlState.normal)
CameraVC.setFlashMode(AVCaptureFlashMode.off, for: self.videoDeviceInput.device)
}
else
{
sender.setTitle(NSLocalizedString("ON", comment: ""), for: UIControlState.normal)
CameraVC.setFlashMode(AVCaptureFlashMode.on, for: self.videoDeviceInput.device)
}
}
Run Code Online (Sandbox Code Playgroud)
视频按钮操作
@IBAction func videoButtonClicked(_ sender: UIButton)
{
self.sessionQueue.async {
if !self.movieFileOutput.isRecording
{
if UIDevice.current.isMultitaskingSupported
{ …Run Code Online (Sandbox Code Playgroud) ios-camera ×10
ios ×7
swift ×5
camera-flash ×3
camera ×2
audio ×1
avfoundation ×1
cocoa ×1
dart ×1
deep-linking ×1
flutter ×1
getusermedia ×1
html5-canvas ×1
ios4 ×1
ios8 ×1
iphone ×1
swift2 ×1
swift3 ×1
webrtc ×1
xcode ×1