//里面阿拉伯数字转为汉字的方法调用 请看我另一篇文章
https://www.jianshu.com/p/1e77eb744e48
- (void)firstReadVideo:(NSString *)readPathString interger:(CGFloat) i{
NSString *temp = nil;
if ([readPathString containsString:@"."]) {
NSArray *arr = [readPathString componentsSeparatedByString:@"."];
NSString *firstString = arr.firstObject;
readPathString = [self translation:firstString];
NSString *lastString = arr.lastObject;
if (lastString.length ==1) {
for(int i =0; i < [readPathString length]; i++){
temp = [readPathString substringWithRange:NSMakeRange(i,1)];
[self.fileNameArray addObject:temp];
}
if ([lastString isEqualToString:@"0"]) {
lastString = nil;
lastString = @"零";
[self.fileNameArray addObject:@"点"];
[self.fileNameArray addObject:lastString];
}else{
lastString = [self translation:lastString];
[self.fileNameArray addObject:@"点"];
[self.fileNameArray addObject:lastString];
}
}else if(lastString.length ==2){
readPathString = [self translation:firstString];
for(int i =0; i < [readPathString length]; i++){
temp = [readPathString substringWithRange:NSMakeRange(i,1)];
[self.fileNameArray addObject:temp];
}
[self.fileNameArray addObject:@"点"];
NSString *afterFirstString = [lastString substringWithRange:NSMakeRange(0, 1)];
NSString *afterLastString = [lastString substringWithRange:NSMakeRange(1, 1)];
if (afterFirstString.integerValue ==0) {
afterFirstString = @"零";
[self.fileNameArray addObject:afterFirstString];
}else{
afterFirstString = [self translation:afterFirstString];
[self.fileNameArray addObject:afterFirstString];
}
if (afterLastString.integerValue ==0) {
afterLastString = @"零";
[self.fileNameArray addObject:afterLastString];
}else{
afterLastString = [self translation:afterLastString];
[self.fileNameArray addObject:afterLastString];
}
}
}
AVMutableComposition *composition = [AVMutableComposition composition];
CMTime allTime = kCMTimeZero;
for (NSInteger i = 0; i < self.fileNameArray.count; i++) {
NSString *auidoPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",self.fileNameArray[i]] ofType:@"wav"];
AVURLAsset *audioAsset = [AVURLAsset assetWithURL:[NSURL fileURLWithPath:auidoPath]];
// 音频轨道
AVMutableCompositionTrack *audioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:0];
// 音频素材轨道
AVAssetTrack *audioAssetTrack = [[audioAsset tracksWithMediaType:AVMediaTypeAudio] firstObject];
// 音频合并 - 插入音轨文件
[audioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset.duration) ofTrack:audioAssetTrack atTime:allTime error:nil];
// 更新当前的位置
allTime = CMTimeAdd(allTime, audioAsset.duration);
}
// 合并后的文件导出 - `presetName`要和之后的`session.outputFileType`相对应。
AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetAppleM4A];
NSString *outPutFilePath = [[self.filePath stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"xindong.m4a"];
if ([[NSFileManager defaultManager] fileExistsAtPath:outPutFilePath]) {
[[NSFileManager defaultManager] removeItemAtPath:outPutFilePath error:nil];
}
// 查看当前session支持的fileType类型
NSLog(@"---%@",[session supportedFileTypes]);
session.outputURL = [NSURL fileURLWithPath:outPutFilePath];
session.outputFileType = AVFileTypeAppleM4A; //与上述的`present`相对应
session.shouldOptimizeForNetworkUse = YES; //优化网络
[session exportAsynchronouslyWithCompletionHandler:^{
if (session.status == AVAssetExportSessionStatusCompleted) {
NSLog(@"合并成功----%@", outPutFilePath);
NSURL *url = [NSURL fileURLWithPath:outPutFilePath];
self.player1 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
self.player1.delegate = self;
[self.player1 play];
} else {
// 其他情况, 具体请看这里`AVAssetExportSessionStatus`.
// 播放失败
}
}];
}











网友评论