Tag: avfoundation

AVFoundation作物根据预览宽高比捕获静止图像

我的问题大部分与这个相似: 裁剪由AVCaptureSession捕获的图像 我有一个应用程序使用AVFoundation捕获静止图像。 我的AVCaptureVideoPreviewLayer具有AVLayerVideoGravityResizeAspectFillvideo重力,从而使得向用户显示的预览图片从顶部和底部部分被裁剪。 当用户按下“拍摄”button时,实际拍摄的图像与显示给用户的预览图像不同。 我的问题是如何相应裁剪捕获的图像? 提前致谢。

如何录制video并同时播放audio(快速教程)

那么您想要录制video并同时播放用户库中的 音乐吗? 再看一眼。 以下是答案。

如何获得另一个应用程序正在播放的audio

我怎样才能访问另一个应用程序的当前正在播放的audio – 实际的audio项目,但也欢迎元数据。 我可以看到,这个问题已经被问了很多,但几年来提供的解决scheme很less。 我明白苹果的理念可能不希望一个应用程序能够做到这一点。 我也明白,这样的请求可能在iOS API之外。 据说,我真的很喜欢某种解决scheme。 从逻辑上讲,我觉得 MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo 应该返回当前正在播放的信息; 但是,正如其他人所提到的,这个值总是nil在您的应用程序之外播放的audio。 值得注意的是,stream行的audio应用程序似乎无法使用MPNowPlayingInfoCenter类,使这种audio失败。 如果使用默认的音乐应用程序,可以使用 MPMusicPlayerController.systemMusicPlayer().nowPlayingItem 但是,通过Podcast应用程序,Spotify,Pandora,Safari等访问audio播放的更一致的方式是什么? 有没有人find这个解决scheme? 有没有旧的Objective-C框架支持这个function? 如果有某种方法可以访问当前正在播放的项目的audiopath,则可以使用一种方法。 例如,如果我能得到当前正在播放的项目的path,我可以从中创build一个AV对象: AVAudioPlayer(contentsOfURL: audioUrl) 那么有什么办法可以得到当前正在播放的项目的audiourl,并以这种方式使用它? 另一种方法更好吗? 如果一个本地解决scheme不存在 ,是否有可能一起躲避它的工作? 任何意见或想法的欢迎。 编辑:我不相信有人能够实现这一点; 不过,我想很多人都想。 如果已经解决,请链接! 🙂

如何在iOS中裁剪video

我正在看看苹果提供的RosyWriter示例代码作为起点,我想find一个如何裁剪video的方法。 所以我有从iPhone相机的全分辨率video,但我只是想使用它的裁剪部分(也旋转此子部分)。 我想在captureOutput:didOutputSampleBuffer: fromConnection:我可以通过修改我传入的CMSampleBufferRef修改每个帧。 所以我现在的问题是: 这是裁剪我的video的正确的地方吗? 我在哪里指定最终的video(保存到光盘上)的分辨率比AVCaptureSession捕获的完整video小? 设置AVVideoWidthKey和AVVideoHeightKey不起作用。 我如何裁剪video,仍然有良好的performance? 任何帮助表示赞赏! 非常感谢! 编辑: 也许我只需要知道如何通过将video的图像旋转90度然后再次放大以适应宽度来拍摄纵向拍摄的video…?!?

使用AVMutableVideoComposition导出时的video方向问题

这是我用来导出video的function: – (void) videoOutput { //1 – Early exit if there's no video file selected if (!self.videoAsset) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please Load a Video Asset First" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; return; } // 2 – Create AVMutableComposition object. This object will hold your AVMutableCompositionTrack instances. AVMutableComposition *mixComposition = [[AVMutableComposition alloc] […]

iOS迅速转换成MP3到AAC

我正在使用基于此的代码在Swift中将mp3转换为m4a 它生成一个PCM文件时工作。 当我将输出格式更改为m4a时,它会生成一个文件,但不会播放。 为什么腐败? 这是迄今为止的代码: import AVFoundation import UIKit class ViewController: UIViewController { var rwAudioSerializationQueue:dispatch_queue_t! var asset:AVAsset! var assetReader:AVAssetReader! var assetReaderAudioOutput:AVAssetReaderTrackOutput! var assetWriter:AVAssetWriter! var assetWriterAudioInput:AVAssetWriterInput! var outputURL:NSURL! override func viewDidLoad() { super.viewDidLoad() let rwAudioSerializationQueueDescription = String(self) + " rw audio serialization queue" // Create the serialization queue to use for reading and writing the audio […]

获取video的当前时间(玩家 – Swift)

我使用播放器 (使用AVFoundation)设置了一个video播放器 。 我试图访问和操作video的currentTime,但是,图书馆只提供video的持续时间,而不是currentTime。 我正在调整播放器的演示项目 。 请检查下面的“更新”部分,而不是在这里: 一个朋友告诉我,我可以用这种方法来实现,但是在这种情况下,我实际上无法调整这个方法。 [NSTimer scheduledTimerWithInterval:1.0 target:self selector:@selector(refreshCurrentTimeTextField) userInfo:nil repeats:YES] -(void)refreshCurrentTimeTextField { NSTimeInterval currentTime; QTMovie *movie = [movieView movie]; QTGetTimeInterval([movie currentTime], &currentTime); int hours = currentTime/3600; int minutes = (currentTime/60) % 60; int seconds = currentTime % 60; NSString *timeLabel; if(hours > 0) { timeLabel = [NSString stringWithFormat:@"%02i:%02i:%02i", hours, minutes, seconds]; […]

如何在iOS上使用AVMutableComposition和CALayers将多个CALayer添加到video文件中

我想按时间顺序依次添加多个CALayer我可以使用此链接在video文件中添加一个图层。 现在我的问题是,如何将多个CALayer添加到video文件。 提前致谢..

获取audio驱动程序采样率的OSX AVAudioSession替代

在IOS上你可以使用[[AVAudioSession sharedInstance] sampleRate]; 检索audio驱动程序使用的当前采样率。 AVAudioSession在OSX上不存在,所以我想知道如何在OSX上实现相同的function,因为我无法在主题上find太多内容。 谢谢

我可以在AppDelegate上使用AVAudioPlayer吗?

我有一个TabBarController与两个选项卡,我想在两个选项卡上播放音乐。 现在我有我的代码在主appDelegate NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"My Song" ofType:@"m4a"]]; // My Song.m4a NSError *error; self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; if (error) { NSLog(@"Error in audioPlayer: %@", [error localizedDescription]); } else { //audioPlayer.delegate = self; [audioPlayer prepareToPlay]; } 但我得到错误Program received signal: "SIGABRT" UIApplicationMain上的Program received signal: "SIGABRT" 有没有更好的方法来完成我想要做的事情? 如果这是我应该怎么做的,我该从哪里开始检查问题?