我如何 trim 使用 EZAudioRecorder 录制音频?
How can I trim an audio recorded with EZAudioRecorder?
我想要 trim 使用 EZAudioRecorder 录制的音频。
我正在将此代码写入 trim 音频。这对于使用 AVAudioRecorder 录制的音频工作正常,但它会触发使用 EZAudioRecorder 的错误块,并出现错误 无法打开文件.
-(BOOL)trimAudiofile{
float audioStartTime=1.0;
float audioEndTime=2.0;//define end time of audio
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd_HH-mm-ss"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryCachesDirectory = [paths objectAtIndex:0];
libraryCachesDirectory = [libraryCachesDirectory stringByAppendingPathComponent:@"Caches"];
NSString *OutputFilePath = [libraryCachesDirectory stringByAppendingFormat:@"/output_%@.m4a", [dateFormatter stringFromDate:[NSDate date]]];
NSURL *audioFileOutput = [NSURL fileURLWithPath:OutputFilePath];
NSURL *audioFileInput=[self testFilePathURL];//<Path of orignal audio file>
if (!audioFileInput || !audioFileOutput)
{
return NO;
}
[[NSFileManager defaultManager] removeItemAtURL:audioFileOutput error:NULL];
AVAsset *asset = [AVAsset assetWithURL:audioFileInput];
AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:asset
presetName:AVAssetExportPresetAppleM4A];
if (exportSession == nil)
{
return NO;
}
CMTime startTime = CMTimeMake((int)(floor(audioStartTime * 100)), 100);
CMTime stopTime = CMTimeMake((int)(ceil(audioEndTime * 100)), 100);
CMTimeRange exportTimeRange = CMTimeRangeFromTimeToTime(startTime, stopTime);
exportSession.outputURL = audioFileOutput;
exportSession.timeRange = exportTimeRange;
exportSession.outputFileType = AVFileTypeAppleM4A;
[exportSession exportAsynchronouslyWithCompletionHandler:^
{
if (AVAssetExportSessionStatusCompleted == exportSession.status)
{
NSLog(@"Export OK");
}
else if (AVAssetExportSessionStatusFailed == exportSession.status)
{
NSLog(@"Export failed: %@", [[exportSession error] localizedDescription]);
}
}];
return YES;
}
注意:- 音频文件存在于文档目录中,EZAudioPlayer 也可以播放该文件。
谁能告诉我我哪里做错了?
如有任何帮助,我们将不胜感激。
提前致谢。
当您 AVAudioRecorder 录制的 trim 音频和 EZAudioRecorder 录制的音频时,1.Check 文件格式.
2.You正在尝试在录制音频成功之前导出文件,您必须等到没有录制音频。
谢谢大家..我找到了这个问题的解决方案...!!
我没有关闭音频文件。我在修剪音频之前添加了这段代码,现在一切正常。
即使文档目录中存在文件,我们也需要关闭此文件。
if (self.recorder)
{
[self.recorder closeAudioFile];
}
我想要 trim 使用 EZAudioRecorder 录制的音频。
我正在将此代码写入 trim 音频。这对于使用 AVAudioRecorder 录制的音频工作正常,但它会触发使用 EZAudioRecorder 的错误块,并出现错误 无法打开文件.
-(BOOL)trimAudiofile{
float audioStartTime=1.0;
float audioEndTime=2.0;//define end time of audio
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd_HH-mm-ss"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryCachesDirectory = [paths objectAtIndex:0];
libraryCachesDirectory = [libraryCachesDirectory stringByAppendingPathComponent:@"Caches"];
NSString *OutputFilePath = [libraryCachesDirectory stringByAppendingFormat:@"/output_%@.m4a", [dateFormatter stringFromDate:[NSDate date]]];
NSURL *audioFileOutput = [NSURL fileURLWithPath:OutputFilePath];
NSURL *audioFileInput=[self testFilePathURL];//<Path of orignal audio file>
if (!audioFileInput || !audioFileOutput)
{
return NO;
}
[[NSFileManager defaultManager] removeItemAtURL:audioFileOutput error:NULL];
AVAsset *asset = [AVAsset assetWithURL:audioFileInput];
AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:asset
presetName:AVAssetExportPresetAppleM4A];
if (exportSession == nil)
{
return NO;
}
CMTime startTime = CMTimeMake((int)(floor(audioStartTime * 100)), 100);
CMTime stopTime = CMTimeMake((int)(ceil(audioEndTime * 100)), 100);
CMTimeRange exportTimeRange = CMTimeRangeFromTimeToTime(startTime, stopTime);
exportSession.outputURL = audioFileOutput;
exportSession.timeRange = exportTimeRange;
exportSession.outputFileType = AVFileTypeAppleM4A;
[exportSession exportAsynchronouslyWithCompletionHandler:^
{
if (AVAssetExportSessionStatusCompleted == exportSession.status)
{
NSLog(@"Export OK");
}
else if (AVAssetExportSessionStatusFailed == exportSession.status)
{
NSLog(@"Export failed: %@", [[exportSession error] localizedDescription]);
}
}];
return YES;
}
注意:- 音频文件存在于文档目录中,EZAudioPlayer 也可以播放该文件。
谁能告诉我我哪里做错了? 如有任何帮助,我们将不胜感激。
提前致谢。
1.Check 文件格式.
2.You正在尝试在录制音频成功之前导出文件,您必须等到没有录制音频。
谢谢大家..我找到了这个问题的解决方案...!!
我没有关闭音频文件。我在修剪音频之前添加了这段代码,现在一切正常。
即使文档目录中存在文件,我们也需要关闭此文件。
if (self.recorder)
{
[self.recorder closeAudioFile];
}