Tag: audio

从AVAssetReaderOutput读取数据时iOS 5.0崩溃

我有这个代码片段用于从AVAssetReaderOutput读取数据,该方法在iOS 4.0中工作正常,但是在5.0中它崩溃到最后与不良访问,不知道为什么,任何人有任何input? AVAssetReaderOutput *output=[myOutputs objectAtIndex:0]; int totalBuff=0; while(TRUE) { CMSampleBufferRef ref=[output copyNextSampleBuffer]; if(ref==NULL) break; //copy data to file //read next one AudioBufferList audioBufferList; NSMutableData *data=[[NSMutableData alloc] init]; CMBlockBufferRef blockBuffer; CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(ref, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, 0, &blockBuffer); for( int y=0; y<audioBufferList.mNumberBuffers; y++ ) { AudioBuffer audioBuffer = audioBufferList.mBuffers[y]; Float32 *frame = audioBuffer.mData; NSLog(@"Gonna write %d", […]

WebKit Audio在电力循环后首次在iOS 6(iPhone 5)上失真

在iOS 6下,我一直在使用HTML5中的webkitAudioContext处理一个难以捉摸的audio失真问题。在其他情况下,可能会发生这种情况,但唯一可以获得100%repro的方法是在设备重新上电后首次访问我的页面。 看起来如果你在访问这个网页之前访问了任何有audiofunction的网页,问题就不会发生。 失真只发生在webkitAudioContext.decodeAudioData()产生的audio,然后通过webkitAudioContext.createBufferSource()播放。 webkitAudioContext.createMediaElementSource()的audio播放不会变形。 我是否缺less一些初始化步骤? 下面是我作为bug报告提交给苹果公司的完整代码和HTML(但没有收到回复): <!DOCTYPE html> <html> <head> <script type="text/javascript"> var buffer = null; var context = null; var voice = null; function load_music(file) { context = new webkitAudioContext(); voice = context.createBufferSource(); var request = new XMLHttpRequest(); request.onload = function() { context.decodeAudioData(request.response, function(result) { buffer = result; document.getElementById("start").value = "Start"; }); }; […]

除了“tock”以外,还有其他iOS系统的声音吗?

我已经在我的第一个iPhone应用程序上实现了另一个键盘。 我想按下button时播放声音。 当按下标准键盘时的默认点击声音会很好,但我不知道如何得到这个声音。 在这个答案中,我发现了如何发挥'tock'的声音: 播放系统声音而不导入自己的 我得到这个工作很容易,但它是一个非常响亮的声音。 我已经search堆栈溢出和Xcode的帮助可用的iOS系统的声音,而不是'tock',我找不到它们。 是否有其他内置的声音,甚至可能是默认的键盘声音,我可以使用?

iOS AVFoundation导出会话缺lessaudio

我正在使用iOS AVFoundation框架,我能够成功合并video轨道,图像叠加和文本叠加。 但是,我的输出文件不能保持我的原始源video完整的audio。 如何确保来自其中一个video的audio来源保留在我创build的新video中? 编辑 *使用此代码有一个很好的例子,如何做到这一点创build一个video(与原始audio)。 在处理AVFoundationvideo时,我需要分开包含音轨。 希望这可以帮助别人。 AVAssetTrack *videoTrack = nil; AVAssetTrack *audioTrack = nil; CMTime insertionPoint = kCMTimeZero; if([[url tracksWithMediaType:AVMediaTypeVideo] count] != 0) { videoTrack = [url tracksWithMediaType:AVMediaTypeVideo][0]; } if([[url tracksWithMediaType:AVMediaTypeAudio] count] != 0) { audioTrack = [url tracksWithMediaType:AVMediaTypeAudio][0]; } // Insert the video and audio tracks from AVAsset if (videoTrack != nil) […]

使用AVMutableAudioMix调整资产内曲目的音量

我将一个AVMutableAudioMix应用于我创build的资产,资产通常包含3-5个音轨(无video)。 我们的目标是在整个播放时间内添加几个音量命令,也就是说我想在1秒时将音量设置为0.1,在2秒时将音量设置为0.5,然后在3秒时将其设置为0.1。 我只是现在试图用AVPlayer做这个,但是以后也会在将AVSession导出到一个文件时使用它。 问题是,它似乎只关心第一个卷命令,似乎忽略了所有后来的卷命令。 如果第一个命令是将音量设置为0.1,则该资源的其余部分将成为此音轨的永久音量。 尽pipe看起来应该可以添加任意数量的这些命令,但是AVMutableAudioMix的“inputParameters”成员实际上是一个NSArray,它是一系列AVMutableAudioMixInputParameter的。 任何人都明白这一点? 编辑:我想这部分了。 我可以在某个曲目中添加几个音量变化。 但时机似乎没有办法,我不知道如何解决这个问题。 例如,在5秒的时间内将音量设置为0.0,然后在10秒钟的时间点为1.0,然后在15秒钟的时候回到0.0,这样您就可以假定音量会在这些时间点迅速地开始和closures,但结果总是非常不可预测的,的声音正在进行,有时还在工作(如setVolume所预料的,突然的音量变化)。 如果有人有AudioMix的工作,请提供一个例子。

在更新到3.3.0之后,Cordovavideo/audio将不会从cdvfile:// urls播放

我的Cordova应用程序从服务器下载audio文件,并使其可在设备脱机时播放。 这一切都工作正常,直到昨天,当我升级到最新版本。 最初,下载(通过文件传输插件)和播放(通过媒体插件)都不起作用。 进一步研究,我发现fileSystem.root.fullPath现在返回一个相对应用程序本地web根文件夹的path,但它用来返回一个完全限定的path。 cordova现在build议使用fileSystem.root.toURL()而不是( http://cordova.apache.org/news/2014/02/10/plugins-release.html )。 这确实解决了文件传输问题。 但是,使用新的URLscheme不适用于audio文件。 当试图播放文件时,出现"Cannot use audio file from resource 'cdvfile://localhost/persistent/path/to/file'" 。 检查cordova问题跟踪器我发现有人报告了同样的问题的video文件以及( https://issues.apache.org/jira/browse/CB-6051 )。 似乎cordova还没有更新CDVSound插件来处理新的文件名格式,但如果我能像以前一样访问完全限定的path,它可能仍然有效。 我已经看了新的代码和文档,但还没有find办法做到这一点。 有没有人设法从文件插件获得完全合格的path?

iOS:audio录制文件格式

我正在实施audio录制。 它适用于caf & wave格式。 但问题是文件大小太大。 所以,任何人都可以帮助我loggingaudio格式,也发挥在窗口和文件大小是低的。 我试过的代码如下: dirPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); docsDir = [dirPaths objectAtIndex:0]; NSString *soundFilePath = [docsDir stringByAppendingPathComponent:@"sound.wave"]; NSLog(@"%@",soundFilePath); NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey, [NSNumber numberWithInt:16], AVEncoderBitRateKey, [NSNumber numberWithInt: 2], AVNumberOfChannelsKey, [NSNumber numberWithFloat:8000.0], AVSampleRateKey, [NSNumber numberWithInt:8], AVLinearPCMBitDepthKey, nil]; NSError *error = nil; audioRecorder […]

用最小的文件大小在iPhone上录制audio

我想用iPhone录制audio,然后上传到服务器。 我可以录制audio,但是我的问题是应该使用哪种格式来录制audio,以便录音机生成文件最小的文件。

iOS SoundTouch框架BPM检测示例

我search了整个networking,找不到关于如何使用SoundTouch库进行节拍检测的教程。 (注意:在这之前我没有C ++的经验,我知道C,Objective-C和Java,所以我可能会搞砸了一些,但是编译。 我添加了框架到我的项目,并设法得到以下编译: NSString *path = [[NSBundle mainBundle] pathForResource:@"song" ofType:@"wav"]; NSData *data = [NSData dataWithContentsOfFile:path]; player =[[AVAudioPlayer alloc] initWithData:data error:NULL]; player.volume = 1.0; player.delegate = self; [player prepareToPlay]; [player play]; NSUInteger len = [player.data length]; // Get the length of the data soundtouch::SAMPLETYPE sampleBuffer[len]; // Create buffer array [player.data getBytes:sampleBuffer length:len]; // Copy the […]

与AVAudioSessionCategoryPlayAndRecord组合在一起的低录音量

当我设置: [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error:NULL]; …录音和播放工作正常,只是播放音量比当我只是播放相同的声音,没有logging和设置PlayAndRecord时低60%左右。 我需要获得高音量(为了检查用户是否在麦克风中吹),因此我开始了录音。 但没有设置AVAudio..PlayandRecord,我无法播放任何声音在此期间。 这就是我实施这个命令的原因。 任何帮助? 克里斯