Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone JavaScriptYouTubeAPI:永久缓冲-UIWebView iOS_Iphone_Ios_Uiwebview_Youtube_Youtube Api - Fatal编程技术网

Iphone JavaScriptYouTubeAPI:永久缓冲-UIWebView iOS

Iphone JavaScriptYouTubeAPI:永久缓冲-UIWebView iOS,iphone,ios,uiwebview,youtube,youtube-api,Iphone,Ios,Uiwebview,Youtube,Youtube Api,我正在UIWebView中使用YouTube API 我已经用我在UIWebView中加载的HTML5播放器创建了一个NSString。在iphone5和iPad上,一切都能完美运行 但是,如果我使用iPhone4测试应用程序,播放器会一直返回缓冲状态。只有当我明确按下播放按钮时,播放器才会开始播放,而不会再次停止进行缓冲。看起来,虽然视频已经被缓冲,播放器仍然给我这个状态 有人知道这个问题吗?有什么想法吗 提前非常感谢 在LBYouTubePlayerViewController.m文件中 在

我正在UIWebView中使用YouTube API

我已经用我在UIWebView中加载的HTML5播放器创建了一个NSString。在iphone5和iPad上,一切都能完美运行

但是,如果我使用iPhone4测试应用程序,播放器会一直返回缓冲状态。只有当我明确按下播放按钮时,播放器才会开始播放,而不会再次停止进行缓冲。看起来,虽然视频已经被缓冲,播放器仍然给我这个状态

有人知道这个问题吗?有什么想法吗


提前非常感谢

在LBYouTubePlayerViewController.m文件中

在旧方法上替换以下方法

然后测试

      -(NSURL*)_extractYouTubeURLFromFile:(NSString *)html error:(NSError *__autoreleasing *)error {
NSString *JSONStart = nil;
// NSString *JSONStartFull = @"ls.setItem('PIGGYBACK_DATA', \")]}'";
NSString *JSONStartFull = @"bootstrap_data = \")]}'";
NSString *JSONStartShrunk = [JSONStartFull stringByReplacingOccurrencesOfString:@" " withString:@""];
if ([html rangeOfString:JSONStartFull].location != NSNotFound)
    JSONStart = JSONStartFull;
else if ([html rangeOfString:JSONStartShrunk].location != NSNotFound)
    JSONStart = JSONStartShrunk;

if (JSONStart != nil) {
    NSScanner* scanner = [NSScanner scannerWithString:html];
    [scanner scanUpToString:JSONStart intoString:nil];
    [scanner scanString:JSONStart intoString:nil];

    NSString *JSON = nil;
    [scanner scanUpToString:@"}\";" intoString:&JSON];
    JSON = [NSString stringWithFormat:@"%@}",JSON]; // Add closing bracket } to get vallid JSON again
    // [scanner scanUpToString:@"\");" intoString:&JSON];
    JSON = [self _unescapeString:JSON];
    NSError* decodingError = nil;
    NSDictionary* JSONCode = nil;

    // First try to invoke NSJSONSerialization (Thanks Mattt Thompson)

    id NSJSONSerializationClass = NSClassFromString(@"NSJSONSerialization");
    SEL NSJSONSerializationSelector = NSSelectorFromString(@"dataWithJSONObject:options:error:");
    if (NSJSONSerializationClass && [NSJSONSerializationClass respondsToSelector:NSJSONSerializationSelector]) {
        JSONCode = [NSJSONSerialization JSONObjectWithData:[JSON dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:&decodingError];
    }
    else {
        JSONCode = [JSON objectFromJSONStringWithParseOptions:JKParseOptionNone error:&decodingError];
    }

    if (decodingError) {
        // Failed

        *error = decodingError;
    }
    else {
        // Success

        NSDictionary *dict = [JSONCode objectForKey:@"content"];
        NSDictionary *dictTemp = [dict objectForKey:@"video"];
        NSArray* videos = [dictTemp objectForKey:@"fmt_stream_map"];

        NSString* streamURL = nil;
        if (videos.count) {
            NSString* streamURLKey = @"url";

            if (self.quality == LBYouTubePlayerQualityLarge) {
                streamURL = [[videos objectAtIndex:0] objectForKey:streamURLKey];
            }
            else if (self.quality == LBYouTubePlayerQualityMedium) {
                unsigned int index = MAX(0, videos.count-2);
                streamURL = [[videos objectAtIndex:index] objectForKey:streamURLKey];
            }
            else {
                streamURL = [[videos lastObject] objectForKey:streamURLKey];
            }
        }

        if (streamURL) {
            return [NSURL URLWithString:streamURL];
        }
        else {
            *error = [NSError errorWithDomain:kLBYouTubePlayerControllerErrorDomain code:2 userInfo:[NSDictionary dictionaryWithObject:@"Couldn't find the stream URL." forKey:NSLocalizedDescriptionKey]];
        }
    }
}
else {
    *error = [NSError errorWithDomain:kLBYouTubePlayerControllerErrorDomain code:3 userInfo:[NSDictionary dictionaryWithObject:@"The JSON data could not be found." forKey:NSLocalizedDescriptionKey]];
}

return nil;
}

我不使用LBYouTubePlayerView。应用程序中使用UIWebView。无论如何,感谢您的回复!我也面临同样的问题,兄弟,但是,我用了LBYoutubPlayer。。。检查一下,我希望你能解决你的问题。。