2012-12-06 2 views
1

4 개의 오디오 파일을 병합하려고합니다. 코드는 다음과 같습니다ios에서 오디오 파일 병합과 관련된 문제가 발생했습니다.

- (BOOL) combineVoices { 

NSMutableArray * arr=[[NSMutableArray alloc] init]; 

[arr addObject:@"player_4_full"]; 
[arr addObject:@"event_1_1_1"]; 
[arr addObject:@"team_2_1"]; 
[arr addObject:@"event_1_1_2"]; 

NSError *error = nil; 
BOOL ok = NO; 

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]; 


for(NSString * str in arr) 
{ 
    NSString *path = [[NSBundle mainBundle] pathForResource:str ofType:@"mp3"]; 
    NSURL *url = [[NSURL alloc] initFileURLWithPath:path]; 

    AVAsset *avAsset = [[AVURLAsset alloc] initWithURL:url options:nil]; 

    NSArray *tracks = [avAsset tracksWithMediaType:AVMediaTypeAudio]; 
    if ([tracks count] == 0) 
     return NO; 

    NSLog(@"%@",avAsset); 
    CMTimeRange timeRangeInAsset = CMTimeRangeMake(kCMTimeZero, [avAsset duration]); 
    AVAssetTrack *clipAudioTrack = [[avAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]; 
    ok = [compositionAudioTrack insertTimeRange:timeRangeInAsset ofTrack:clipAudioTrack atTime:nextClipStartTime error:&error]; 
    if (!ok) { 
     NSLog(@"Current Video Track Error: %@",error); 
    } 
    nextClipStartTime = CMTimeAdd(nextClipStartTime, timeRangeInAsset.duration); 
} 

NSLog(@"%@",composition); 
self.item = [[AVPlayerItem alloc] initWithAsset:composition]; 
self.p =[AVPlayer playerWithPlayerItem:item]; 
[self.p play]; 
return YES; 
} 

문제는 내가 시뮬레이터에서 소리를 재생할 수 있습니다. 하지만 기기에서 재생할 때 헤드폰에서만 소리가 나지만 스피커에서는 듣지 못합니다.

답변

1

기기가 소프트 뮤트 상태 일 수 있습니다. 기기가 iPhone 인 경우 사이드 스위치를 전환 해보십시오.

iPad에는 재미있는 음소거가 있습니다. iPad 스피커를 통해 특정 앱에서 음향이 들리지 않을 수 있습니다. 음량이 올라가고 헤드폰으로 소리가 들릴 수도 있습니다. 이 문제를 해결하려면 맨 왼쪽 (*)

  • 에있는 스피커 아이콘을 눌러 바로
  • 왼쪽에서 홈 버튼을

    • 두 번 탭 아래
    • 출근을 지시를 따라야합니다 그것은 보여
    • 다시 한 번 응용 프로그램의 소리를 들어 재생 버튼 아래에 "오프 음소거"해야

    enter image description here

    (*) 스피커 아이콘이 보이지 않는 경우이 기능은 사이드 스위치에 지정됩니다. 이 경우 사이드 스위치를 켜기 만하면 iPad 스피커의 음을 소거해야합니다. 사이드 스위치 기능을 회전 잠금 또는 음소거로 설정하는 옵션은 설정에서 찾을 수 있습니다.

  • 1

    설정 AVAudioSession 전에 재생

    AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
    [audioSession setCategory:AVAudioSessionCategorySoloAmbient withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil]; 
    
    관련 문제