Я хочу добавить два аудиофайла в iPhone. Пожалуйста, помогите мне сделать это.Как добавить два аудиофайла?
ответ
У меня есть решение; Ниже приведен пример кода.
AVMutableComposition* composition = [AVMutableComposition composition];
AVURLAsset* audioAsset1 = [[AVURLAsset alloc]initWithURL:[NSURL fileURLWithPath:filePath1] options:nil];
AVURLAsset* audioAsset2 = [[AVURLAsset alloc]initWithURL:[NSURL fileURLWithPath:filePath2] options:nil];
AVMutableCompositionTrack *audioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio
preferredTrackID:kCMPersistentTrackID_Invalid];
[audioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset1.duration)
ofTrack:[[audioAsset1 tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]
atTime:kCMTimeZero
error:&error];
[audioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset2.duration)
ofTrack:[[audioAsset2 tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]
atTime:audioAsset1.duration
error:&error];
Наконец, мы должны экспортировать его в виде отдельного файла с помощью AVAssetExportSession
.
Примечание: Это будет работать только для .M4A файлов
- (BOOL) combineVoices1
{
NSError *error = nil;
BOOL ok = NO;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
CMTime nextClipStartTime = kCMTimeZero;
//Create AVMutableComposition Object.This object will hold our multiple AVMutableCompositionTrack.
AVMutableComposition *composition = [[AVMutableComposition alloc] init];
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack setPreferredVolume:0.8];
NSString *soundOne =[[NSBundle mainBundle]pathForResource:@"test1" ofType:@"caf"];
NSURL *url = [NSURL fileURLWithPath:soundOne];
AVAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *tracks = [avAsset tracksWithMediaType:AVMediaTypeAudio];
AVAssetTrack *clipAudioTrack = [[avAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration) ofTrack:clipAudioTrack atTime:kCMTimeZero error:nil];
AVMutableCompositionTrack *compositionAudioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack setPreferredVolume:0.3];
NSString *soundOne1 =[[NSBundle mainBundle]pathForResource:@"test" ofType:@"caf"];
NSURL *url1 = [NSURL fileURLWithPath:soundOne1];
AVAsset *avAsset1 = [AVURLAsset URLAssetWithURL:url1 options:nil];
NSArray *tracks1 = [avAsset1 tracksWithMediaType:AVMediaTypeAudio];
AVAssetTrack *clipAudioTrack1 = [[avAsset1 tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil];
AVMutableCompositionTrack *compositionAudioTrack2 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack2 setPreferredVolume:1.0];
NSString *soundOne2 =[[NSBundle mainBundle]pathForResource:@"song" ofType:@"caf"];
NSURL *url2 = [NSURL fileURLWithPath:soundOne2];
AVAsset *avAsset2 = [AVURLAsset URLAssetWithURL:url2 options:nil];
NSArray *tracks2 = [avAsset2 tracksWithMediaType:AVMediaTypeAudio];
AVAssetTrack *clipAudioTrack2 = [[avAsset2 tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset2.duration) ofTrack:clipAudioTrack2 atTime:kCMTimeZero error:nil];
AVAssetExportSession *exportSession = [AVAssetExportSession
exportSessionWithAsset:composition
presetName:AVAssetExportPresetAppleM4A];
if (nil == exportSession) return NO;
NSString *soundOneNew = [documentsDirectory stringByAppendingPathComponent:@"combined10.m4a"];
//NSLog(@"Output file path - %@",soundOneNew);
// configure export session output with all our parameters
exportSession.outputURL = [NSURL fileURLWithPath:soundOneNew]; // output path
exportSession.outputFileType = AVFileTypeAppleM4A; // output file type
// perform the export
[exportSession exportAsynchronouslyWithCompletionHandler:^{
if (AVAssetExportSessionStatusCompleted == exportSession.status) {
NSLog(@"AVAssetExportSessionStatusCompleted");
} else if (AVAssetExportSessionStatusFailed == exportSession.status) {
// a failure may happen because of an event out of your control
// for example, an interruption like a phone call comming in
// make sure and handle this case appropriately
NSLog(@"AVAssetExportSessionStatusFailed");
} else {
NSLog(@"Export Session Status: %d", exportSession.status);
}
}];
return YES;
}
Я также использую подобный метод. Но получить относительно больший файл. Знаете ли вы какой-либо метод уменьшения размера. Любая идея настроить частоту дискретизации вывода? – ratul
Вы можете использовать другой формат вывода, а не m4a – Superdev
Да, я нашел его тогда. Текущее имя экспорта контролирует качество вывода. В любом случае спасибо чуваку. – ratul
- 1. Как слить два аудиофайла .wav
- 2. Сравните два аудиофайла
- 3. iPhone: Смешать два аудиофайла программно?
- 4. Сравните два аудиофайла в iOS
- 5. Как наложить два аудиофайла с помощью ffmpeg
- 6. Как играть два аудиофайла вместе в iOS
- 7. Как сравнить два аудиофайла в iphone?
- 8. Android объединяет два аудиофайла в один
- 9. Listview воспроизводит два аудиофайла при нажатии кнопки
- 10. объединить два аудиофайла с инструментом командной строки
- 11. Сравните два аудиофайла и найдите разрез
- 12. Java сравнить два аудиофайла с отпечатком пальца
- 13. Пытается реализовать два аудиофайла на веб-странице
- 14. Объединить два аудиофайла и воспроизвести итоговый файл
- 15. Как мы можем сделать часть одного аудиофайла. например, я хочу сделать два аудиофайла из одного аудиофайла в Android.
- 16. Как я могу наложить два аудиофайла на C#?
- 17. Как объединить два аудиофайла в один аудиофайл в android?
- 18. Как играть одновременно два аудиофайла из библиотеки iPod?
- 19. Запуск аудиофайла аудиофайла аудиофайла с помощью события click в raphael.js
- 20. Как добавить два решения
- 21. Как добавить два stringBuilders?
- 22. Как добавить два java.lang.Numbers?
- 23. Как добавить два потока?
- 24. Как добавить два набора
- 25. Как добавить два указателя?
- 26. Как получить продолжительность аудиофайла?
- 27. Как определить Путь аудиофайла
- 28. Как добавить поле аудиофайла в таблицу базы данных?
- 29. Смешайте два аудиофайла с помощью API-интерфейса Xuggler MediaTool
- 30. Смешайте два аудиофайла с помощью ffmpeg на платформе android
, где вы хотите это сделать? ПК? на iphone? –
Это для iPhone. – jfalexvijay