使用 HTTP Live Streaming 替代音轨

2024-02-20

当 HLS 流准备好播放时,我正在生成可用音轨的列表。我可以很好地访问可用的音轨,但我很难为每个轨道提取正确的“标题”。

我在用着苹果的测试流 https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8有两个音轨。我用这个提取曲目...

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 对象中提取标题吗?

Thanks!


您必须从元数据中获取它,如下所示

    NSArray *metaDatas = [AVMetadataItem metadataItemsFromArray:opt.commonMetadata withKey:@"title" keySpace:@"comn"];
    if (metaDatas.count > 0) {
      NSString *title = ((AVMetadataItem*)[metaDatas objectAtIndex:0]).stringValue;
      NSLog(@"title: %@", title);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HTTP Live Streaming 替代音轨 的相关文章

随机推荐