Tag: video操作

如何在IOS中做慢动作video

我必须在video文件中伴随audio,在一些帧之间进行“ 慢动作 ”,并且需要将渐变video存储为新video。 参考: http : //www.youtube.com/watch?v = BJ3_xMGzauk (从0到10秒钟) 从我的分析,我发现AVFoundation框架可以是有帮助的。 参考: http : //developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html 从上面的链接复制并粘贴: “编辑AV Foundation使用合成来创build现有媒体(通常是一个或多个video和audio轨道)的新资产,使用可变的合成来添加和移除轨道,并调整它们的时间顺序,还可以设置相对音量和渐变音轨;以及设置video轨道的不透明度和不透明度斜坡,合成是内存中保存的多个媒体的集合,当您使用导出会话导出合成时,它将合并到一个文件中。 iOS 4.1及更高版本,您还可以使用资产编写器从媒体(如样本缓冲区或静态图像)创build资产。 “ 问题: 我可以使用AVFoundation框架“慢动作”video/audio文件吗? 还是有其他可用的包吗? 如果我想单独处理audio和video,请指导我如何做? 更新::代码AV导出会话: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *outputURL = paths[0]; NSFileManager *manager = [NSFileManager defaultManager]; [manager createDirectoryAtPath:outputURL withIntermediateDirectories:YES attributes:nil error:nil]; outputURL = [outputURL stringByAppendingPathComponent:@"output.mp4"]; // Remove Existing File [manager […]

如何使用AVFoundation结合不同方向的video剪辑

我正在尝试将几个video剪辑合并为一个使用AVFoundation。 我可以使用下面的代码使用AVMutableComposition创build一个video AVMutableComposition *composition = [AVMutableComposition composition]; AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; CMTime startTime = kCMTimeZero; /*videoClipPaths is a array of paths of the video clips recorded*/ //for loop to combine clips into a single video for (NSInteger i=0; i < [videoClipPaths count]; i++) { NSString *path = […]

同时AVCaptureVideoDataOutput和AVCaptureMovieFileOutput

我需要能够使AVCaptureVideoDataOutput和AVCaptureMovieFileOutput工作。 下面的代码工作,但是,video录制不。 在调用startRecordingToOutputFileURL之后直接调用didFinishRecordingToOutputFileAtURL委托。 现在,如果我通过简单的注释掉AVCaptureVideoDataOutput从AVCaptureSession删除: [captureSession addOutput:captureDataOutput]; video录制的作品,但没有调用SampleBufferDelegate(我需要)。 我怎么能有AVCaptureVideoDataOutput和AVCaptureMovieFileOutput同时工作。 – (void)initCapture { AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice:[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] error:NULL]; captureDataOutput = [[AVCaptureVideoDataOutput alloc] init]; [captureDataOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()]; m_captureFileOutput = [[AVCaptureMovieFileOutput alloc] init]; NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey; NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA]; NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key]; [captureDataOutput setVideoSettings:videoSettings]; captureSession = [[AVCaptureSession alloc] init]; [captureSession addInput:captureInput]; […]

如何检测video文件是以纵向方式录制还是在iOS中横向录制

我正在使用AlAssetsGroup enumerateAssetsAtIndexes列出照片(相机)应用程序中的资产。 对于给定的video资源,我想确定它是以纵向还是横向模式拍摄的。 在下面的代码中,asset是一个AlAsset ,我已经testing过它是否是一个video资产[asset valueForProperty:ALAssetPropertyType]是AlAssetTypeVideo ,那么: int orientation = [[asset valueForProperty:ALAssetPropertyOrientation] intValue]; 在这种情况下, orientation始终为0,即ALAssetOrientationUp 。 也许这是可以预料的,所有的video都是正确的,但是一个纵向video在MPEG-4中被表示为一个90度的横向video(即所有的video实际上是横向的,如果你不尝试在Mac上的MediaInfo应用相信我)。 在文件内部和/或如何访问信息,告诉我实际上是以纵向方向握住手机时录制的? 考虑到资产的url,我也尝试了这一点: AVURLAsset *avAsset = [[AVURLAsset alloc] initWithURL:url options:nil]; CGSize size = [avAsset naturalSize]; NSLog(@"size.width = %f size.height = %f", size.width, size.height); CGAffineTransform txf = [avAsset preferredTransform]; NSLog(@"txf.a = %f txf.b = %f txf.c = %f txf.d = […]

避免video开始和结束时的模糊(甚至在使用setPreferredVideoStabilizationMode:AVCaptureVideoStabilizationModeAuto之后)?

我们在使用setPreferredVideoStabilizationMode:AVCaptureVideoStabilizationModeAuto同时在iOS上捕捉video,但是video在开始和结束时有时会变得模糊(尽pipe在中间很好),这是非常有问题的,因为我们把第一帧作为静止图像以便在不切换相机模式的情况下启用video和照片function)。 将设备平放在桌面上可消除所有的模糊,因此整个video都是清晰的。 这表明它与video稳定有关,但是还有其他属性可以设置吗? locking焦点模式的问题吗? 其他疑难解答提示? 以下是PBJVision的video捕获function,我们使用这个function: – (void)startVideoCapture { if (![self _canSessionCaptureWithOutput:_currentOutput] || _cameraMode != PBJCameraModeVideo) { [self _failVideoCaptureWithErrorCode:PBJVisionErrorSessionFailed]; DLog(@"session is not setup properly for capture"); return; } DLog(@"starting video capture"); [self _enqueueBlockOnCaptureVideoQueue:^{ if (_flags.recording || _flags.paused) return; NSString *guid = [[NSUUID new] UUIDString]; NSString *outputFile = [NSString stringWithFormat:@"video_%@.mp4", guid]; if ([_delegate respondsToSelector:@selector(vision:willStartVideoCaptureToFile:)]) { outputFile […]

无缝地循环播放AVPlayer

以前有关于如何循环播放AVPlayer的video项目的讨论,但没有一个“解决scheme”足够无缝地提供video的无延迟循环 。 我正在开发一个tvOS应用程序,它在一个视图的背景中有一个高质量的“风景”10秒剪辑,并且简单地以“标准”方式重新启动AVPlayer(订阅NSNotification来捕捉它)注意和减损用户体验。 似乎实现真正无缝循环的唯一方法是手动pipe理帧(在OpenGL中)… 尽pipe在这方面做了最大的努力,作为一个操纵videopipe道的新手,我还没有接近到可以理解的解决scheme。 我知道,外部库存在能够更容易地执行此行为; 最显着的是GPUImage 。 然而,我正在开发的应用程序是用于tvOS,因此难以使用相当多的第三方iOS库,包括GPUImage。 我遇到的另一个库是AVAnimator ,它为轻量级animationvideo提供了很好的function,但是不能用于以.H264编码的源素材的密集,高质量video剪辑。 我到目前为止最接近的是苹果公司自己的AVCustomEdit源代码,但是这主要涉及静态生成一个“过渡”,虽然无缝,但对于我来说,能够辨别如何使其执行简单的循环function是非常复杂的。 如果有人能够在较低的层次上操作AVPlayer经验,即使用image processing/缓冲区(或者不依赖于外部库的iOS开发),我会非常感兴趣的知道如何才能开始。