我正在制作一个应用程序,以设备最大帧速率(即 iPhone 5s 中的 120fps,6 和 6s 中的 240fps)录制视频。我已经成功配置了AVCaptureDevice设置maxFrameRateDuration,我打印到日志currentDevice.activeFormat.videoSupportedFrameRateRanges,一切都很好。
但是当我尝试保存视频时,它确实保存了它,但以正常帧速率,而不是 120 或 240fps。
请问有人可以帮我吗?任何帮助将非常感激。
提前致谢。
PS:这是迄今为止我的完整代码
import UIKit
import AVFoundation
import AVKit
import AssetsLibrary
class ViewController: UIViewController, AVCaptureFileOutputRecordingDelegate {
@IBOutlet weak var cameraButton:UIButton!
let captureSession = AVCaptureSession()
var currentDevice:AVCaptureDevice?
var videoFileOutput:AVCaptureMovieFileOutput?
var cameraPreviewLayer:AVCaptureVideoPreviewLayer?
var outputPath: String = ""
var backgroundRecordId: UIBackgroundTaskIdentifier = UIBackgroundTaskInvalid
var isRecording = false
override func viewDidLoad() {
super.viewDidLoad()
// Preset the session for taking photo in full resolution
captureSession.sessionPreset = …Run Code Online (Sandbox Code Playgroud) 我已经完成了相机校准。现在我想获得棋盘图片的鸟瞰图。如下所示。但结果很奇怪,看起来不是一个正方形。你可以看到图3。每个正方形都是7.95x7.95。有人知道为什么吗?
gpsPoints[0] = Point2f(..., ...);
gpsPoints[1] = Point2f(..., ...);
gpsPoints[2] = Point2f(..., ...);
gpsPoints[3] = Point2f(..., ...);
dst[0] = Point2f(..., ...);
dst[1] = Point2f(..., ...);
dst[2] = Point2f(..., ...);
dst[3] = Point2f(..., ...);
Mat transmtx = getPerspectiveTransform(gpsPoints, dst);
warpPerspective(img, frame, transmtx, img.size());
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 Swift 中创建一个自定义相机。我找到了很多关于此的帖子,并设法打开相机,有一个“开始录制”按钮。但是,当单击“开始录制”按钮时,出现以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:] No active/enabled connections'
Run Code Online (Sandbox Code Playgroud)
当查找这个错误时,它应该是由于我在函数中没有设置相机的质量引起的beginSession:
func beginSession(captureDevice: AVCaptureDevice) {
var err : NSError? = nil
var input = AVCaptureDeviceInput?()
do {
input = try AVCaptureDeviceInput(device: captureDevice)
} catch _ {
//Error handling, if needed
}
captureSession.addInput(input)
captureSession.sessionPreset = AVCaptureSessionPresetHigh;
if err != nil {
print("error: \(err?.localizedDescription)")
}
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
self.view.layer.addSublayer(previewLayer!)
previewLayer?.frame = self.view.layer.frame
captureSession.startRunning()
let btn: UIButton = UIButton(frame: CGRectMake((self.view.frame.size.width-350)/2, (self.view.frame.size.height-80), 350, 70)) …Run Code Online (Sandbox Code Playgroud) 当我放大时,整个场景都会消失。我只能从很远的角度查看和编辑场景。然而,玩游戏时一切正常。当我尝试使用画布(后来我删除了它)时,这个问题突然出现。我能做些什么?我已经尝试更改主相机上的剪裁平面设置,但没有任何改变。
我制作了一个条形码检测器应用程序,因此我使用 SurfaceView 来处理相机源。相机检测到条形码并返回其值后,我让它停止。没有任何函数可以在任何事件上重新启动相机源和表面视图,只有一个函数,即camersource.start();
它启动了,但问题在后台运行,我看不到任何内容如何解决这个问题?并再次显示表面视图和相机源。
这是活动 onCreate 方法的完整代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = (SurfaceView) findViewById(R.id.cameraPreview);
txtShow = (TextView) findViewById(R.id.txtShow);
startBarcode();
}
public void startBarcode() {
barcodeDetector = new BarcodeDetector.Builder(this)
.setBarcodeFormats(Barcode.ALL_FORMATS)
.build();
cameraSource = new CameraSource.Builder(this, barcodeDetector)
.setRequestedPreviewSize(800, 600)
.setAutoFocusEnabled(true)
.build();
//Events
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
//Make Request Runtime Permission
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CAMERA}, RequestCameraPermissionId);
return;
}
try {
cameraSource.start(surfaceView.getHolder());
} catch (IOException e) {
e.printStackTrace();
} …Run Code Online (Sandbox Code Playgroud) 如何使用前置摄像头镜像修复捕获图像?SnapChat 似乎可以修复它以及 WhatsApp 和 Instagram,我该怎么办?我真的很想为此找到解决方案......它很烦人......提前谢谢
我已经看到在从前置摄像头 iOS 5.0 捕获时总是看到镜像,但它翻转了后置摄像头和前置摄像头的图像,这并没有真正解决任何人的问题。如果有人能帮我弄清楚如何只翻转前置摄像头图像或任何其他很棒的解决方案!
import UIKit
import AVFoundation
@available(iOS 10.0, *)
class CameraViewController: UIViewController,AVCaptureVideoDataOutputSampleBufferDelegate {
let photoSettings = AVCapturePhotoSettings()
var audioPlayer = AVAudioPlayer()
var captureSession = AVCaptureSession()
var videoDeviceInput: AVCaptureDeviceInput!
var previewLayer = AVCaptureVideoPreviewLayer()
var frontCamera: Bool = false
var captureDevice:AVCaptureDevice!
var takePhoto = false
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
prepareCamera()
}
func prepareCamera() {
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
if let availableDevices = AVCaptureDeviceDiscoverySession(deviceTypes: …Run Code Online (Sandbox Code Playgroud) w3.org 官方文档中没有标签capture="camera"属性。input type="file"
讽刺的是在我发现的很多地方capture="camera"都使用了。例如这里或这里或这里以及许多其他地方。
没有一个单独的教程capture="user"。这是为什么?
有没有之间的主要差异capture="user"和capture="camera"?
可以请你还别说对设备的兼容性capture="user"和capture="camera"?我在任何地方都找不到。
我不知道如何保存到相机胶卷(相当于 React Native 的CameraRoll saveToCameraRoll().
Flutter 相机推荐使用path_provider获取应用程序目录,但它似乎没有获取相机胶卷目录路径的选项。
我得到了一个例外 CameraController.capture
相关的变化(只有相关的变化,以差异的形式)在这里:https : //gist.github.com/briankung/45f9d8438baab59ddcd3b6f3fe811d99
我的全部main.dart内容如下,以便于重现(搜索QUESTION:以找到相关部分):
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:camera/camera.dart';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
List<CameraDescription> cameras;
Future<Null> main() async {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown
]);
cameras = await availableCameras();
runApp(new CameraApp());
}
class CameraApp extends StatefulWidget {
@override
_CameraAppState createState() => new _CameraAppState();
}
class _CameraAppState extends State<CameraApp> {
String _appDirectoryPath;
CameraController controller;
Future<void> _requestAppDirectory() async {
// QUESTION: `path_provider` …Run Code Online (Sandbox Code Playgroud) 我正在尝试为 Win 10 设备开发一个应用程序,该应用程序将在出厂重置的设备上运行(使用 Windows 10 build 15063)。这个应用程序必须能够访问硬件(所以我不能使用 UWP,因为 UWP 在沙盒模式下运行)并且还必须能够使用所有相机设备(使用某种相机选择器)拍照。我的主要问题是我只能使用内置的 .NET 库来安装和启动应用程序,所以我不能使用任何 3'rd 方框架来简化相机捕获(出于安全原因,整个应用程序也必须包含在单个 .exe 文件),而 Windows.media.capture 仅适用于 UWP,这对我来说毫无用处。
谁能知道我可以使用哪个默认库来创建足够简单的应用程序以具有相机捕获功能?
实际上,我的应用程序存在一些问题,
就像我有一个按钮可以打开前置摄像头并扫描服务员徽章,但是当我尝试检查设备是否有摄像头,如果没有,我只是隐藏了那个按钮,问题就来了。
但是我有一个使用前置摄像头作为 QR 扫描仪的设备,所以它并不是真正可以使用的摄像头,因此当我尝试单击该按钮时应用程序崩溃。
所以问题是我如何处理和检查不仅相机存在,而且即使它可以工作?