Tag: avfoundation

Swift将audio和video文件合并为一个video

我在Swift中编写了一个程序。我想将一个video与一个audio文件合并,但是得到了这个错误。 “失败错误域= AVFoundationErrorDomain代码= -11838”停止操作“UserInfo = 0x17da4230 {NSLocalizedDescription =操作已停止,NSLocalizedFailureReason =操作不支持此媒体} 码 func mergeAudio(audioURL: NSURL, moviePathUrl: NSURL, savePathUrl: NSURL) { var composition = AVMutableComposition() let trackVideo:AVMutableCompositionTrack = composition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID()) let trackAudio:AVMutableCompositionTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID()) let option = NSDictionary(object: true, forKey: "AVURLAssetPreferPreciseDurationAndTimingKey") let sourceAsset = AVURLAsset(URL: moviePathUrl, options: option as [NSObject : AnyObject]) let audioAsset = […]

AVAudioRecorder averagePowerForChannel总是返回-120.0

我正在尝试使用AVAudioRecorder的averagePowerForChannel方法来监视iPad / iPhone应用程序的麦克风input级别。 我有一个callback轮询平均水平 – 在iPhone上工作正常,并返回合理的水平,但由于某种原因在iPad上,它总是返回-120.0。 这里是我的一些设置代码: – (void) setupMic { if (micInput) { [micInput release]; micInput = nil; } NSURL *newURL = [[NSURL alloc] initFileURLWithPath:@"/dev/null"]; NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init]; [recordSettings setObject:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey: AVFormatIDKey]; [recordSettings setObject:[NSNumber numberWithFloat:22050.0] forKey: AVSampleRateKey]; // [recordSettings setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey]; [recordSettings setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey]; [recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; […]

animationAVPlayerLayer videoGravity属性

我试图在video播放中复制苹果的行为,允许用户伸展video图像来填充边界。 @interface FHVideoPlayerView : UIView @end @interface FHVideoPlayerView + (Class)layerClass { return [AVPlayerLayer class]; } – (void)setAspectMode:(FHVideoPlayerAspectMode)aspectMode animated:(BOOL)animated { FHVideoPlayerAspectMode current = [self aspectMode]; FHVideoPlayerAspectMode final = aspectMode; NSString *fromValue; NSString *toValue; AVPlayerLayer *layer = (AVPlayerLayer *)[self layer]; switch (current) { case FHVideoPlayerAspectFill: fromValue = AVLayerVideoGravityResizeAspectFill; break; case FHVideoPlayerAspectFit: fromValue = AVLayerVideoGravityResizeAspect; break; default: break; […]

AVAssetWriterinputH.264直通到QuickTime(.mov) – 传入SPS / PPS来创buildavcCprimefaces?

我有一个由types1(P帧),5(I帧),7(SPS)和8(PPS)组成的H.264 / AVC NALstream。 我想把它们写入一个.mov文件而不用重新编码。 我试图使用AVAssetWriter来做到这一点。 AVAssetWriterInput的文档状态: 对outputSettings传递nil指示input通过附加采样,在写入输出文件之前不做任何处理。 例如,如果您正在追加已经处于所需压缩格式的缓冲区,这非常有用。 但是,只有在写入QuickTime影片文件(即AVAssetWriter用AVFileTypeQuickTimeMovie初始化)时才支持直通。 对于其他文件types,您必须指定非零输出设置。 我试图从这些NAL中创buildCMSampleBuffers并将它们附加到资产编写器input,但是我无法以产生格式正确的.mov文件的方式input数据,而且我无法在任何地方find任何线索如何做到这一点。 到目前为止,最好的结果是以附件B字节stream格式(以7 8 5 1 1 1 ….重复的顺序)传递NAL,并在VLC中播放结果。 因此,我知道NAL包含有效的数据,但由于.mov文件没有avcCprimefaces,mdatprimefaces填充了附件B字节stream,所以QuickTime不会播放video。 现在,我试图传入4个字节(由lengthSizeMinusOne字段指定)长度字段而不是附件B分隔符的lengthSizeMinusOne ,这就是应该如何将它们打包到mdatprimefaces中,直到我知道。 我不知道如何让资产编写者写一个avcCprimefaces。 我追加的每个样本都被推入mdatprimefaces。 有谁知道我可以传递原始的H.264数据到AVAssetWriterInputconfiguration为通过(nil outputSettings)并让它生成一个正确形成的QuickTime文件?

检测具有圆angular的卡的边缘

嗨,目前我正在一个OCR阅读应用程序,我已经成功地能够通过使用AVFoundation框架捕获卡图像。 对于下一步,我需要找出卡的边缘,以便我可以从主捕获的图像裁剪卡图像,稍后我可以将其发送到OCR引擎进行处理。 现在的主要问题是find卡的边缘,我正在使用下面的代码(取自另一个开源项目),它使用OpenCV为此目的。它是工作正常,如果卡是纯粹的矩形卡或纸。 但是,当我使用具有圆angular的卡(例如驾驶执照)时,它未能被发现。 另外我没有太多的OpenCV的专业知识,任何人都可以帮助我解决这个问题? – (void)detectEdges { cv::Mat original = [MAOpenCV cvMatFromUIImage:_adjustedImage]; CGSize targetSize = _sourceImageView.contentSize; cv::resize(original, original, cvSize(targetSize.width, targetSize.height)); cv::vector<cv::vector<cv::Point>>squares; cv::vector<cv::Point> largest_square; find_squares(original, squares); find_largest_square(squares, largest_square); if (largest_square.size() == 4) { // Manually sorting points, needs major improvement. Sorry. NSMutableArray *points = [NSMutableArray array]; NSMutableDictionary *sortedPoints = [NSMutableDictionary dictionary]; for (int i = […]

大多数内存有效的方式来保存在iPhone上的照片到磁盘?

从Instruments分析我了解到,我将图像保存到磁盘的方式导致内存峰值~60MB 。 这导致应用程序发出low memory warnings ,这(不一致)导致运行iOS7的iPhone4S上的iOS7 。 我需要最有效的方法将图像保存到磁盘。 我目前正在使用这个代码 + (void)saveImage:(UIImage *)image withName:(NSString *)name { NSData *data = UIImageJPEGRepresentation(image, 1.0); DLog(@"*** SIZE *** : Saving file of size %lu", (unsigned long)[data length]); NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:name]; [fileManager createFileAtPath:fullPath […]

ios AVFoundation点击重点

我正在尝试创build一个相机应用程序,它会像默认的相机应用程序一样或多或less。 现在不适合我的东西,是重点。 我希望照相机能够专注于照相机的操作,就像真正的照相机应用一样。 这是我的viewDidLoad – (void)viewDidLoad { [super viewDidLoad]; // Session _session = [[AVCaptureSession alloc] init]; _session.sessionPreset = AVCaptureSessionPresetPhoto; // Input _videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; _videoInput = [AVCaptureDeviceInput deviceInputWithDevice:_videoDevice error:nil]; // Output _frameOutput = [[AVCaptureVideoDataOutput alloc] init]; _frameOutput.videoSettings = [NSDictionary dictionaryWithObject:AVVideoCodecJPEG forKey:AVVideoCodecKey]; [_frameOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()]; [_session addInput:_videoInput]; [_session addOutput:_frameOutput]; [_session startRunning]; }; 这里的方法,应该让我的相机集中点击东西。 -(void)touchesBegan:(NSSet *)touches […]

在AVFoundation中捕捉缩放预览视图

我正在使用AVFoundation相机中的缩放function,我已经通过缩放具有AVCaptureVideoPreviewLayer的视图来实现缩放。 现在我想捕捉缩放的图像。 这里是我的代码添加AVFoundationVideoPreviewLayer来查看: // create a uiview subclass for showing the camera feed UIView *previewView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 430)]; [[self view] addSubview:previewView]; CGRect layerRect = CGRectMake(0, 0, 320, 430); [[self avCaptureVideoPreviewLayer] setBounds:layerRect]; [[self previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect), CGRectGetMidY(layerRect))]; // add the video previewview layer to the preview view [[previewView layer] addSublayer:[self avCaptureVideoPreviewLayer]]; 缩放预览视图的代码 // […]

如何将使用AVFoundation拍摄的照片保存到相册?

AVFoundation对那些想要弄脏手的人来说非常棒,但是仍然有很多基本的东西不太容易想像如何将从设备拍摄的照片保存到相册 有任何想法吗?

AVFoundation点击以聚焦反馈矩形

我正在开发一个iphone应用程序,我直接使用AVFoundation通过相机捕捉video。 我已经实现了一个function,使用户可以tap to focusfunction。 – (void) focus:(CGPoint) aPoint; { #if HAS_AVFF Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice"); if (captureDeviceClass != nil) { AVCaptureDevice *device = [captureDeviceClass defaultDeviceWithMediaType:AVMediaTypeVideo]; if([device isFocusPointOfInterestSupported] && [device isFocusModeSupported:AVCaptureFocusModeAutoFocus]) { CGRect screenRect = [[UIScreen mainScreen] bounds]; double screenWidth = screenRect.size.width; double screenHeight = screenRect.size.height; double focus_x = aPoint.x/screenWidth; double focus_y = aPoint.y/screenHeight; if([device lockForConfiguration:nil]) […]