Tag: avfoundation

如何在使用图像创buildvideo的同时在图像更改上添加animation

我有一个图像arrays,我想通过连续播放这些图像来创buildvideo。我想在图像变化时添加不同types的animation。 build议我使用Cocoa框架在Objective-C中实现此function的一些方法或任何解决scheme。 这里是制作图像video的工作代码,但请build议我们如何在制作video的同时制作animation图像: -(void)createVideoFromImages:(NSString *) path withSize:(CGSize) size { NSError *error = nil; AVAssetWriter *videoWriter = [[AVAssetWriter alloc] initWithURL: [NSURL fileURLWithPath:path] fileType:AVFileTypeMPEG4 error:&error]; NSParameterAssert(videoWriter); NSDictionary *videoSettings = [NSDictionary dictionaryWithObjectsAndKeys: AVVideoCodecH264, AVVideoCodecKey, [NSNumber numberWithInt:size.width], AVVideoWidthKey, [NSNumber numberWithInt:size.height], AVVideoHeightKey, nil]; AVAssetWriterInput* videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings]; AVAssetWriterInputPixelBufferAdaptor *adaptor = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:videoWriterInput sourcePixelBufferAttributes:nil]; NSParameterAssert(videoWriterInput); NSParameterAssert([videoWriter canAddInput:videoWriterInput]); videoWriterInput.expectsMediaDataInRealTime = […]

如何在iOS上的ProRes编解码器中录制video?

我想从设备的后置摄像头直接将video捕捉到ProRes编解码器,现在.proRes422和.proRes4444在iOS 11中可用作AVVideoCodecType选项。 但是我收到一个错误,logging是: 根据当前的configuration不支持 在iPhone X和第二代iPad Pro上,尝试使用以下代码捕捉video时: movieFileOutput.setOutputSettings([AVVideoCodecKey: AVVideoCodecType.proRes422], for: movieFileOutputConnection!) 如果这种方法是错误的,捕获的video可以通过AVAssetWriter使用AVCaptureVideoDataOutput进行编码吗?

我如何使用AVAssetWriter?

我想采取一些video帧,并将其编码成一个video。 看起来,这正是AVAssetWriter意思,但无论我如何眼球的文档和谷歌我找不到任何方式来实际使用它。 从文档,它看起来像我需要一个input( AVAssetWriterInput )来提供作家。 精细。 但AVAssetWriterInput类是抽象的,我知道4.1中唯一的子类是AVAssetWriterInputPixelBufferAdaptor ,它的初始化程序需要AVAssetWriterInput …? 我在这里错过了很明显的东西吗

CALayer – 放置在storyboard UIButton下面的子图层?

我有几个UIButtons在我的故事板中有一个视图控制器。 其中一个激活一个显示在子图层中的AVFoundation相机预览图层: captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; captureVideoPreviewLayer.frame = self.view.bounds; [self.view.layer addSublayer:captureVideoPreviewLayer]; 这个工作正常,除了预览层被渲染在我的button之上,所以即使button仍然是可点击的,它们不能被用户看到。 有一个简单的方法来放置button下面的子图层? 或者一个简单的方法来提升图层中的button? 非常感谢!

在Swift中使用实时filter录制video

我是新来的迅速,并试图build立一个相机应用程序,可以应用实时filter,并保存与应用的filter。 到目前为止,我可以预览实时应用的filter,但是当我保存video全黑。 import UIKit import AVFoundation import AssetsLibrary import CoreMedia import Photos class ViewController: UIViewController , AVCaptureVideoDataOutputSampleBufferDelegate { var captureSession: AVCaptureSession! @IBOutlet weak var previewView: UIView! @IBOutlet weak var recordButtton: UIButton! @IBOutlet weak var imageView: UIImageView! var assetWriter: AVAssetWriter? var assetWriterPixelBufferInput: AVAssetWriterInputPixelBufferAdaptor? var isWriting = false var currentSampleTime: CMTime? var currentVideoDimensions: CMVideoDimensions? override func viewDidLoad() […]

从videoAVFoundation中提取audio

func extractAudioFromVideo(videoUrl:NSURL, audioPath:String){ //2 var asset = AVURLAsset(URL: videoUrl, options: nil) asset.loadValuesAsynchronouslyForKeys(NSArray(object: "tracks") as [AnyObject], completionHandler: { () -> Void in var audioTrack = asset.tracksWithMediaType(AVMediaTypeAudio)[0] as! AVAssetTrack var audioComposition = AVMutableComposition() var audioCompositionTrack:AVMutableCompositionTrack! audioCompositionTrack = audioComposition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID()) audioCompositionTrack.insertTimeRange(audioTrack.timeRange, ofTrack: audioTrack, atTime: CMTimeMake(0, 1), error: nil) var exportSession = AVAssetExportSession(asset: audioComposition, presetName: AVAssetExportPresetAppleM4A) var toFileUrl […]

在IOS上使用AVComposition混合两个audio文件

我正在尝试混合两个audio文件(将一个audio文件放在另一个上面 – 不是拼接在一起),但是我正在努力学习IOS上的AVFoundation。 我在这里遵循这个答案: 如何使用AVMutableCompositionTrack合并audio和video 这就是我所拥有的: //NSURL *audioFilePath = [NSURL fileURLWithPath:@"var/mobile/Applications/822732B6-67B9-485F-BA44-FAACAB34C4FD/Documents/Coisir Cheoil10_09_2014_1429.m4a"]; NSURL *audioUrl = [NSURL fileURLWithPath:@"var/mobile/Applications/822732B6-67B9-485F-BA44-FAACAB34C4FD/Documents/Robot R-3-311_09_2014_2252.m4a"]; // need to fix link to backing Track NSURL *backingTrackURL = [NSURL fileURLWithPath:@"var/mobile/Applications/822732B6-67B9-485F-BA44-FAACAB34C4FD/Documents/Robot R-3-316_09_2014_1559.m4a"];// need ot fix the link to this AVURLAsset* backingTrack = [[AVURLAsset alloc] initWithURL:audioUrl options:nil]; AVURLAsset* voiceTrack = [[AVURLAsset alloc] initWithURL:backingTrackURL options:nil]; AVMutableComposition* mixComposition […]

使用AVAssetReader按时间值获取特定的帧

我已经检查了这个http://www.7twenty7.com/blog/2010/11/video-processing-with-av-foundation来逐帧获取video。 但我真正的要求是在特定的时间得到一个框架。 我知道应该可以通过AVAssetReader ,不知道是否有任何直接的方法在AVAssetReader 。 请给我任何指导,如何在特定时间得到框架。 我检查了AVAssetImageGenerator但这不是我真正想要的。 最后我find了答案,你必须使用timeRange属性。 这是唯一的方法。

具有多个方向的AVCaptureSession问题

我正试图实施一个条码扫描器。 我有一个从AVCaptureDevice中获取video的AVCaptureSession。 我想支持所有的方向。 用下面的代码,当我运行应用程序时,纵向方向上的一切都很好。 但是在横向方向上,视图旋转,但videoinput不会。 所以我最终得到一个90度旋转的video。 当我实现 – (NSUInteger)supportedInterfaceOrientations方法,那么一切都被locking到肖像位置。 谁能告诉我如何解决这个问题? – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self setupCaptureSession]; _previewLayer.frame = _previewView.bounds; _previewView.center = self.view.center; _previewView.backgroundColor = [UIColor redColor]; [_previewView.layer addSublayer:_previewLayer]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; } […]

我希望我可以使用ios sdk静音快门声音

现在我一直试图在iOS SDK捕捉图像时将快门静音,但无法完成。 有没有什么方法可用的代码(其实我想从我的聊天应用程序追踪假人) 我见过 在iPhone上静音AVCapture快门声音 如何将AVFoundation中的捕捉声音静音? AVFoundation,如何captureStillImageAsynchronouslyFromConnectionclosures快门声音? 但还没有成功