【问题标题】:tracksWithMediaType returns 0 tracks sometimestrackWithMediaType 有时会返回 0 个轨道
【发布时间】:2016-07-18 14:29:37
【问题描述】:

在我的应用程序中,我合并了几个 .m4a 音频文件。为了组合音频文件,我使用下面的代码。

CMTime nextClipStartTime = kCMTimeZero;
AVMutableComposition *composition = [[AVMutableComposition alloc] init];
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];


for(NSString * str in filesNamesArray)
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:str];
    NSURL *url = [[NSURL alloc] initFileURLWithPath:path];

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

    NSArray *tracks = [avAsset tracksWithMediaType:AVMediaTypeAudio];
    if ([tracks count] == 0)
    {
        NSLog(@"Tracks = %lu",(unsigned long)[tracks count]);
        return;
    }
    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);
}

有时“tracksWithMediaType”会返回空数组。为什么会发生这种情况以及任何帮助将不胜感激。

【问题讨论】:

    标签: ios objective-c iphone avaudiorecorder


    【解决方案1】:

    当您创建 AVAsset 时:

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

    资产必须在准备好使用之前加载其轨道:

    [avAsset loadValuesAsynchronouslyForKeys:@"tracks" completionHandler: ^{
     AVKeyValueStatus status = [avAsset statusOfValueForKey:@"tracks" error:nil];
     if (status == AVKeyValueStatusLoaded) { 
         // Asset is ready now
    
     }
    }];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2016-08-15
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      相关资源
      最近更新 更多