Tag: avfoundation

如何根据框架在video中设置CATextLayer?

我已经尝试了许多想法,但没有成功,我的问题是,我有一个video,我提供了一个function,在video上写文本,并拖放到video上的文本现在我魔棒设置CATextlayervideo与propper由用户设置的位置,但不显示在正确的位置,所以请帮助我。 这是我为此使用的代码。 CATextLayer *titleLayer = [CATextLayer layer];//<========code to set the text titleLayer.string = self.strText; titleLayer.font = (__bridge CFTypeRef)(self.fonts);; titleLayer.fontSize = titleLayer.fontSize; titleLayer.position = CGPointMake (titleLayer.fontSize,titleLayer.fontSize); //?? titleLayer.shadowOpacity = 0.5; titleLayer.alignmentMode = kCAAlignmentCenter; titleLayer.bounds = CGRectMake(self.rectText.origin.x,self.rectText.origin.y-52, 480, 480); //You may need to adjust this for proper display [titleLayer setBackgroundColor:[UIColor redColor].CGColor]; [parentLayer addSublayer:titleLayer]; //ONLY IF WE ADDED […]

让AVAudioPlayer一次播放多个声音

我试图获得多个声音文件在AVAudioPlayer实例上播放,但是当一个声音播放时,另一个停止。 我一次只能听到一个以上的声音。 这是我的代码: import AVFoundation class GSAudio{ static var instance: GSAudio! var soundFileNameURL: NSURL = NSURL() var soundFileName = "" var soundPlay = AVAudioPlayer() func playSound (soundFile: String){ GSAudio.instance = self soundFileName = soundFile soundFileNameURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(soundFileName, ofType: "aif", inDirectory:"Sounds")!) do{ try soundPlay = AVAudioPlayer(contentsOfURL: soundFileNameURL) } catch { print("Could not play sound file!") […]

AVQueuePlayer播放没有间隙和冻结

我使用AVQueuePlayer播放从URL加载的电影序列。 我尝试使用所有需要播放的AVPlayerItems数组初始化播放器实例。 player = [[AVQueuePlayer queuePlayerWithItems:playerItemsArray] 但在这种情况下, AVQueuePlayer会在开始播放之前加载每个AVPlayerItem一些初始部分。 它会导致令人沮丧的冻结,并且应用程序在几秒钟内不响应。 有可能只添加第一个AVPLayerItem到播放器的队列中,观察它的状态,并且只在第一个播放到达结束时才在队列中添加第二个播放项,但在这种情况下,由第二个AVPlayerItem初始化和缓冲。 有没有办法组织无缝播放的几个video没有冻结? 我是否应该使用其他玩家来达到这个目的? 提前致谢。

如何在iOS中将kCVPixelFormatType_420YpCbCr8BiPlanarFullRange缓冲区转换为UIImage

我试图在原来的线程中回答这个问题,但是SO不会让我。 希望有更多权威的人可以把这个问题合并到原来的问题中去。 好的,这里是一个更完整的答案。 首先,设置捕获: // Create capture session self.captureSession = [[AVCaptureSession alloc] init]; [self.captureSession setSessionPreset:AVCaptureSessionPresetPhoto]; // Setup capture input self.inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice:self.inputDevice error:nil]; [self.captureSession addInput:captureInput]; // Setup video processing (capture output) AVCaptureVideoDataOutput *captureOutput = [[AVCaptureVideoDataOutput alloc] init]; // Don't add frames to the queue if frames are already processing […]

iOS 10.0 – 10.1:使用AVVideoCompositionCoreAnimationTool后,AVPlayerLayer不显示video,只有audio

这里是一个完整的项目,如果你关心自己运行这个: https : //www.dropbox.com/s/5p384mogjzflvqk/AVPlayerLayerSoundOnlyBug_iOS10.zip?dl = 0 这是iOS 10上的一个新问题,从iOS 10.2开始已经修复。 在使用AVAssetExportSession和AVVideoCompositionCoreAnimationTool导出video以在导出期间合成video顶层的video之后,在AVPlayerLayer中播放的video将无法播放。 这似乎不是由于AVaudio编码/解码stream水线限制造成的,因为它经常发生在一次导出之后,据我所知只有2个stream水线:1个用于AVAssetExportSession,另一个用于AVPlayer。 我也正确地设置图层的框架,正如你可以看到通过运行下面的代码给图层一个蓝色的背景,你可以清楚地看到。 导出之后,在播放video之前等待一段时间似乎使它更可靠,但这不是一个可以接受的解决方法告诉你的用户。 任何想法是什么导致这个或如何我可以解决或解决它? 我是否搞砸了一些重要的步骤或细节? 任何帮助或指向文档的指针非常感谢。 import UIKit import AVFoundation /* After exporting an AVAsset using AVAssetExportSession with AVVideoCompositionCoreAnimationTool, we * will attempt to play a video using an AVPlayerLayer with a blue background. * * If you see the blue background and hear audio […]

通过上方(电话)扬声器播放audio

我试图在我的应用程序中获取audio,通过iPhone上方的扬声器进行播放,这是您在通话期间按到耳边的那个扬声器。 我知道这是可能的,因为我已经在App Store上玩过一个模拟电话的游戏(“The Heist”)。 我在网上做了大量的研究,但是我发现一个甚至讨论过这个可能性的人都很难过。 绝大多数post似乎是关于免提扬声器vs插入式耳机,(比如这个 , 这个和这个 ),而不是上面的“电话”扬声器与免提扬声器。 (这个问题的一部分可能没有一个好名字:“电话扬声器”往往意味着设备底部的免提扬声器等,所以很难做一个真正有针对性的search)。 我已经看过苹果的Audio Session Category Route Overrides ,但似乎(纠正我,如果我错了)只处理底部的免提扬声器,而不是在电话顶部的扬声器。 我发现一个似乎是关于这个链接的post。 它甚至提供了一堆代码,所以我认为我是免费的,但现在我似乎无法让代码工作。 为了简单起见,我只复制了DisableSpeakerPhone方法(如果我正确地理解它应该是将audio重新路由到上面的扬声器的方法)到我的viewDidLoad ,看它是否会工作,但第一个“断言”行失败,audio继续发挥出底部。 (我还导入了AudioToolbox框架,正如评论中所build议的,所以这不是问题。) 这里是我正在使用的主要代码块(这是我复制到我的viewDidLoadtesting),虽然在我链接到的文章中有几个方法: void DisableSpeakerPhone () { UInt32 dataSize = sizeof(CFStringRef); CFStringRef currentRoute = NULL; OSStatus result = noErr; AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &dataSize, &currentRoute); // Set the category to use the speakers and microphone. UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; […]

CoreAnimation – 不透明度淡入和淡出animation不工作

我正在试图创build一个相当简单的CoreAnimation在AVComposition使用。 我的目标是创build一个CALayer ,通过各个子层,淡入淡出标题,然后淡入淡出图像。 幻灯片,基本上。 这是使用AVAssetWriter导出到.mov。 在WWDC 2011 AVEditDemo的帮助下,我已经能够得到一个标题和图像出现。 问题是他们都在同一时间在屏幕上! 我创build了不透明度为0.0的每个图层。 然后我使用下面的代码添加了一个CABasicAnimation使它们从0.0到1.0淡出: CABasicAnimation *fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; fadeInAnimation.fromValue = [NSNumber numberWithFloat:0.0]; fadeInAnimation.toValue = [NSNumber numberWithFloat:1.0]; fadeInAnimation.additive = NO; fadeInAnimation.removedOnCompletion = YES; fadeInAnimation.beginTime = 1.0; fadeInAnimation.duration = 1.0; fadeInAnimation.fillMode = kCAFillModeForwards; [titleLayer addAnimation:fadeInAnimation forKey:nil]; 问题似乎是“beginTime”属性。 “1.0”意味着延迟,所以从animation开始1秒后开始。 但是,它直接出现在屏幕上。 淡出animation 这个代码的反面,淡出,只是简单地将fromValue更改为1.0,toValue更改为0.0。 它有一个开始时间4.0和完美的作品。 我正在使用以下来创buildanimatedTitleLayer : CATextLayer *titleLayer = [CATextLayer layer]; […]

AVPlayer缓冲,暂停通知和海报框架

我有一些与AVPlayer相关的问题: 当我们通过[player pause]暂停AVPlayer , AVPlayer不会缓冲来自networking的video,还是停止播放? 在苹果的文档中,我无法得到任何与此相关的信息。 另外,是否有可能强制AVPlayer在暂停时保持缓冲,这样如果我们有暂停的video正在等待第一个video结束,那么我们不会在video之间find任何间隙? 在暂停AVPlayer时,我们可以在[player pause]上有任何事件。 我们可以在AVPlayer上显示静止图像几秒钟吗? 谢谢

iOS:如何使用MPMoviePlayerController

我创build了一个空白的项目(iOS),并把它放在我的viewDidLoad中: NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"]; MPMoviePlayerViewController *playerController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:moviePath]]; [self presentMoviePlayerViewControllerAnimated:playerController]; [playerController.moviePlayer play]; 当应用程序启动,我得到的是在日志中的错误消息的白色屏幕 : <Error>: CGContextSaveGState: invalid context 0x0 <Error>: CGContextClipToRect: invalid context 0x0 <Error>: CGContextTranslateCTM: invalid context 0x0 <Error>: CGContextDrawShading: invalid context 0x0 <Error>: CGContextRestoreGState: invalid context 0x0 Warning: Attempt to present <MPMoviePlayerViewController: 0x821e3b0> on <ViewController: 0x863aa40> […]

find设备的相机分辨率的方法iOS

什么是最好的方法来find图像分辨率将被捕获使用设置AVCaptureSessionPresetPhoto 。 我正在尝试在捕捉图像之前find分辨率。