gpt4 book ai didi

ios - 是否可以在不显示/添加 View 的情况下在 iOS 上播放 YouTube 视频,同时仍然遵守 YouTube 的服务条款?

转载 作者:可可西里 更新时间:2023-11-01 03:38:08 27 4
gpt4 key购买 nike

我有一个 UITableView,里面装满了 YouTube 视频的缩略图,当他们点击其中一个时,我想自动开始全屏播放 YouTube 视频,而用户不会看到正在添加的 View 或必须进行交互只需点击缩略图即可。

基本上,我根本不想看到带有红色播放图标的 YouTube 视频播放器。

我打算使用 youtube-ios-player-helper/YTPlayerView为了完成这个,我知道它只是使用了一个 UIWebView 但我似乎无法弄清楚如何让它工作。

如果我在我的类上创建一个实例变量,将我自己设置为委托(delegate)并选择一个随机视频进行观看:

let YouTubePlayer = YTPlayerView()

override func viewDidLoad() {
super.viewDidLoad()

YouTubePlayer.delegate = self
YouTubePlayer.loadWithVideoId("apKJikXWU2g")

...
}

然后当委托(delegate)方法被调用时:

func playerViewDidBecomeReady(playerView: YTPlayerView!) {
YouTubePlayer.playVideo()
}

但大多数时候它要么在我的 AppDelegate 中崩溃并显示以下消息:

Nov 5 23:34:44 rtcreporting[73827] : logging starts...

Nov 5 23:34:44 rtcreporting[73827] : setMessageLoggingBlock: called

或者如果我禁用断点它会起作用,但我在视频播放前收到自动布局约束投诉消息,表明某些东西在某种程度上很生气。

这是因为我使用的是 UIView 子类,但实际上没有将它添加到 View 层次结构中吗?

我如何实现在特定事件后自动播放 YouTube 视频的行为而不暴露中间 View ?

最佳答案

好了,您不必看到 youtube Logo 。

  1. 定义 youtube iFrame,稍后在提供给 UIWebView 时,您需要将 '%@' 部分替换为您的 youtube 视频 ID

    #define  youtubeVideoPlayUrl
    @"<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:'%f', height:'%f', videoId:'%@', events: { 'onReady': onPlayerReady } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body> </html>"
  2. 定义一个名为videoWebViewUIWebView 对象来显示iFrame。您可以将高度和宽度设置为零,这样它就不会挡住您的屏幕。它就像一个隐藏的 iFrame。

    self.videoWebview = [UIWebView alloc] init];
  3. 我建议您使用自己的默认图像和图像顶部的播放按钮,以避免必须显示“Youtube”视频 Logo 。完成后,使用以下代码全屏播放 youtube 视频

    - (void)onPlayYouTubeVideo:(UIButton *)sender
    {
    NSString *youtubeVideoID = YOUR_YOUTUBE_VIDEO_ID;
    NSString *html = [NSString stringWithFormat:youtubeVideoPlayUrl,
    _videoWebView.frame.size.width, _videoWebView.frame.size.height, youtubeVideoID];
    _videoWebView.mediaPlaybackRequiresUserAction = NO;
    _videoWebView.delegate = self;
    [_videoWebView loadHTMLString:html baseURL:[[NSBundle mainBundle] resourceURL]];
    }

我正在使用这样的酒店预订应用程序。

关于ios - 是否可以在不显示/添加 View 的情况下在 iOS 上播放 YouTube 视频,同时仍然遵守 YouTube 的服务条款?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771331/

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