UITapGestureRecognizer,用于检测我的屏幕上有哪个UIView被点过。
我的应用程序导入用户通过系统文件选择器进行选择的视频,该视频以AVAsset>: 出现. @IBAction func handleImportVideoButton(_ sender: Any) { let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: [.movie], asCopy: true) documentPicker.delegate = self present(documentPicker, animated: true) } // UIDocumentPickerDelegate callback. func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { guard let url = url
10 2023-06-03
编程技术问答社区
UITapGestureRecognizer,用于检测我的屏幕上有哪个UIView被点过。
i具有以下音频压缩设置,这些设置失败了AvassetWriter(mov container,HEVC codec,kAudioFormatMPEG4AAC格式ID): ["AVSampleRateKey": 48000, "AVFormatIDKey": 1633772320, "AVNumberOfChannelsKey": 1, "AVEncoderBitRatePerChannelKey": 128000, "AVChannelLayoutKey": ] 想了解什么问题?我无法在我的末端重现它(仅在用户的设备上以特定麦克风重现). 这是失败的代码行: if _assetWriter?.canApply(outputSettings: audioSettings!, forMediaType: AVMediaTy
8 2023-06-03
编程技术问答社区
远程mp3文件在swift ios中播放需要很多时间
我有麻烦.我想在我的应用程序中播放远程mp3文件.但是MP3文件需要大量时间(大约5-6分钟)进行播放.为什么 ? 有人可以建议我该怎么办? import UIKit import AVFoundation class TestViewController: UIViewController, AVAudioPlayerDelegate { var player:AVAudioPlayer = AVAudioPlayer() override func viewDidLoad() { super.viewDidLoad() } @IBAction func play(sender: AnyObject) { let url = "http://www.example.com/song.mp3" let fileURL = NSURL(string: url.stringByAddingPercentEncodingWithA
10 2023-06-03
编程技术问答社区
AVAssetResourceLoader(和AVAssetResourceLoaderDelegate)能否用于限制流的选择以提高质量?
iOS(似乎尤其是iOS 15),并不总是最好的是使用具有多个播放质量选项的HLS M3U8播放列表,并选择最佳的选择.例如,即使有了良好的互联网连接,iOS也通常会选择可用选项的较低品质之一,并需要一段时间才能过渡到更高质量的选择.用户对此并不满意,并且可以理解,因为我可以将直接链接粘贴到播放列表中(无音频)中的高质量视频流到Safari中,并且在我手动进行操作时会立即加载,而速度较慢的Avplayer实现. 是否可以使用AVAssetResourceLoader拦截HLS播放列表并剥离一些质量较低的选项,从而防止iOS更多地选择较低质量的选项? 我在苹果开发人员论坛上注意到这个问题雇员指示它可能是但是,可能与一个示例可能是以下HLS清单: #EXTM3U #EXT-X-VERSION:4 #EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=308000,AVERAGE-BANDWIDTH=279000,RESOLUTIO
10 2023-06-02
编程技术问答社区
如何在AVCaptureVideoPreviewLayer上添加覆盖层?
我正在使用Swift构建一个需要QR代码扫描仪功能的iOS应用程序. 我已经使用Avoundation实现了QR码扫描仪,现在我的捕获屏幕看起来与视频录制屏幕相同,即AVCaptureVideoPreviewLayer显示了相机正在捕获的内容. ,但由于它是QR代码扫描仪而不是常规图像或视频捕获,所以我希望我的VideoPreviewLayer看起来像这样: 我知道这可以通过在一个VideoPreviewLayer的顶部添加另一个VideoPreviewLayer来实现. 我的问题是: 如何仅将边界添加到上部(或较小)预览层的边缘? 如何更改背景中VideoPreviewLayer的亮度级别? 如何忽略背景层捕获的媒体? 解决方案 您不应该使用其他videopreviewlayer.取而代 在此 repo 中,请查看源代码. 要将捕获的视频限制到蒙版区域,您必须设置AVCaptureMetadataOutput的rectOfInt
6 2023-06-02
编程技术问答社区
在Swift中无法生成带缓存的视频缩略图
一直在努力使它起作用.我正在生成视频缩略图,但在收集视图中确实重载.我想缓存它们,找不到解决方案. 这是我正在使用的代码: func previewImageFromVideo(url:NSURL) -> UIImage? { let asset = AVAsset(url: url as URL) let imageGenerator = AVAssetImageGenerator(asset:asset) imageGenerator.appliesPreferredTrackTransform = true imageGenerator.maximumSize = CGSize(width: 250, height: 120) var time = asset.duration time.value = min(time.value,2) do { let imageRef = try im
14 2023-06-02
编程技术问答社区
AVCaptureOutput即使开着闪光灯也能拍出暗色照片
我已经提出了Avfoundation和Imageio的实现,以照顾我的应用中拍摄的照片.但是,我有一个问题.即使闪光灯熄灭,我拍摄的图像也总是黑暗的.这是我使用的代码: [[self currentCaptureOutput] captureStillImageAsynchronouslyFromConnection:[[self currentCaptureOutput].connections lastObject] completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) { [[[blockSelf currentPreviewLayer] session] stopRunning];
6 2023-06-02
编程技术问答社区
如何使用AVFoundation翻转视频
我录制了一个带有前置摄像头的视频,并且输出镜像... 我已经尝试使用AVMutablecomposition和layerinstructions翻转视频,但没有运气. 谷歌搜索和搜索堆栈溢出一直没有结果 解决方案 没有任何迹象表明您用来录制视频的内容,假设AVCaptureSession + AVCaptureVideoDataOutput lazy var videoFileOutput: AVCaptureVideoDataOutput = AVCaptureVideoDataOutput() let v = videoFileOutput.connectionWithMediaType(AVMediaTypeVideo) v.videoOrientation = .Portrait v.videoMirrored = true 其他解决方案 您可以使用-[AVMutableVideoCompositionLayerInstruction setTrans
0 2023-06-02
编程技术问答社区
如何改变AVPlayer的视频方向?
我想使用Avplayer旋转视频的重播.有没有办法顺时针旋转90度? 这是一些代码: self.player = AVPlayer(URL: NSURL(fileURLWithPath: dataPath)) playerLayer = AVPlayerLayer.init(player: self.player) playerLayer.frame = view.bounds playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill view.layer.addSublayer(playerLayer) player.play() 更新 这个有效: self.player = AVPlayer(URL: NSURL(fileURLWithPath: dataPath)) playerLayer = AVPlayerLayer.init(player: self.player)
0 2023-06-02
编程技术问答社区
CGAffineTransform - 如何在屏幕中心对齐视频
我能够将16:9的景观视频的中间居中,裁剪视频,然后创建一个9:16视频的肖像版本,类似于Apple 唯一的问题是结果肖像视频不在屏幕中间(下图). 如何在屏幕中央获得生成的肖像视频? func createExportSession(for videoURL: URL) { let asset = AVURLAsset(url: videoURL) let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)! exporter.videoComposition = turnHorizontalVideoToPortraitVideo(asset: asset) exporter.outputURL = // ... exporter.outputFileType = AVFileType.m
8 2023-06-02
编程技术问答社区
AVExportSession | 在视频上添加带有GIF和绘图的UIView
Objective :我有一个视频,其中有一个uiview,其中包含动画gif(不是本地存储的,而是使用giphy api),文本或手绘.我想与单个视频中的图像一起导出. What I did : 我创建了一个动画的Uiview.然后将其转换为Calayer,并使用AvMutableVideocompotion添加到视频中. Problem :带有动画的Uiview正在转换为图像而不是视频.我该如何解决这个问题. 以下是我的导出课程的程序.任何指针都会非常有帮助. func convertVideoAndSaveTophotoLibrary(videoURL: URL) { let file = FileManager.shared.getDocumentDirectory(path: currentFilename) FileManager.shared.clearPreviousFiles(withPath: file.path) //
6 2023-06-02
编程技术问答社区
如何用AVFoundation读取二进制QR码?
是否可以使用AVFoundation? 读取二进制编码QR代码 i可以获得AVMetadataMachineReadableCodeObject .type AVMetadataObjectTypeQRCode的对象,但是这只有一个stringValue属性,因为QR码中包含的数据无法转换为一个字符串友好表示. 我应该使用ZXing吗? 谢谢. 解决方案 您的AVMetadataMachineReadableCodeObject确实存在原始数据,但是它无法通过公共Getter获得. 但是,您可以使用KVO提取它,但是Apple可能会拒绝您的应用程序.此外,未来的iOS版本可能会更改其私有API,并且您的代码可能无效(由于硬编码的私钥). swift: readableCodeObject.valueForKeyPath("_internal.basicDescriptor")!["BarcodeRawData"] Objective-C
10 2023-06-02
编程技术问答社区
iPhone能以多快的速度在同一时间拍摄两张照片?
我想编写一个iPhone应用程序,该应用程序可以在很短的时间内连续拍摄2张照片,我想知道它是否可以实现. May May在市场上似乎仅将低分辨率仍然从视频流中出现,所以我想知道快速捕获完整分辨率照片是否可行. 解决方案 这取决于您的时间和照片分辨率要求是什么. 拍照的时间取决于硬件和所需的分辨率. 使用API​​在Avfoundation中进行异步拍摄照片.特别是方法captureStillImageAsynchronouslyFromConnection:. 请参阅在这里有关详细信息 我已经测量了具有不同配置的iPhone 4s上2张照片之间的最短时间: AVCaptureSessionPresetMedium,后摄像头:大约0.043S AVCaptureSessionPresetPhoto,后摄像头(8MP):大约0.3s AVCaptureSessionPresetPhoto,前置摄像头(640x480):大约0.027S
2 2023-05-25
编程技术问答社区
如何在转换为视频时将图像制作成动画
我想在将图像转换为视频的同时使图像顺利进行动画.放置搜索,因此我无法理解如何实现它.我尝试更改旋转角度(CGAFFINETRANSFORMTROTATION),翻译和缩放,但没有找到平滑动画的方法.这是我如何将一系列照片转换为视频的方式: - (void)createVideoWithArrayImages:(NSMutableArray*)images size:(CGSize)size time:(float)time output:(NSURL*)output { //getting a random path NSError *error; AVAssetWriter *videoWriter = [[AVAssetWriter alloc] initWithURL:output fileType:AVFileTypeMPEG4 error: &error]; NSDictionary *videoSettings = [NSDictio
0 2023-05-25
编程技术问答社区
在一张确切的照片上打开相机卷
我正在开发一个相机应用程序,我想在库存应用程序中放置一些已经存在的功能.我的问题是在左下角(在肖像模式下)复制小正方形,其中显示了用户刚刚拍摄的照片的微图像;然后,当用户点击它时,照片应用程序应在保存在相机卷中的最后一张照片上打开. 我可以加载带有AbassetSlebrary的相机卷中最新照片的缩略图 - 我已经使用[UIImage imageWithCGImage:[result thumbnail]]访问它 - 但是即使我有Alsasset URL,我也无法打开照片应用程序.我正在尝试使用: [[UIApplication sharedApplication] openURL:result.defaultRepresentation.url]; 但什么也没发生. 我可以在我的应用中内部显示它,并带有附加的Uiview,但我认为使用官方照片应用程序会更简单,更聪明! 有人可以帮我吗?预先感谢您! 解决方案 您可能需要使用UIImagePickerC
2 2023-05-25
编程技术问答社区
如何保存UIImage到文档目录?
我正在尝试保存录制的视频文件路径,又是从视频到文档目录的缩略图.然后,使用文件路径将这两个值设置为对象,以便我可以使用对象填充集合视图.使用我当前拥有的代码(下面),在录制视频后,视频路径被保存到文档目录,视频路径和缩略图设置为我的Post对象,并且缩略图在我的收集视图中正确显示.到目前为止一切都很好. 但是,由于它在目录中,因此只有视频路径一直持续到重新发布之间,而缩略图则不存在.我也想保存在那里的缩略图,但我不知道该怎么做,因为看来您只能将URL写入目录. 这是我第一次使用文档目录,因此将不胜感激!如何将缩略图(uiimage)写入我的文档目录以及它的视频? 到目前为止,这是我的代码: func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { let mediaType = in
0 2023-05-25
编程技术问答社区
iOS 11中的照片采集权限问题
所以这是我的问题.我正在尝试创建一个uiimageView和一个Uibutton的屏幕.当用户按下按钮时,相机应用程序打开,您会拍照,如果按照相机应用中的"使用照片",则将您返回我的应用程序的屏幕,并将照片放置在我之前提到的UIImageView中. 到目前为止发生的事情是,当我按"使用照片"按钮时,该图像正确放置在我的UIImageView中,但是该应用程序会以以下错误崩溃: 此应用程序崩溃了,因为它试图在没有使用说明的情况下访问对隐私敏感的数据.该应用程序的信息符必须包含一个NSphotolibraryAdduSagedEscription键,并带有字符串值向用户解释应用程序如何使用此数据. 我到目前为止所做的是: 将键"隐私 - 照片库用法描述"带有值" $(product_name)使用库来处理您捕获的照片".在info.plist文件中(还检查了如何以源形式编写,并且根据Apple开发人员文档是正确的). 还将键"隐私 - 摄像机用法描述"带有值" $
0 2023-05-25
编程技术问答社区
`avCaptureVideOdataOutput`消耗的内存是``avcapturemoviefileOutputpu''的三倍
问题 我正在使用Avoundation来实现能够在运行特殊AI处理时录制视频的相机. 具有AVCaptureMovieFileOutput(用于视频录制)和 a AVCaptureVideoDataOutput(用于处理AI)同时运行的时间(请参阅可以同时使用avcapturevideodataotput和avcapturemoviefileotputputputput?),所以我决定使用单个AVCaptureVideoDataOutput可以在运行AI时录制视频的单个AVCaptureVideoDataOutput在相同的captureOutput(...)回调中处理. 令我惊讶的是,这样做大幅度增加了RAM的用法从 58 MB 到 187 Mb (!!!),而CPU来自 3-5%到 7-12% ,而闲置.在实际录制的同时,RAM上升了更多( 260 MB !). 我想知道我在这里做错了什么,因为我禁用了所有AI处理,并且只是比较了AVCaptureMovieF
2 2023-05-24
编程技术问答社区
如何将代码objective c转换为Swift以保存图像?
我在其他帖子中看到了此代码,以保存图片: // Create path. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image.png"]; // Save image. [UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES]; and我正在尝试使用av​​fundatioin转换为swift,但我不知道在此处键入nsdocumentDirectory和nsuserdomainmask 如何转换它? 谢谢! 解决方案 如下: let nsDocume
0 2023-05-21
编程技术问答社区
iOS AVFoundation-在视频上显示时间并输出
我想显示视频上的显示覆盖层,并导出该视频,包括此显示.我研究了Avoundation框架,AvCompositions,Avassets等.但是我仍然没有想法来实现这一目标.有一个名为avsynchronizedlayer的类,可以让您对视频同步进行动画,但是我不想动画,我想将时间显示到视频的每个帧中.有建议吗? 问候 解决方案 类似的东西... (NB:从一个更大的项目中剔除,所以我可能会偶然地包括一些不必要的作品). 您需要抓住时钟/动画的calayer,然后将其设置为var myclocklayer(用和imation工具向下使用1/3). 这也假设您的传入视频只有两个曲目 - 音频和视频.如果您有更多信息,则需要更仔细地将" Astrackid:2"的轨道ID设置. AVURLAsset* url = [AVURLAsset URLAssetWithURL:incomingVideo options:nil]; AVMutableCompos
0 2023-05-15
编程技术问答社区