使用 YouTube Helper Library iOS 在后台播放 youtube 视频

Posted

技术标签:

【中文标题】使用 YouTube Helper Library iOS 在后台播放 youtube 视频【英文标题】:Play youtube video in Background using YouTube Helper Library iOS 【发布时间】:2014-12-02 20:36:52 【问题描述】:

我正在使用 YouTube 助手库在我的 ios 应用程序上播放 YouTube 视频Here are link of Library 我只需要一种方法来继续在后台播放音频(或视频), 因此,当用户单击主页按钮时,我需要他能够听到声音 视频, 即使他锁定了他的设备,我也需要他能够控制声音和 单击下一步和返回按钮进行音频播放.. 我如何在 YouTube Helper Library 上实现这一点?

注意:许多应用程序都是这样做的,并且它们存在于应用程序商店中,例如 iMusic、Video Tube、MusicTV、MB2

【问题讨论】:

上述库使用webview 播放视频。我认为在制作自定义视频播放器之前没有办法在后台播放视频。link.. 【参考方案1】:

播放背景视频(或语音)违反YouTube TOS。你肯定不能用这个库来做到这一点,即使你想出了一个解决方法,你的应用也会因为违反 TOS 而被下架。

【讨论】:

感谢您的回答,但许多应用程序都会这样做,请在应用程序商店中搜索以下应用程序... iMusic、Video Tube、MusicTV、MB2 所有这些应用程序都在后台播放 youtube 视频.. 有什么建议吗? ? @Ibrahim Ulukaya 从未向我们提供指向某些服务条款页面的通用链接。原因有两个:1. OP 的预期结果究竟在哪里违反了服务条款? (自己找不到) 2. 服务条款一直在变化..【参考方案2】:

关于在后台播放声音:

您必须将 AVAudioSession 类别设置为 AVAudioSessionCategoryPlayback 并将音频值添加到您的信息属性列表文件中的 UIBackgroundModes 键。

NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError];

我仅在 iOS 7 及更高版本上测试过此代码,因此它可能不适用于早期版本。

来自 Apple 文档:

AVAudioSessionCategoryPlayback 播放录制音乐的类别 或其他对成功使用您的应用至关重要的声音。

使用此类别时,您的应用音频会继续以 Silent 开关设置为静音或屏幕锁定时。 (这个开关叫做 iPhone 上的响铃/静音开关。) 应用程序过渡到背景(例如,当屏幕 锁),将音频值添加到您的 UIBackgroundModes 键 信息属性列表文件。

请参阅参考资料 here 和 here

【讨论】:

您确定这适用于 YouTube 助手库吗?我知道如果我们想播放 mp3 文件 ..etc,这是解决方案,我尝试了一下,但它不适用于这个库.. 有什么建议吗?? 我正在使用这个库,对于我的应用程序,它正在使用这些设置。我还添加了所需背景模式的信息 plist:应用程序使用 AirPlay 播放音频或流式传输音频/视频。我在 applicationDidFinishLaunchingWithOptions: 中设置类别,如果我删除它,它就可以工作 - 它停止工作。 好吧,我会试试的,但请告诉我,用户可以点击下一步和后退按钮,并且一切正常,我的意思是当屏幕锁定或后台应用时?? 它在后台 home/lock 中工作,但有一个缺陷 - 它会暂停半秒,然后正常播放。控制按钮是可用的,但您应该处理这些操作。当您在后台按下按钮时,将调用webView:shouldStartLoadWithRequest:,并在request.URL 中使用状态代码(0 - 视频结束)。如果您处理委托方法playerView:didChangeToState:,则可以实现所需的行为。我不确定如何获得按下的确切按钮,因为这不是我的应用程序中的关键,而且我还没有寻找解决方案。 顺便说一句,可以通过此功能控制锁定情绪或背景情绪的下一步和返回按钮 - (void)remoteControlReceivedWithEvent:(UIEvent *)event【参考方案3】:

您需要在应用进入后台时启用它。记得检查你的应用是否在后台

func playerView(_ playerView: YTPlayerView, didChangeTo state: YTPlayerState) 
    if state == .paused 
        playerView.playVideo()
    

【讨论】:

以上是关于使用 YouTube Helper Library iOS 在后台播放 youtube 视频的主要内容,如果未能解决你的问题,请参考以下文章

用youtube-ios-player-helper播放视频

CodeIgniter-YouTube-API-Library 使用注册帐户进行身份验证

How to Creat DLL(Dynamic link library)

iOS + Swift:使用 cocoapod 的桥接头不起作用

如何在 Laravel 5.1 中自动加载自定义类?

我可以在返回 html 的自定义 Tag Helper 中使用 Tag Helper 吗?