Tag: avfoundation

提高AVPlayer的最大播放率

目前我正在开发一个应用程序,在这个应用程序中,我非常快速地播放video,高达正常播放速度的20倍。 我现在才意识到, AVFoundation AVPlayer只支持2.0的播放速率。 以更高的速度,video不再stream利地播放。 你有没有关于其他video框架的build议,你可以build议,以解决我的问题? 提前非常感谢!

使用AVMutableComposition iPhone

我正在使用下面的代码,顺序stream式传输两个video。 但它没有在模拟器中显示任何video,它完全空白。 另外我怎样才能通过这两个video寻求。 就像,如果一个video是2分钟,第二个是3分钟。 现在我需要得到这些video的总时间,并通过它们来寻找。 当我将滑杆滑动到4分钟时,第二个video应该从第2分钟开始播放。 可能吗? – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSURL *url1 = [NSURL URLWithString:@"http://www.tools4movies.com/dvd_catalyst_profile_samples/Harold%20Kumar%203%20Christmas%20bionic.mp4"]; NSURL *url2 = [NSURL URLWithString:@"http://www.tools4movies.com/dvd_catalyst_profile_samples/Harold%20Kumar%203%20Christmas%20tablet.mp4"]; NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; AVMutableComposition *composition = [[AVMutableComposition alloc] init]; asset1 = [[AVURLAsset alloc] initWithURL:url1 options:options]; AVURLAsset […]

iOS中的video编辑问题

我目前正在合并所需数量的video的iOS应用程序。 一旦用户点击button合并video,videojoin,然后使用AVPlayer播放: CMTime nextClipStartTime = kCMTimeZero; NSInteger i; CMTime transitionDuration = CMTimeMake(1, 1); // Default transition duration is one second. // Add two video tracks and two audio tracks. AVMutableCompositionTrack *compositionVideoTracks[2]; AVMutableCompositionTrack *compositionAudioTracks[2]; compositionVideoTracks[0] = [self.mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; compositionVideoTracks[1] = [self.mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; compositionAudioTracks[0] = [self.mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; compositionAudioTracks[1] = [self.mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; CMTimeRange *passThroughTimeRanges […]

iOS逐帧向前/向后播放video

我想用慢动作在iOS设备上显示video。 我的视图包含一个video(约2秒长)和一个滑块。 用户可以逐个移动滑块并逐步(向前和向后)通过电影。 MPMoviePlayerController缺乏逐帧逐帧的能力。 我读了关于MVAssetReader ,但我没有具体的想法如何使用这个。 我没有固定的帧率,所以它应该从video的元数据中取出这些信息。 我真的需要展示每一帧。 有人能给我一个线索吗?

AVFoundation相机预览图层不起作用

所以,我试图用AVFoundation实现一个摄像头。 我想我做的一切都是正确的。 这是我正在做的 创build会话 获取videotypes的设备 通过设备循环让相机在后面 使用#3中提到的设备获取设备input并将其添加到会话中 创build一个AVCaptureStillImageOutputtypes的输出 设置输出设置并将其添加到会话中 从我的观点2得到一个CALayer(下面将解释我的意思是视图2) 创build一个AVCaptureVideoPreviewLayer的实例 将它添加到#7中提到的层 开始运行会话 所以我有两个意见一个在另一个。 最上面的是视图1,下面的是视图2.视图1应该提供自定义的摄像头控件。 这里是代码: self.session = [[AVCaptureSession alloc]init]; [self.session setSessionPreset:AVCaptureSessionPresetHigh]; NSArray *devices = [[NSArray alloc]init]; devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; for (AVCaptureDevice *device in devices){ if([device position] == AVCaptureDevicePositionBack){ self.device = device; break; } } NSError *error; self.input = [[AVCaptureDeviceInput alloc]initWithDevice:self.device error:&error]; if([self.session canAddInput:self.input]){ […]

video在应用AVVideoComposition后旋转

将AVVideoComposition应用到我的AVPlayerItem ,我应用的滤镜可以工作,但是video在AVPlayerLayer旋转。 我知道这个问题是不是与过滤的框架,因为如果我在UIImageView显示帧,框架呈现100%正确。 video正确显示, 直到我申请一个videoComposition 。 在AVPlayerLayer上设置videoGravity不起作用。 video顺时针旋转90度并在图层中拉伸。 本质上,在AVPlayerLayer通过AVMutableVideoComposition提供之前,video在AVPlayerLayer完美显示。 一旦发生这种情况,video旋转了-90º,然后在过滤之前缩放到与video尺寸相同的尺寸。 这向我暗示,它并没有意识到它的转换已经是正确的了,所以它正在重新应用自身的转换。 为什么会发生这种情况,我该如何解决? 这里是一些代码: private func filterVideo(with filter: Filter?) { if let player = player, let playerItem = player.currentItem { let composition = AVMutableComposition() let videoAssetTrack = playerItem.asset.tracks(withMediaType: .video).first let videoCompositionTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid) try? videoCompositionTrack?.insertTimeRange(CMTimeRange(start: kCMTimeZero, duration: playerItem.asset.duration), of: videoAssetTrack!, at: kCMTimeZero) videoCompositionTrack?.preferredTransform […]

使用MPMoviePlayerController无法从video获取多个图像。 OSStatus -12433

我试图使用MPMoviePlayerController从选定的video文件中提取多个图像。 以下是我写的代码。 movie = [[MPMoviePlayerController alloc] initWithContentURL:[info objectForKey:UIImagePickerControllerMediaURL]]; NSNumber *time1 = [NSNumber numberWithInt:1]; NSNumber *time2 = [NSNumber numberWithInt:3]; NSNumber *time3 = [NSNumber numberWithInt:5]; NSArray *times = [NSArray arrayWithObjects:time1,time2,time3,nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleThumbnailImageRequestFinishNotification:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:movie]; [movie requestThumbnailImagesAtTimes:times timeOption:MPMovieTimeOptionExact]; 这是通知的处理程序 -(void)handleThumbnailImageRequestFinishNotification:(NSNotification*)note { NSDictionary *userinfo = [note userInfo]; NSError* value = [userinfo objectForKey:MPMoviePlayerThumbnailErrorKey]; if (value!=nil) { NSLog(@"Error: %@", […]

AVAssetWriter可以使用透明度编写文件吗?

我用AVAssetWriter编写的每个文件都有一个黑色背景,如果我包含的图像不填充整个渲染区域。 有没有办法用透明度来书写? 这里是我用来获取像素缓冲区的方法: – (CVPixelBufferRef)pixelBufferFromCGImage:(CGImageRef)image { CGSize size = self.renderSize; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey, [NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey, nil]; CVPixelBufferRef pxbuffer = NULL; CVPixelBufferPoolCreatePixelBuffer(NULL, self.adaptor.pixelBufferPool, &pxbuffer); CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault, size.width, size.height, kCVPixelFormatType_32ARGB, (__bridge CFDictionaryRef) options, &pxbuffer); if (status != kCVReturnSuccess){ NSLog(@"Failed to create pixel buffer"); } CVPixelBufferLockBaseAddress(pxbuffer, 0); void *pxdata = […]

如何用叠加视图loggingvideo

嗨,我试图用覆盖录制video。 我已经写了: -(void)addOvelayViewToVideo:(NSURL *)videoURL 在录制的video上添加叠加视图,但不起作用。 我编写了代码来使用AVCaptureSession在viewDidLoadloggingvideo。 //In ViewDidLoad //CONFIGURE DISPLAY OUTPUT self.previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:self.captureSession]; [self.previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; self.previewLayer.frame = self.view.frame; [self.view.layer addSublayer:self.previewLayer]; -(void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error { if(error.code != noErr) { id value = [[error userInfo] objectForKey:AVErrorRecordingSuccessfullyFinishedKey]; if(value) { isSuccess = [value boolValue]; } } if(isSuccess) { ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary […]

使用AVPlayer和AVMutableComposition进行未alignment的声音播放

我正尝试使用AVComposition从多个乐器样本创build一首歌曲。 当我用kCMTimeZero在AVMutableComposition播放两个声音资产时,我希望他们可以同时播放,但有一个很小的偏移量。 这只会发生在第一个playthrough,所以这似乎是某种加载延迟,但不pipe我尝试它不会消失。 我已经确保预加载音轨资源,预加载合成音轨,等待playerItem准备好,然后等待播放器准备好播放。 我尝试过预卷播放器,播放/暂停播放,等等。第一次播放时,音轨之间总会有轻微的偏移。 我已经创build了一个小样本项目来演示这里的效果 主要代码在这里 请注意,当你第一次加载应用程序,并播放时,声音略有偏移。 随后重复的声音(和同一个playerItem的重放)没有这个问题。 延迟最初的声音似乎解决了这个问题,但这不是一个很好的select。 任何想法,如果这可以修复或如果我失去了一些东西? 谢谢