简单的问题我似乎无法找到答案的原因.
你如何在Swift中循环AVPlayer?
numberOfLoops = -1仅适用于AVAudioPlayer
我确实需要它循环没有任何延迟/黑色闪光等.这就是为什么我没有使用MPMoviePlayerViewController.
谢谢你的帮助.
码:
let url_1 = NSURL.fileURLWithPath(outputFilePath_1)
let asset_1 = AVAsset.assetWithURL(url_1) as? AVAsset
let playerItem_1 = AVPlayerItem(asset: asset_1)
let player_1 = AVPlayer(playerItem: self.playerItem_1)
let playerLayer_1 = AVPlayerLayer(player: self.player_1)
playerLayer_1!.frame = self.view.frame
self.view.layer.addSublayer(self.playerLayer_1)
player_1!.play()
Run Code Online (Sandbox Code Playgroud) 我正在使用ARKit并试图将相机的位置作为旋转和(x,y,z)坐标在真实世界空间中.我所能得到的只是一个matrix_float4x4,我真的不明白,而且欧拉角只显示旋转.
这是我现在拥有的:
let transform = sceneView.session.currentFrame?.camera.transform
let eulerAngles = sceneView.session.currentFrame?.camera.eulerAngles
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
eulerAngles: float3(-0.694798, -0.0866041, -1.68845)
transform: __C.simd_float4x4(columns: (float4(-0.171935, -0.762872, 0.623269, 0.0), float4(0.982865, -0.0901692, 0.160767, 0.0), float4(-0.0664447, 0.640231, 0.765304, 0.0), float4(0.0, 0.0, 0.0, 1.0)))
Run Code Online (Sandbox Code Playgroud)
有没有办法转换matrix_4x4,或者有更简单的方法来获取此信息?
谢谢!
我想模拟一些块掉落,但更像是没有任何弹性或橡胶性的木块。
但我找不到像这样的设置。我已将恢复设置为 0,但当物体碰撞时仍然存在大量反弹。
我已将 contactEquationRelaxation 设置为低值,因为否则事情似乎会泄气。
我将 contactEquationStiffness 设置得很低,因为否则一切都会互相碰撞一次然后飞走。
但感觉仍然不太对劲,就像一种材料吸收了大部分能量后掉落到地板上的重击声。
而且,即使几乎停止,多个物体彼此重叠也会弯曲很多。
这是我的代码,它是反应三纤维,但仍应具有与标准大炮相同的属性。
谢谢!
<Canvas >
<Physics gravity={[0, -10, 0]}
defaultContactMaterial={
{
friction: 0.5,
restitution: 0,
contactEquationStiffness: 6000,
contactEquationRelaxation: 0.000001
}}>
<Shelf position={[0, -5, 0]} rotation={[-Math.PI / 2, 0, 0]} />
{boxes}
</Physics>
<Static />
</Canvas>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Swift中的AVCaptureDevice捕获时设置每秒10帧的帧速率.
我相信这是通过设置AVCaptureDevice的activeVideoMaxFrameDuration来实现的,但也许我这样做是错误的,并且有不同的方式.
这是我当前的代码,它运行时没有错误,但对预览或捕获的视频中的帧速率没有任何影响,它仍然显示为全动态.
var devices = AVCaptureDevice.devicesWithMediaType(mediaType);
var captureDevice: AVCaptureDevice = devices[0] as AVCaptureDevice;
captureDevice.lockForConfiguration(&error)
captureDevice.activeVideoMinFrameDuration = CMTimeMake(1,10)
captureDevice.activeVideoMaxFrameDuration = CMTimeMake(1,10)
captureDevice.unlockForConfiguration()
Run Code Online (Sandbox Code Playgroud)
我已经检查了AVCaptureDeviceFormat videoSupportedFrameRateRanges minFrameRate并且应该支持每秒10帧.
将CMTime更改为videoSupportedFrameRateRanges之外的某些内容会引发错误,因此我知道代码正在使用,它只是没有效果.
在此先感谢您的帮助
有没有办法一次性上传多个文件,而不必为每个文件重新连接?
我使用 S3 作为我的 php 应用程序的存储,它需要存储大量(一次 100 个)的大多数小(约 10k)图像文件。目前我正在遍历它们并使用以下代码为每个单独上传:
$s3->putObjectFile($uploadFile, $bucketName, ($uploadFile), S3::ACL_PUBLIC_READ)
Run Code Online (Sandbox Code Playgroud)
这需要很长时间。对于 1.5 兆文件,大约一分钟。按照其他答案中的建议关闭 SSL 会减少到大约 40 秒,但这仍然很慢。
这是我当前的代码,使用适用于 PHP 的 Amazon S3 REST 实现
$s3 = new S3($awsAccessKey, $awsSecretKey, false);
function send_to_s3($s3, $bucketName, $uploadFile)
{
$start = microtime(true);
// Check if our upload file exists
if (!file_exists($uploadFile) || !is_file($uploadFile))
exit("\nERROR: No such file: $uploadFile\n\n");
// Check for CURL
if (!extension_loaded('curl') && !@dl(PHP_SHLIB_SUFFIX == 'so' ? 'curl.so' : 'php_curl.dll'))
exit("\nERROR: CURL extension not loaded\n\n");
if ($s3->putObjectFile($uploadFile, $bucketName, ($uploadFile), …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Vision 框架获取图像中人脸的俯仰/偏航/滚动,但始终为所有值获取 0。图像应该很容易处理(主要是前瞻性肖像)。
我通过对它们使用 Amazon Rekognition 成功获得了这些值,因此图像本身不是问题。(我需要做一批大约 70,000 个,因此对它们使用 rekogniton 会变得昂贵且缓慢。)
这是请求代码:
let faceLandmarksRequest = VNDetectFaceRectanglesRequest(completionHandler: handleRectangles)
let requestHandler = VNImageRequestHandler(cgImage: cgImage!, orientation: CGImagePropertyOrientation.right ,options: [:])
do {
try requestHandler.perform([faceLandmarksRequest])
} catch {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
这是处理程序代码:
func handleRectangles(request: VNRequest, errror: Error?) {
guard let observations = request.results as? [VNFaceObservation] else {
fatalError("unexpected result type!")
}
for face in observations {
print("\(face.yaw))") // always zero
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏:)
我正在尝试将过滤器应用于 CIImage,它是从 AVCaptureSession 的像素缓冲区创建的,然后将其保存到相机胶卷。
这是我的代码
let image = CIImage(cvPixelBuffer: pixelBuffer)
let filter = CIFilter(name: "CISepiaTone")
filter?.setValue(image, forKey: kCIInputImageKey)
filter?.setValue(0.1, forKey: kCIInputIntensityKey)
let newImage = UIImage(ciImage: (filter?.outputImage)!)
print ("new image: \(newImage)")
UIImageWriteToSavedPhotosAlbum(newImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
Run Code Online (Sandbox Code Playgroud)
这不会引发任何错误,并且当 image(_:didFinishSavingWithError:contextInfo:) 被调用时它没有错误
但是图像没有出现在我的库中。非常混淆!任何帮助表示赞赏。
谢谢。
我正在制作一个简单的绘图程序,在 UIView 中绘制一些线条(下面代码中的画布)。这工作正常。
现在我希望能够像橡皮擦一样擦掉这些线条。
我不只是想在它上面绘制白色,因为画布视图后面有一个用户可以更改的背景图像,因此将背景图像绘制到视图中也不起作用,因为他们可以在绘制过程中进行更改。
如何在所有现有路径上绘制一条像橡皮擦一样的路径?
这是我当前的绘图代码
func drawLine(fromPoint start: CGPoint, toPoint end:CGPoint, color: UIColor, width: CGFloat, canvas: UIView)
{
let line = CAShapeLayer()
let linePath = UIBezierPath()
linePath.move(to: start)
linePath.addLine(to: end)
line.path = linePath.cgPath
line.strokeColor = color.cgColor
line.lineWidth = width
line.lineJoin = kCALineJoinRound
canvas.layer.addSublayer(line)
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我试图将一个UIViewController添加到另一个UIViewController,然后在其上有一个UIGestureRecogniser。这是一个坏主意吗?我似乎根本没有接收到子ViewController的触摸事件。我可以启用它们吗,或者这只是愚蠢的做法?
码:
在主ViewController上
let slider = SliderViewController()
slider.view.frame = CGRect(x: 0, y: 100, width: self.view.frame.size.width, height: self.view.frame.size.height/4)
self.view.addSubview(slider.view)
slider.view.isUserInteractionEnabled = true // doesnt seem to make any difference
Run Code Online (Sandbox Code Playgroud)
并在SliderViewController上
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touches began") // never gets called
}
Run Code Online (Sandbox Code Playgroud)
如果我提出
self.present(slider, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
而不是添加为子视图,它可以正常工作。
我正在使用新的CallKit框架来使用系统UI接收传入的VOIP呼叫。
是否可以在系统调用屏幕上添加自定义信息,例如照片或其他文字/新的UIView?
还是可以建立自己的呼叫屏幕并以相同方式显示?
谢谢