当HLS流准备播放时,我正在生成可用音轨的列表。我可以很好地访问可用的音频轨道,但是我很难为每个轨道提取正确的“标题”。
我正在使用Apple's test stream,它有两个音轨。我用这个提取曲目......
availableAudioTrackList = [[NSMutableArray alloc] init];
AVMediaSelectionGroup *audioTracks = [player.currentItem.asset mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicAudible];
for (int i = 0; i < [audioTracks.options count]; i++) {
AVMediaSelectionOption *opt = audioTracks.options[i];
NSLog(@"Opt: %@", opt);
[availableAudioTrackList insertObject:opt.displayName atIndex:i];
}
NSLog(@"Audio Track Array: %@", availableAudioTrackList);
我的输出显示'opt.displayName'没有给出BipBop Audio 1和BipBop Audio 2的标题(这些是我希望能够使用的区别名称)。
... Opt: <AVMediaSelectionKeyValueOption: 0x15dad0d0, locale = en, mediaType = 'soun', title = BipBop Audio 1, default = YES>
... Opt: <AVMediaSelectionKeyValueOption: 0x15dad100, locale = en, mediaType = 'soun', title = BipBop Audio 2>
...Audio Track Array: ( English, English )
知道如何从AVMediaSelectionOption对象中提取标题?
谢谢!
答案 0 :(得分:3)
您必须按如下方式从元数据中获取
NSArray *metaDatas = [AVMetadataItem metadataItemsFromArray:opt.commonMetadata withKey:@"title" keySpace:@"comn"];
if (metaDatas.count > 0) {
NSString *title = ((AVMetadataItem*)[metaDatas objectAtIndex:0]).stringValue;
NSLog(@"title: %@", title);
}