您好我正在将html字符串解析为网页视图,以下是我检查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中没有显示任何内容。
答案 0 :(得分: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];
运行该应用,您将在视图中看到该视频。这种方式对我来说非常有效,我认为这对你也有帮助。