使用 MPMoviePlayerController 禁用 AirPlay

Posted

技术标签:

【中文标题】使用 MPMoviePlayerController 禁用 AirPlay【英文标题】:Disable AirPlay with MPMoviePlayerController 【发布时间】:2011-10-13 05:18:11 【问题描述】:

我有一个MPMoviePlayerController 的实例,它用于在 iPhone 应用程序上显示一些实时流媒体视频。这工作正常,但我希望删除所有 AirPlay 功能。

可以肯定的是,我像这样专门禁用 AirPlay:

if([self.moviePlayerController respondsToSelector:@selector(setAllowsAirPlay:)]) 
    self.moviePlayerController.allowsAirPlay = NO;

但是,即使使用此代码,我仍然在视频控件上看到 AirPlay 图标。如果我选择此选项并选择我的 AppleTV,则仅通过 AirPlay 发送音频 - 视频将继续在应用程序中播放。如果我将allowsAirPlay 设置为YES,视频和音频都会通过AirPlay 发送。

有人知道为什么会这样吗?这是操作系统的一项功能,允许通过 AirPlay 发送音频吗?

【问题讨论】:

你尝试设置useApplicationAudiosession = NO; 吗? 我现在 - 恐怕似乎没有任何区别。 你在设置播放器的内容URL之前设置了allowAirPlay吗? 这是一个相关问题***.com/questions/5665336/… 不,因为我正在使用 initWithContentURL 方法来初始化 MPMoviePlayerController。我想我可以试试? 【参考方案1】:

事实证明,AirPlay 图标仍然可见(并且应该保持可见),因此可以将音频路由到任何合适的设备,例如。蓝牙耳机。尝试隐藏图标被认为是不好的做法。

【讨论】:

很老的问题;但是您是否有机会获得支持此功能的 Apple 文档的链接? 抱歉,不,我实际上在他们的一次技术讲座中从一位 Apple 工程师那里得到了答案。如果你从逻辑上考虑它是有道理的。那些想要使用蓝牙耳机或扬声器的人应该始终能够使用它们,因为它们可能有听力障碍等。 谢谢。我认为这是有道理的,只是担心内容许可。 @Craig - 对不起,老问题等等。你有没有设法找到任何文件?我即将开始同样的挑战,即使是 WWDC 参考也会很好:)【参考方案2】:

我知道这是一个老问题,但也许这对其他人有帮助。 苹果有以下api来隐藏路由按钮(AirPlay)

@property (nonatomic) BOOL showsRouteButton NS_AVAILABLE_IOS(4_2);  // Default is YES.

希望这对任何人都有帮助。

【讨论】:

【参考方案3】:

@Philip K,您的提示几乎为我解决了这个问题,调试了一些四年前的代码。 showsRouteButton 不是 MPMoviePlayerController 上的属性,我尝试设置:

myMPMoviePlayer.allowsAirPlay = NO;

但这没有任何作用......

我们正在为我们的视频播放器使用自定义控件,发现路由按钮是 MPVolumeView 的一部分,您的技巧适用于那里:

MPVolumeView * vView = [[MPVolumeView alloc] initWithFrame: bounds];
vView.showsRouteButton = NO;

宾果!谢谢。

【讨论】:

以上是关于使用 MPMoviePlayerController 禁用 AirPlay的主要内容,如果未能解决你的问题,请参考以下文章

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”