【问题标题】:Playing youtube videos in a custom player using AVFoundation使用 AVFoundation 在自定义播放器中播放 youtube 视频
【发布时间】:2013-04-11 14:50:49
【问题描述】:

AVFoundation 允许开发人员创建自定义视频播放器,而不是使用 Apple 自己的全屏 MPMoviePlayer。

在我的项目中,我使用这种方法来实现与 YouTube iOS 应用程序类似的功能,即在播放发生的顶部有一个“画布”视图,以及几个控件和文本标签底部:

如您所知,YouTube URL “指向” HTML 数据,它旨在用于 UIWebView。点击此 UIWebView 内的缩略图会弹出一个全屏播放器,这是我要避免的。

我想知道 YouTube API 是否提供指向实际视频(mp4 文件)的 URL,以便我可以在 AVFoundation 中使用它。

我想找到一种合法的方式来做到这一点,因此它应该明确遵守 Apple 和 Google 的服务条款。

谢谢,

【问题讨论】:

  • 你应该看看github.com/hellozimi/HCYoutubeParser 看看他们在做什么,虽然我不确定这是否符合他们的服务条款
  • 谢谢!我会检查一下。我正在寻找一种合法的方式来实现这一点,希望有一个。
  • 一定要检查一下,我只听说过关于 TOS 的内容——我自己从未研究过

标签: iphone ios youtube-api avfoundation mpmovieplayer


【解决方案1】:

实现这一点的最简单方法是添加一个覆盖 UIView,您可以将其放置在屏幕的任何部分上。并将其置于 UIWebView 之上,并将其设置为不响应用户交互。由于您可以更改大小和位置并使其透明,因此您可以有效地选择您想要和不想要的用户交互。而且您不会以任何方式与 YouTube ToS 混为一谈。

【讨论】:

  • 我不完全确定,但我认为播放该视频总是会导致应用触发全屏模式播放器,对吧?
  • 查看 UIWebView 参考我发现了这个属性:@property (nonatommic) allowedInlineMediaPlayback 这可能会奏效。
  • 似乎要让它以这种方式工作,您需要制作一个原生 HTML5 页面并将其显示在 UIWebView 中。可能为什么在 iPhone 而不是 iPad 中禁用此功能的原因是小屏幕。在 iPad 上,allowInlineMediaPlayback 设置为 YES,在 iPod/iPhone 上没有。
  • 我通过完全不使用 AVFoundation 解决了这个问题。相反,我最终将 YouTube 的 HTML5 播放器嵌入到 UIWebView 中。您可以通过在 YouYube 的 URL 中包含参数来在某种程度上自定义此播放器,然后您可以使用 javascript 与播放器交互,使用您自己的 UIKit 视图。
【解决方案2】:

http://www.youtube.com/get_video_info?video_id= 附加视频 id 包含 mp4 url​​,可能需要一些正则表达式工作(在这里找到:https://github.com/hellozimi/HCYoutubeParser/blob/master/YoutubeParser/Classes/HCYoutubeParser.m)

【讨论】:

  • 你知道这是否违反了 Youtube 的 ToS 吗?
  • 没有研究,不确定
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
相关资源
最近更新 更多