gpt4 book ai didi

ios - 如何在 UIWebView 中自动播放 YouTube 视频

转载 作者:IT王子 更新时间:2023-10-29 07:44:01 25 4
gpt4 key购买 nike

我在这里看到了很多关于这个问题的帖子,但仍然找不到完美的答案。

所以我有一个表格 View ,每个单元格里面都有一个播放按钮。当用户点击播放按钮时,我将 UIWebView 添加到此单元格,然后播放 YouTube 视频。

static NSString *youTubeVideoHTML = @"<html>\
<body style=\"margin:0;\">\
<iframe class=\"youtube-player\" type=\"text/html\" width=\"%0.0f\" height=\"%0.0f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\">\
</iframe>\
</body>\
</html>";


- (void)playVideoWithId:(NSString *)videoId {
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId];

[self loadHTMLString:html baseURL:nil];
}

问题:

这段代码实际上并没有像我想要的那样播放视频,它只是启动 YouTube 播放器并使用 YouTube 红色播放按钮显示它。只有当用户点击红色按钮时,视频才会开始播放。
所以用户必须点击两个按钮直到视频开始 - 这不是最好的用户体验......

就像我说的,我看到很多关于这个问题的帖子,有些根本不起作用,有些可以,但有一些问题让我很烦恼。

我在 this post 中找到了一个可行的解决方案通过@ilias,他展示了如何通过从文件(而不是像我这样的字符串)加载 HTML 来实现这一点,这个方法的问题是对于我播放的每个视频我都需要:
加载 htm 文件 -> 将视频 ID 嵌入其中 -> 将文件写入光盘 -> 只有现在我才能播放视频。

奇怪的是,此解决方案仅在您从文件加载 Web View 请求时才有效,如果我尝试从等于文件内容的字符串加载请求,那是行不通的。

最佳答案

显然问题出在 nil base url 上,当我将其更改为 resourceURL 时,自动播放起作用了。

[self loadHTMLString:html baseURL:[[NSBundle mainBundle] resourceURL]];  

自动播放 youtube 视频的完整代码(此代码主要基于 this post 我只是将其更改为从字符串而不是文件加载):

static NSString *youTubeVideoHTML = @"<!DOCTYPE html><html><head><style>body{margin:0px 0px 0px 0px;}</style></head> <body> <div id=\"player\"></div> <script> var tag = document.createElement('script'); tag.src = \"http://www.youtube.com/player_api\"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { width:'%0.0f', height:'%0.0f', videoId:'%@', events: { 'onReady': onPlayerReady, } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body> </html>";  

- (void)playVideoWithId:(NSString *)videoId {
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId];

[self loadHTMLString:html baseURL:[[NSBundle mainBundle] resourceURL]];
}

关于ios - 如何在 UIWebView 中自动播放 YouTube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15717754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com