gpt4 book ai didi

ios - tracksWithMediaType 有时会返回 0 个轨道

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:47 26 4
gpt4 key购买 nike

在我的应用程序中,我组合了几个 .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”返回空数组。为什么会发生这种情况,我们将不胜感激任何帮助。

最佳答案

当你创建 AVAsset 时:

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

Assets 必须在准备使用前加载其轨道:

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

}
}];

关于ios - tracksWithMediaType 有时会返回 0 个轨道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38439299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com