Tag: avfoundation

打开相机卷在一张确切的照片

我正在开发一个相机应用程序,我想把一些已经存在于股票应用程序中的function。 我的问题是复制在左下angular(肖像模式),用户刚刚拍摄的照片的微缩略图显示的小方块; 然后,当用户点击它时,照片应用程序应打开,保存在相机胶卷上的最后一张照片。 我可以使用ALAssetsLibrary加载相机胶卷中最新照片的缩略图 – 我可以使用[UIImage imageWithCGImage:[result thumbnail]]访问它 – 但即使我有它的ALAsset URL,我也无法打开照片应用程序。 我正在努力做到这一点: [[UIApplication sharedApplication] openURL:result.defaultRepresentation.url]; 但没有任何反应。 我可以在内部显示它在我的应用程序,与一个额外的UIView,但我认为会更简单,…更聪明的使用官方照片应用程序! 谁能帮我? 先谢谢你!

录制AVFoundation与自定义尺寸的video?

我正在使用AVFoundation录制MOV文件,但我很难find如何改变video的尺寸。 我将videoGravity属性设置为AVLayerVideoGravityResizeAspectFill ,显示预览图层的UIView具有自定义尺寸(不同于屏幕的纵横比)。 录制工作正常,但录制的video的尺寸与屏幕的高宽比相同。 我怎样才能loggingUIView或预览层的纵横比?

didOutputSampleBuffer委托没有被调用

我的代码中didOutputSampleBuffer函数没有被调用。 我不知道为什么发生。 代码如下: import UIKit import AVFoundation import Accelerate class ViewController: UIViewController { var captureSession: AVCaptureSession? var dataOutput: AVCaptureVideoDataOutput? var customPreviewLayer: AVCaptureVideoPreviewLayer? @IBOutlet weak var camView: UIView! override func viewWillAppear(animated: Bool) { super.viewDidAppear(animated) captureSession?.startRunning() //setupCameraSession() } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //captureSession?.startRunning() […]

iOS AVFoundationvideo捕捉方向选项

我有一个应用程序,我想只有前置摄像头的video捕捉。 那没问题。 但是我希望video捕捉始终处于风景中,即使手机是以肖像方式进行拍摄的。 我有一个基于Apple发布的AVCamDemo代码的工作实现。 从这个技术说明中的信息借用,我可以指定方向。 只有一个窍门:当video框架正确定向时,内容仍然显示为以纵向拍摄: 我想知道如果我只是硬件的物理约束:是图像传感器只是这样定向? 上面引用的技术说明提出了这个问题: 重要提示:在静止图像输出和animation文件输出上设置方向不会物理旋转缓冲区。 对于电影文件输出,它将轨道变换(matrix)应用于video轨道,以便在回放时旋转电影,​​并为静止图像输出插入exif元数据,以供观看者在稍后观看时用于正确旋转图像。 但是,我的播放video则表明否则。 任何见解或build议,将不胜感激! 谢谢,亚伦。

状态为AVKeyValueStatusFailed时,重新加载AVAsset中的密钥

我正在做以下事情: 使用给定的URL创build一个新的AVAsset 。 该URL指向远程Web服务器上的video。 尝试通过调用loadValuesAsynchronouslyForKeys:completionHandler:来加载tracks属性loadValuesAsynchronouslyForKeys:completionHandler: 初始请求失败,因为没有互联网连接 我注意到通过调用statusOfValueForKey:error:失败的请求statusOfValueForKey:error: 然后等待连接重新出现(使用一些可达性代码)。 一旦这样做,我再次调用loadValuesAsynchronouslyForKeys:completionHandler: 这是问题出现的地方。 我会想象, AVAsset继续并尝试重新加载的轨道属性,因为它以前失败。 但是,这似乎并没有发生。 statusOfValueForKey:error:仍然会返回AVKeyValueStatusFailed ,尽pipe可用的互联网连接可用且video可播放。 有没有办法重置这个给定的属性的状态,并尝试另一个负载? 有没有其他的方法来解决这个问题?

Swift AVCaptureSessionclosures打开button错误:当前不支持多个audio/videoAVCaptureInputs

我有一个工作条码扫描器的代码。 当我点击openCamerabutton时,第一次都是好的。 当我点击closeCamerabutton,好,但如果我再次点击openCamerabutton给出一个致命的错误。 代码和错误如下。 事实上,是否可以用一个button切换摄像机视图? // Barcode Camera Properties let captureSession = AVCaptureSession() var captureDevice:AVCaptureDevice? var captureLayer:AVCaptureVideoPreviewLayer? override func viewDidLoad() { super.viewDidLoad() self.cameraView.alpha = 0 } @IBAction func closeCamera(sender: AnyObject) { self.captureLayer!.hidden = true self.captureSession.stopRunning() } @IBAction func openCamera(sender: AnyObject) { self.cameraView.alpha = 1 self.cameraView.animate() setupCaptureSession() } //MARK: Session Startup private func setupCaptureSession(){ self.captureDevice = […]

无法观察AVPlayerItem的@“状态”键

我试图从URL播放stream,但这是一个问题。 ObserveValueForKeyPath:ofObject:change:context只是不执行。 据我所知,这不取决于streamURL,不pipe它是否正确。 它必须将状态从AVPlayerItemStatusUnknown更改为AVPlayerItemStatusReadyToPlay或AVPlayerItemStatusFailed。 但是,尽pipe如此,我在浏览器中检查了该url,并且工作正常。 所以有什么问题? 我观看了WWDC的video,它说,如果你有audiostream,在AVAsset 之前使用AVPLayerItem。 这是我的代码: – (void) prepare { NSURL * trackStreamURL = [NSURL URLWithString:streamURL]; NSLog(@"STREAM URL: %@",trackStreamURL); _playerItem = [AVPlayerItem playerItemWithURL:trackStreamURL]; [_playerItem addObserver:self forKeyPath:@"status" options:0 context:nil]; } – (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { NSLog(@"KEY PATH : %@", keyPath); NSLog(@"CHANGE : %@", change); } 提前致谢!

AVCaptureMovieFileOutput后用AVPlayer播放video

我用AVFoundation创build了类似于snapchat的自定义相机。 图片方面的作品:拍照,我显示图片。 现在我正在试着拍一个video并显示video。 我已经捕获了一个成功的video文件,经过testing并与MPMoviePlayer一起工作,但无法在AVPlayer上播放。 – (void)takeVideoAction:(id)sender { NSString *outputPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"output.mp4"]; NSFileManager *manager = [[NSFileManager alloc] init]; if ([manager fileExistsAtPath:outputPath]){ [manager removeItemAtPath:outputPath error:nil]; } [movieFileOutput startRecordingToOutputFileURL:[NSURL fileURLWithPath:outputPath] recordingDelegate:self]; } – (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error{ AVURLAsset *asset = [AVURLAsset URLAssetWithURL:outputFileURL options:nil]; [asset loadValuesAsynchronouslyForKeys:@[@"tracks"] completionHandler:^{ dispatch_async(dispatch_get_main_queue(), ^{ NSError *error = nil; if([asset […]

AVCaptureSession条码扫描

我目前正在使用AVCaptureSession和AVCaptureMetadataOutput 。 它完美的工作,但我只是想知道如何指示扫描和分析元数据对象只在AVCaptureVideoPreviewLayer的特定区域?

精确的AVMutableComposition时间

我试图用AVMutableComposition在精确的时间播放一系列声音文件。 当视图加载时,我创build了这个组合,意图是在1秒内均匀播放4个声音。 不pipe声音有多长或多短都不重要,我只想在0,0.25,0.5和0.75秒的时间点发射它们: AVMutableComposition *composition = [[AVMutableComposition alloc] init]; NSDictionary *options = @{AVURLAssetPreferPreciseDurationAndTimingKey : @YES}; for (NSInteger i = 0; i < 4; i++) { AVMutableCompositionTrack* track = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; NSURL *url = [[NSBundle mainBundle] URLForResource:[NSString stringWithFormat:@"sound_file_%i", i] withExtension:@"caf"]; AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:options]; AVAssetTrack *assetTrack = [asset tracksWithMediaType:AVMediaTypeAudio].firstObject; CMTimeRange timeRange = [assetTrack […]