Tag: avassetwriter

AVAssetWriterlogging设置不像AVAudioRecorder一样工作

我已成功使用这些录制设置来创build格式化为所需格式的audio。 但是,这些设置似乎只适用于AVAudioRecorder。 当我用AVAssetWriter尝试他们时,我得到一个错误,指出AVLinearPCMBitDepthKey需要AVLinearPCMBitFloatKey,但是当我添加它说它不允许'ulaw'。 我的问题是为什么AVLinearPCMBitDepthKey在一个logging器中工作正常,但不是另一个? [recordSettings setObject:[NSNumber numberWithInt: kAudioFormatULaw] forKey: AVFormatIDKey]; [recordSettings setObject:[NSNumber numberWithFloat:8000.0] forKey: AVSampleRateKey];//was 44100.0 [recordSettings setObject:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey]; [recordSettings setObject:[NSNumber numberWithInt:8000] forKey:AVEncoderBitRateKey];//was 64000 [recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; [recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityLow] forKey: AVEncoderAudioQualityKey];

通过AVMutableVideoComposition和CAAnimation输出黑色video

我正在构buildiOS应用程序,可以loggingvideo,并使用AVFoundation和CAAnimation在录制的video上添加animation叠加。 所有子function工作正常,但最终video的背景是黑色,但animation播放。 这不是渲染我select的背景video。 我已经使用AVAssetWriter来录制video,并在相机胶卷上播放。 但是如果我使用这个录制的video添加叠加,最终的video背景是黑色的。 有趣的是,如果我通过本机的iOS相机应用程序录制video,并使用它来添加覆盖,它是完美的工作。 我检查了这个问题,但没有为我工作。 黑色videoCAAnimation和AVFoundation AVAssetExportSession 任何帮助将不胜感激。 谢谢

Swift Video Resizer AVAsset

我有这个代码,将video的大小从1280 x 720调整到640 x 360,但是我想要resize而不用裁剪。 有没有办法做一个完整的调整不裁剪? 这是代码 class func resizer(inputURL : NSURL , completion: (outPutURL : NSURL?) -> Void ){ let videoAsset = AVAsset(URL: inputURL) as AVAsset let clipVideoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo).first! as AVAssetTrack let composition = AVMutableComposition() composition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID()) let videoComposition = AVMutableVideoComposition() videoComposition.renderSize = CGSizeMake(360,640) videoComposition.frameDuration = CMTimeMake(1, 30) let instruction = AVMutableVideoCompositionInstruction() […]

如何使用AVAssetWriter将静态和dynamic叠加添加到video?

什么是正确的方式来添加一个图像叠加到AVAssetWriter创build的video? 有可能用AVAssetExportSession这样做,但是这个问题是关于如何用AVAssetWriter这样做的,所以对质量和输出有更多的控制。 有两种情况: 1)简单:在video的整个持续时间内添加单个叠加(类似于水印)。 2)复杂:添加不同的覆盖,在不同的时间进出video(类似于使用AVVideoCompositionCoreAnimationTool)。

为什么AVFoundation不能在iOS设备上接受我的平面像素缓冲区?

我一直在努力弄清楚我的代码有什么问题。 我正在创build一个平面CVPixelBufferRef写入AVAssetWriter 。 这个像素缓冲区是通过一些其他的过程手动创build的(也就是说,我没有从相机或类似的东西那里得到这些样本)。 在iOS模拟器上,添加示例并创build有效的输出影片没有任何问题。 但是,在设备上,它立即在第一个样本失败,并提供less于无用的错误信息: AVAssetWriterError: Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSUnderlyingError=0x12fd2c670 {Error Domain=NSOSStatusErrorDomain Code=-12780 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-12780), NSLocalizedDescription=The operation could not be completed} 我对像素格式很陌生,如果我以某种方式创build了无效的像素缓冲区,我不会感到惊讶,但在模拟器(即OS X)上工作得很好的事实让我感到困惑。 这是我的代码: const int pixelBufferWidth = img->get_width(); const int pixelBufferHeight = img->get_height(); size_t planeWidths[3]; size_t planeHeights[3]; size_t planeBytesPerRow[3]; void* planeBaseAddresses[3]; for (int […]

AVAssetWriter破坏由AVAssetExportSession修剪的video

我正在修剪,然后压缩一个video文件。 为了修剪,我正在使用AVAssetExportSession 对于压缩,我正在使用AVAssetWriter 。 如果我单独使用这两个代码,每件事情都可以正常工作,但是如果我修剪,然后input压缩输出进行压缩,我得到了压缩,但损坏的video。 – (void)viewDidLoad { [super viewDidLoad]; [self trimVideo]; } 修剪代码 -(void)trimVideo { AVAsset *anAsset = [[AVURLAsset alloc]initWithURL:[self.asset valueForProperty:ALAssetPropertyAssetURL] options:nil]; AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:anAsset presetName:AVAssetExportPresetPassthrough]; NSString *fName = [NSString stringWithFormat:@"%@.%@", @"tempVid", @"mp4"]; saveURL = [NSURL fileURLWithPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:fName]]; NSString *fName1 = [NSString stringWithFormat:@"%@.%@", @"tempVid1", @"mp4"]; saveURL1 = [NSURL […]

iPhone的图像video问题在video速度

我已经完成了图像到iPhonevideo转换(当然,我从堆栈溢出问题得到的代码)。 但问题是录制video的速度非常快,即使我有2250帧左右,它在2秒内跑掉了。 我知道问题是与帧率。 但是我不知道如何使它正确。 我的代码在下面 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectoryPath = [paths objectAtIndex:0]; NSString *myFilePath = [documentsDirectoryPath stringByAppendingPathComponent:@"test.mov"]; if ([self openVideoFile:myFilePath withSize:CGSizeMake (480.0, 320.0)]) { for (int i=1; i<2226; i++) { NSString *imagename=[NSString stringWithFormat:@"1 (%i).jpg",i]; UIImage *image=[ UIImage imageNamed:imagename]; [self writeImageToMovie:[image CGImage]]; } [videoWriter finishWriting]; } else { NSLog(@"friled to open video […]

iOS:如何使用AVAssetWriter制作一系列影像

我在这里和其他论坛上多次以不同的forms提到过这个问题。 有些问题得到解答,有些则没有。 回答者或作者声称已经有一些成功的地方。 我已经实现了那些声称成功的例子,但还没有看到相同的结果。 当从AVCaptureSession获取样本缓冲区时,我能够成功地使用AVAssetWriter(和AVAssetWriterInputPixelBufferAdaptor)来同时写入图像数据和audio数据。 但是,如果我有以其他方式生成的CGImageRef,并且“从头开始”构buildCVPixelBufferRef,则AVAssetWriterInputPixelBufferAdaptor的appendPixelBuffer:withPresentationTime方法会成功几帧,然后对所有后续帧都会失败。 生成的电影文件当然是无效的。 你可以在http://pastebin.com/FCJZJmMi看到我的示例代码 图像是有效的,并通过在debugging窗口中显示来validation(见第50-53行)。 该应用程序已经过testing仪器,并在整个应用程序的运行内存利用率低。 它没有得到任何内存警告。 据我所知,我已经遵循了可用的文档。 为什么示例代码失败? 需要做些什么来解决它? 如果有人成功地获得AVAssetWriterInputPixelBufferAdaptor使用自己的图像,请join。

AVAssetWriter输出大文件(即使应用压缩设置)

我正在开发一个个人iOS项目,要求全屏video(15秒长)通过4G连接上传到后端。 虽然我可以拍摄video,但是文件的输出大小已经达到了30MB,这让我觉得我在压缩方面做了很大的错误。 以下是我用来设置AssetWriter的代码: -(void)captureOutput:(AVCaptureFileOutput *)captureOutput didStartRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections { NSLog(@"Started Recording! *******************"); self.movieWriter = [AVAssetWriter assetWriterWithURL:fileURL fileType:AVFileTypeMPEG4 error:nil]; [self.movieWriter setShouldOptimizeForNetworkUse:YES]; NSDictionary *videoCleanApertureSettings = @{ AVVideoCleanApertureWidthKey: [NSNumber numberWithFloat:self.view.frame.size.width], AVVideoCleanApertureHeightKey: [NSNumber numberWithFloat:self.view.frame.size.height], AVVideoCleanApertureHorizontalOffsetKey: [NSNumber numberWithInt:10], AVVideoCleanApertureVerticalOffsetKey: [NSNumber numberWithInt:10], }; NSDictionary *videoCompressionSettings = @{ AVVideoAverageBitRateKey: [NSNumber numberWithFloat:5000000.0], AVVideoMaxKeyFrameIntervalKey: [NSNumber numberWithInteger:1], AVVideoProfileLevelKey: AVVideoProfileLevelH264Baseline30, AVVideoCleanApertureKey: videoCleanApertureSettings, }; NSDictionary *videoSettings […]

GPUImageMovieWriter – 崩溃时,状态为2时无法调用方法

尝试开始使用由Brad Larson亲切地分享的真正伟大的GPUImage框架,但有一个问题。 运行SimpleVideoFileFilter示例时,它总是崩溃,出现以下错误: [AVAssetWriterInput markAsFinished]状态为2时无法调用方法 任何人都知道如何纠正这一点? 在模拟器中运行时也看不到video,对模拟器不起作用吗? 运行iOS 6.1和Xcode 4.6 谢谢! 我注意到finishRecordingWithCompletionHandler被调用两次,第二次调用崩溃