1

您好,我正在将 html 字符串解析为 Web 视图,这是我检查 youtube 视频并将它们添加到 iframe 的方法:

- (NSString *)extendYouTubeSupportInHtml:(NSString *)html {
    static dispatch_once_t onceToken;
    static NSRegularExpression *youtubeEmbedRegex;
    dispatch_once(&onceToken, ^{
        youtubeEmbedRegex = [[NSRegularExpression alloc] initWithPattern:@"<object.*src.*/v/(.*?)['|\"].*object\\s*>" options:NSRegularExpressionCaseInsensitive error:nil];
    });
    NSArray *matchs;
    if (html != nil) {

        matchs = [youtubeEmbedRegex matchesInString:html options:0 range:NSMakeRange(0, html.length)];

    }else{
        matchs = nil;
    }

    NSInteger rangeOffset = 0;
    for (NSTextCheckingResult *match in matchs) {    
        NSRange objectRange = NSMakeRange([match rangeAtIndex:0].location + rangeOffset, [match rangeAtIndex:0].length);
        NSRange idRange = NSMakeRange([match rangeAtIndex:1].location + rangeOffset, [match rangeAtIndex:1].length);
        NSString* youtubrId = [html substringWithRange:idRange];

        // Add uniq id to img tag
        NSString* iframe = [NSString stringWithFormat:@"<iframe src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\" allowfullscreen></iframe>", youtubrId];
        html = [html stringByReplacingCharactersInRange:objectRange withString:iframe];

        rangeOffset += iframe.length - objectRange.length;
    }

    return html;
}

这是我显示网络视图的方式:

- (id)initWithFrame:(CGRect)frame dict:(NSDictionary *)dict {
    self = [super initWithFrame:frame];
    if (self) {
        self.webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)] autorelease];
        self.webView.backgroundColor = [UIColor clearColor];
        self.webView.opaque = NO;
        self.webView.delegate = self;
        self.webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        self.webView.scalesPageToFit = NO;
        self.webView.allowsInlineMediaPlayback = YES;
        self.webView.mediaPlaybackRequiresUserAction = NO;

        [self removeBackgroundFromWebView:self.webView];      
        [self addSubview:self.webView];
        self.dictionary = dict;

    }
    return self;
}

我的问题是,当我开始播放视频时 - 内存使用量高达 30MB,视频开始卡顿,音频/视频不匹配,当我关闭它时 - 内存使用量仍然相同。

我在 AudioToolbox 中也有一些漏洞。我正在使用 iOS 6 SDK 和 iOS 6。iOS 6 sdk 破坏了代码 - 现在它在 iOS 5 中没有显示任何内容。

4

1 回答 1

3

这是我在应用程序中播放 youtube 视频的方式。

我正在使用 iFrame 在我的应用程序中加载 youtube 视频。

按照这个步骤,你也会。

创建一个 uiwebview 并将其连接到您的 .h 文件。我的是 _webView。

将此方法添加到您的 .m 文件中。

-(void)embedYouTube{

    NSString *embedHTML = @"<iframe width=\"300\" height=\"250\" src=\"http://www.youtube.com/embed/rOPI5LDo7mg\" frameborder=\"0\" allowfullscreen></iframe>";

    NSString *html = [NSString stringWithFormat:embedHTML];

    [_webView loadHTMLString:html baseURL:nil];
    [self.view addSubview:_webView];

}

我正在使用 youtube 视频中的嵌入代码。(我希望你知道它是什么)

在您的 viewdidload 中调用此方法

[self embedYouTube];

运行应用程序,您将在视图中看到视频。这种方式对我来说非常有效,我认为这对你也有帮助。

于 2013-04-10T05:05:52.263 回答