首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVURLAsset加载webvtt文件

AVURLAsset加载webvtt文件
EN

Stack Overflow用户
提问于 2015-10-14 10:29:57
回答 2查看 1.3K关注 0票数 1

我正在尝试使用AVURLAsset加载webvtt文件。

下面是我的代码。

代码语言:javascript
复制
    NSString *urlAddress = @"http://somewhere/some.vtt";
    NSURL *urlStream = [[NSURL alloc] initWithString:urlAddress];
    AVAsset *avAsset = [AVURLAsset URLAssetWithURL:urlStream options:nil];

    NSArray *requestKeys = [NSArray arrayWithObjects:@"tracks",@"playable",nil];
    [avAsset loadValuesAsynchronouslyForKeys:requestKeys completionHandler:^{
    dispatch_async(dispatch_get_main_queue(),^{

        //complete block here
        AVKeyValueStatus status =[avAsset statusOfValueForKey:@"tracks" error:nil];
        if(status == AVKeyValueStatusLoaded) {

            //loaded block !
            //Question 1
            CMTime assetTime = [avAsset duration];
            Float64 duration = CMTimeGetSeconds(assetTime);
            NSLog(@"%f", duration);

            //Question 2
            AVMediaSelectionGroup *subtitle = [avAsset mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicLegible];
            NSLog(@"%@", subtitle);
        }
        else {
            //don’t load block ! 
        }
    });
}];

问题1:它总是进入“已加载数据块”,但我发现avAsset的持续时间不完整,这意味着数据未加载?该怎么修改呢?

问题2:我正在尝试使用它作为我的avplayer的副标题,但是AVMediaSelectionGroup总是空的。我该怎么办?

EN

回答 2

Stack Overflow用户

发布于 2015-10-14 10:49:18

对于问题1,将duration添加到您的密钥:

代码语言:javascript
复制
NSArray *requestKeys = @[@"tracks",@"playable", @"duration"];
票数 0
EN

Stack Overflow用户

发布于 2016-06-21 21:05:03

我在这里发布了一个解决方案:https://stackoverflow.com/a/37945178/171933基本上你需要使用一个AVMutableComposition来加入带有字幕的视频,然后回放那个构图。

关于你的第二个问题:根据this statement by an Apple engineer (bottom of the page)的说法,似乎只有当这些“特征”已经被烘焙到媒体文件或你的m3u8流中时,mediaSelectionGroupForMediaCharacteristic才被支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33115614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档