Tag: avfoundation

iOS – 录制audio播放失败,OSStatus错误-43(找不到文件)

我加载视图时,按以下方式设置AVAudioRecorder实例: AVAudioSession *audioSession = [AVAudioSession sharedInstance]; audioSession.delegate = self; [audioSession setActive:YES error:nil]; [audioSession setCategory:AVAudioSessionCategoryRecord error:nil]; NSString *tempDir = NSTemporaryDirectory(); NSString *soundFilePath = [tempDir stringByAppendingPathComponent:@"sound.m4a"]; NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; NSLog(@"%@", soundFileURL); NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey, [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey, [NSNumber numberWithInt:16], AVEncoderBitRateKey, [NSNumber numberWithInt: 1], AVNumberOfChannelsKey, [NSNumber numberWithFloat:8000.0], AVSampleRateKey, [NSNumber numberWithInt:8], AVLinearPCMBitDepthKey, […]

在iOS中反转video播放

我想在AVPlayer中向后播放video。 我曾尝试将费率属性更改为-1.0,虽然它起作用,但并不顺利。 有什么方法可以顺利播放video吗?

具有多个输出的AVCaptureSession?

目前,我正在开发一个iOS应用程序,将CoreImage应用于相机Feed,以便拍摄照片和video,而且我遇到了一些麻烦。 到目前为止,我一直使用AVCaptureVideoDataOutput来获取示例缓冲区,并使用CoreImage来操作它们,然后显示一个简单的预览,并用它来捕捉照片并保存它们。 当我尝试实现video录制时,通过将SampleBuffers写入video(从AVCaptureVideoDataOutput接收video),帧速率非常低(可能是因为正在进行的其他图像相关处理)。 所以我想知道,是否有可能同时有一个AVCaptureVideoDataOutput和一个AVCaptureMoveFileOutput在同一个AVCaptureSession? 我快速地去了一下,发现当我添加额外的输出时,我的AVCaptureVideoDataOutput停止接收信息。 如果我能得到它的工作,我希望这意味着我可以简单地使用第二个输出以高帧率录制video,并在用户停止录制后对video进行后期处理。 任何帮助将不胜感激。

AVAssetExportSession导出失败,带有错误:“操作已停止,NSLocalizedFailureReason =video无法合成。

我们将字幕添加到用户录制的video中,但是AVAssetExportSession对象的导出未能确定性地失败:有时会起作用,有时却不起作用。 目前还不清楚如何重现错误。 我们注意到资产追踪似乎在出口时丢失了。 在导出之前,如预期的那样有两个轨道(一个用于audio,一个用于video)。 但是检查exportDidFinish中相同文件URL的轨道数量显示0个轨道。 所以出口过程似乎有些问题。 更新:注释exporter.videoComposition = mutableComposition修复错误,但当然没有变换应用于video。 所以问题似乎在于创buildAVMutableVideoComposition ,导致在导出期间出现问题。 有关AVMutableVideoComposition文档和教程很less,所以即使您没有解决scheme,但可以推荐超出Apple的参考资源,这将是有帮助的。 错误: 错误域= AVFoundationErrorDomain代码= -11841“操作停止”UserInfo = 0x170676e80 {NSLocalizedDescription =操作停止,NSLocalizedFailureReason =video不能组成。 码: let videoAsset = AVURLAsset(URL: fileUrl, options: nil) let mixComposition = AVMutableComposition() let videoTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID(kCMPersistentTrackID_Invalid)) let audioTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID(kCMPersistentTrackID_Invalid)) let sourceVideoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0] as! AVAssetTrack let sourceAudioTrack = videoAsset.tracksWithMediaType(AVMediaTypeAudio)[0] […]

iOS 11中的照片捕获权限问题

所以这是我的问题。 我正在尝试创build一个UIImageView和UIButton的屏幕。 当用户按下button,相机应用程序打开,你拍照,如果你在相机应用程序中按“使用照片”,你将返回到我的应用程序的屏幕,照片被放置在我前面提到的UIImageView。 到目前为止发生的事情是,当我按下“使用照片”button时,图像被正确放置在我的UIImageView中,但是应用程序崩溃,出现以下错误: 这个应用程序已经崩溃,因为它试图访问隐私敏感的数据没有使用说明。 应用程序的Info.plist必须包含一个带有string值的NSPhotoLibraryAddUsageDescription项,向用户解释应用程序如何使用此数据。 我到目前为止所做的是: 将值为“$(PRODUCT_NAME)”的“隐私 – 图片库使用说明”键设置为使用库来处理您拍摄的照片。 在Info.plist文件中(也检查了它是如何用Sourceforms编写的,根据Apple开发者文档是正确的)。 在Info.plist文件中还放置了“隐私 – 相机使用说明”键值“$(PRODUCT_NAME)使用相机”。 在“目标 – > – >信息 – >自定义iOS目标属性”下选中,并在步骤1和步骤2中提到了2个键/值对。 到目前为止,我会向您提供我的代码: import UIKit import Vision import MobileCoreServices import AVFoundation import Photos class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { var newMedia: Bool? @IBAction func captureImageButtonPressed(_ sender: Any) { //let imageName : String = "dolphin" //randomImageView.image = […]

如何在iOS中将video裁剪成圈?

我正在尝试在iOS中将已拍摄的video剪裁成圆形。 我该如何去做这件事。 我知道如何做AVCaptureSession,但我不知道作为一个AVCaptureDevice传递已经拍摄的video? 有没有办法将video剪裁成圆形。 我想叠加在另一个video的顶部,所以它也必须有一个透明的背景。 谢谢。

如何将实时相机预览添加到UIView

我碰到一个问题,我试图解决在UIView边界,有什么办法来添加相机预览到UIView? 并在UIView(button,标签等)的顶部添加其他内容? 我尝试使用AVFoundation框架,但没有足够的文档Swift。

CALayer.contents在AVMutableComposition中不能正确渲染

我有一个非常简单的方法,用一个静态背景图像来生成一个video,该静态背景图像覆盖了整个video的组成部分,以及一个位于video底部的较小的,部分透明的图像(水印风格)。 背景图像正确呈现,看起来与图像查看器中的完全相同。 然而,应该在video底部呈现的图像是倾斜/扭曲的。 源代码可以在这里下载到GitHub上。 我的代码的预期输出(所需video输出的样机): 我的代码的实际输出(从iOS模拟器部分截图): 正如您所看到的,页脚图像呈45度倾斜并呈波浪状。 以下是我目前用来生成video的代码。 我已经尝试过所有可能的contentGravity组合,但没有运气。 我见过的其他每个例子都只是将CGImageRef设置为图层的contents然后将bounds , position和anchorPoint为适当的值。 我还没有看到其他任何设置其他属性的例子。 我已经阅读了几乎所有的AVFoundation的文件,看看是否有设置,我错过了,但我还没有遇到任何明显的事情。 任何build议将不胜感激。 谢谢! 接口声明: CGSize _renderingSize; float _displayDuration; AVMutableComposition *mutableComposition; AVMutableVideoComposition *videoComposition; AVMutableCompositionTrack *mutableCompositionVideoTrack; AVAssetExportSession *exporter; ViewDidLoad设置: _renderingSize = CGSizeMake(640, 360); _displayDuration = 2.0; 渲染代码块: mutableComposition = [AVMutableComposition composition]; mutableCompositionVideoTrack = [mutableComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; videoComposition = [AVMutableVideoComposition videoComposition]; videoComposition.renderSize = _renderingSize; videoComposition.frameDuration […]

AVFoundation在预览中将图像的方向偏离90度,但在相机图像的方向上偏好

真正奇怪的事情正在发生,我试图使用AVFoundation捕捉图像,相机滚动图像似乎很好,但图像预览图像旋转了90度。 这是我用来捕捉图像的代码 AVCaptureConnection *videoConnection = nil; for (AVCaptureConnection *connection in stillImageOutput.connections) { for (AVCaptureInputPort *port in [connection inputPorts]) { if ([[port mediaType] isEqual:AVMediaTypeVideo] ) { videoConnection = connection; break; } } if (videoConnection) { break; } } //NSLog(@"about to request a capture from: %@", stillImageOutput); [stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) { CFDictionaryRef exifAttachments […]

如何使用AVFoundation为您的video添加不同的图像和不同的CMTime

我正在使用AVFoundation在我的电影中加水印。 这与在互联网和苹果公司正在进行的代码运行良好。 但是我不想在完整的时间显示水印,我想在同一部电影中显示不同的水印。 我有一个AVAsset: NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"MOV"]; NSURL *url = [[NSURL alloc] initFileURLWithPath: path]; avasset_camera = [AVAsset assetWithURL:url]; 一个AVMutableComposition: AVMutableComposition *mix = [AVMutableComposition composition]; 将UIImage转换为CALayer,并将其添加到另一个图层以与animationTool合并: UIImage *myImage = [UIImage imageNamed:@"watermark.png"]; CALayer *aLayer = [CALayer layer]; aLayer.contents = (id)myImage.CGImage; aLayer.frame = CGRectMake(0, 0, 568, 320); aLayer.opacity = 1.0; CGSize videoSize = [avasset_camera […]