Tag: audio

AVPlayer不同步

我真的没有想法,所以我不得不再次问你们 我正在构build一个使用三个AVPlayer实例的iPhone应用程序。 他们都在同一时间玩,这是非常重要的。 我曾经运行这个代码: CMClockRef syncTime = CMClockGetHostTimeClock(); CMTime hostTime = CMClockGetTime(hostTime); [self.playerOne setRate:1.0f time:kCMTimeInvalid atHostTime:hostTime]; [self.playerTwo setRate:1.0f time:kCMTimeInvalid atHostTime:hostTime]; [self.playerThree setRate:1.0f time:kCMTimeInvalid atHostTime:hostTime]; 这工作完美。 但是前几天刚刚停止工作,三名选手被推迟了大概300-400毫秒(这是很大的方法,100毫秒以内的任何事情都可以)。 其中两个AVPlayer有一些audio处理,比“正常的”AVPlayer花费的时间要多一些,但之前使用过,以及currentTime属性告诉我,这些播放器被延迟,所以同步似乎失败。 我不知道为什么它停止工作,我没有真正改变的东西,但我使用的是一个观察者,我可以问self.playerX.currentTime属性,这让我延迟了大约.3 – .4秒。 ..我已经尝试重新同步播放器,如果延迟> .1f但延迟仍然存在。 所以我认为player1和2的audio处理不能对延迟做出响应,因为currentTime属性确实知道它们被延迟了(我希望你知道我的意思)。 也许你们中的一些人知道我为什么会有这么可怕的拖延,或者能够提供给我另外一个想法。 提前致谢!

如何检测何时播放完音效?

我正在使用SimpleAudioEngine,并试图在继续之前检测音效是否完成播放。 我正在寻找任何方法,但我试图实施的方法不起作用! CDSoundEngine *engine = [CDAudioManager sharedManager].soundEngine; ALuint soundId = [[SimpleAudioEngine sharedEngine] playEffect:soundId]; float seconds = [engine bufferDurationInSeconds:soundId]; 每次我使用bufferDurationInSeconds时,它都会返回-1的浮点值给variables秒。 我检查了实现,并且当id无效时返回-1,但是我是100%ID是有效的! 任何人都可以帮助我解决这个问题,或build议我另一种方式来检测声音效果的结束?

AudioUnitaudio发生器在每个音调结束时给我一个唧唧声

我正在为旧的GWBasic PLAY命令创build一个老派的音乐模拟器。 为此,我有一个音源和音乐播放器。 在演奏的每一个音符之间,我都会听到唧唧喳喳的声音。 以下是我的两个类: ToneGen.h #import <Foundation/Foundation.h> @interface ToneGen : NSObject @property (nonatomic) id delegate; @property (nonatomic) double frequency; @property (nonatomic) double sampleRate; @property (nonatomic) double theta; – (void)play:(float)ms; – (void)play; – (void)stop; @end ToneGen.m #import <AudioUnit/AudioUnit.h> #import "ToneGen.h" OSStatus RenderTone( void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData); […]

用AVCaptureSession和播放audio同时录制audio/video?

我试图创build一个iOS应用程序,可以录制audio和video,同时向扬声器输出audio。 要进行录制和预览,我使用了AVCaptureSession , AVCaptureConnection分别用于video和audio, AVAssetWriterInput用于video和audio。 我基本上是通过遵循RosyWriter示例代码来实现的。 在以这种方式设置录制之前,我使用AVAudioPlayer播放audio。 现在,如果我正在捕获(甚至不logging,只是捕获预览),并试图使用AVAudioPlayer ,我的AVCaptureAudioDataOutputSampleBufferDelegate类的captureOutputcallback停止调用captureOutput 。 有没有解决方法? 是否有另一个低级的服务,我应该用来播放audio,不会停止我的捕获? MC。

使用超声波确定两个移动设备的相对位置

我正在考虑使用超声波(听不清)作为确定两个移动设备(可以在Android或iOS设备上)的相对位置的选项。 这两个设备上都会安装我的应用程序。 它的用户将面对对方(他们的最大距离为1.5米),举行设备面对对方。 我想知道是否有可能build立一个有效的系统,其中一个应用程序将发送超声波/听不到的信号,其他用户的应用程序会收到它,并确定这个特定用户(站在非常接近)发送它(发出声音) 。 注意:在我的情况下,声音可以听到,但听起来不太好,因此我使用超声波这个词。 这种应用程序的电池消耗并不重要(虽然我会欣赏任何信息)。 我只想知道这样的应用程序是否可行和有效。 我也想发送(如果可能的话)几个字节的信息,但是系统也应该在有环境噪声的地方工作。 任何人都可以回答这个问题/分享这个话题的经验?

如何在iPhone中使用AudioBuffer在本地录制从麦克风录制的audio文件?

我是新的audio框架,任何人都可以帮我写从麦克风捕捉正在播放的audio文件? 下面是通过iphone扬声器播放麦克风input的代码,现在我想将audio保存在iPhone中供将来使用。 我从这里find代码来使用麦克风录制audiohttp://www.stefanpopp.de/2011/capture-iphone-microphone/ /** Code start from here for playing the recorded voice */ static OSStatus playbackCallback(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) { /** This is the reference to the object who owns the callback. */ AudioProcessor *audioProcessor = (AudioProcessor*) inRefCon; // iterate over incoming stream an copy […]

如何使用audio编解码器的iOS VOIP / SIP应用程序

任何人可以帮我清除我的疑惑,我正在尝试实施一个SIP应用程序,我已经有SIP服务器设置,我有我的SIP帐户的用户名和密码。 现在我尝试使用PJSIP和SIPHON,但不知何故失败了很多错误。 然后我尝试了LinPhone ,它工作正常。 然后将LinPhone项目中的文件复制到我的项目中,然后继续工作。 (还有什么我应该复制在我的项目中去 – 我已经复制了苹果达尔文包括&lib文件夹在我的应用程序)我想在应用程序中使用G711(A和U)编解码器,我找不到头文件的,请任何人可以build议我如何使用我的应用程序中的LinPhone库的G711编解码器? 也有人可以告诉我,在没有videofunction的情况下,掩盖SIP应用需要多less天? (仅限于GSM,Speex,G711编解码器的audio呼叫)在没有任何SIP应用知识的情况下,将需要多less天的时间和专家和中级开发人员才能制作出这样的应用? (根据你的任何粗糙的想法。) 是否有任何其他良好的开源库可以轻松地使用这样的应用程序? 或任何types的教程可用? (LinPhone的文档不符合标准)。 我正朝着正确的方向走吗?

使用AVPlayer的MTAudioProcessingTap和远程URL进行AVFoundationaudio处理

在AVAudioMix和MTAudioProcessingTap上有一些珍贵的文档,它们允许处理应用于AVFoundation(iOS上)的媒体资产的音轨(PCM访问)。 本文以及WWDC 2012会议中的简短提及是我所find的。 我已经得到了在这里描述的设置工作本地媒体文件,但它似乎并没有与远程文件(即HLSstreamURL)的工作。 这个预期的唯一迹象是本技术问答结束时的注释: AVAudioMix只支持基于文件的资产。 有人知道更多吗? 当资产不是基于文件时,真的没有办法访问audioPCM数据吗? 任何人都可以find有关MTAudioProcessingTap的实际苹果文档?

如何正确处理audio中断?

我已经创build了一个OpenGL 3D游戏,利用OpenAL进行audio播放,如果在audio设备初始化之前按下“Home”button,则会遇到audio丢失的问题。 我试图挂接到audio会话中断处理程序,但我的callback永远不会被调用。 无论我是否最小化或最大化我的申请。 我的“OpenALInterruptionListener”永远不会被调用。 我究竟做错了什么? AudioSessionInitialize(NULL, NULL, OpenALInterriptionListener, this); void OpenALInterriptionListener(void * inClientData, UInt32 inInterruptionState) { OpenALDevice * device = (OpenALDevice *) inClientData; if (inInterruptionState == kAudioSessionBeginInterruption) { alcSuspendContext(_context); alcMakeContextCurrent(_context); AudioSessionSetActive(false); } else if (inInterruptionState == kAudioSessionEndInterruption) { UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); AudioSessionSetActive(true); alcMakeContextCurrent(_context); alcProcessContext(_context); } }

看似随机文件损坏使用AVAudioRecorder(有时文件不能播放) – iOS

在我正在开发的应用程序中,我或多或less地碰到了一堵砖墙。 在应用程序中,您可以input一个视图,在标准表视图中列出所有本地保存的audio文件。 从这里你可以点击它们来播放它们,或者点击下面的一个loggingbutton来创build一个新的logging,然后自动保存到应用程序沙箱中。 现在所有这些在大多数情况下都可以很好地工作。 我可以坐下来做录音,然后回放。 我可以一直坐下来testing,大约45分钟,没有任何问题。 然后突然在随机的时候,我会遇到一个非常奇怪的问题。 问题在于,logging器突然开始只保存无法播放的损坏文件,无论多长时间录制,其大小都是4096字节。 我以完全标准的方式使用AVAudioRecorder,如下所示: // Specific settings for the audio recording NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey, [NSNumber numberWithInt:8], AVEncoderBitRateKey, [NSNumber numberWithInt: 2], AVNumberOfChannelsKey, [NSNumber numberWithFloat:22000.0], AVSampleRateKey, nil]; NSError *error = nil; audioRecorder = [[AVAudioRecorder alloc] initWithURL:contentURL settings:recordSettings error:&error]; audioRecorder.delegate = self; 我开始这样的录音: if (!isRecording) { isRecording = […]