SSMP或“第二屏幕模式协议”是一种轻量级框架,允许用户按应用程序将其设备用作桌面。 只需将您的设备连接到显示器,该设备就会变成键盘和触控板,并且您有了台式机。 最好的是,它只需要最少两行代码。 这个框架是我创建的,并且是100%开放源代码。 该项目在Swift中。 克隆GitHub存储库并构建框架 从发行版下载框架 使用迦太基(推荐) 椰子足 如果您不使用Cocoapods,或者只想查看仓库,请单击此处。 今天,我们将与Cocoapods一起安装它。 您要安装Cocoapods,请单击此处。 如果还没有,请创建一个Xcode项目。 项目准备就绪后,将其关闭并转到其文件夹。 现在打开终端并输入以下内容(记住在每个命令后按回车键): cd PathToYourProject pod初始化 纳米Podfile 在Pods for ” your project”下方,添加: 豆荚“ SSMP” 按control-X Y enter 。 那应该使您回到正常的命令行中。 对于最后的步骤,键入: 吊舱安装 这将安装所有pod并创建一个xcworkspace ,您将从现在开始使用它而不是xcproj 。 您可能需要按CMD+B来重建项目。 最后,让我们开始编码。 在您的AppDelegate.swift ,导入SSMP 。 然后转到didFinishLaunchingWithOptions并设置您希望外部显示器具有的视图控制器: SSMPApp.default.viewController = MyViewController() 如果使用情节提要,请执行以下操作: 让故事板:UIStoryboard = UIStoryboard(名称:“ Main”,包:nil) 让VC = storyboard.initiateInitialViewController() SSMPApp.default.viewController = […]
TL; DR 如果在透过Airplay 2播放AES加密影片的时候,发现无法正确的呼叫到实作的AVAssetResourceLoaderDelegate,以至于没有正确加入授权(存取凭证)而无法下载影片播放时,只需重新读取的HLS影片来源URL scheme客制化即可。 前言 为了防止正版影片被盗用,影片在传输前就会先加密好,才传送给使用者端解密,观看。常用的保护方式如透过数位版权管理(DRM),或依据进阶加密标准(高级加密标准,AES)加密,而这篇文章就是谈谈在客户端AES解密影片时用AirPlay2投影所遇到的坑! 使用AVAssetResourceLoaderDelegate AVAssetResourceLoaderDelegate(后面简化成“ ARL委托”)是Apple的AVKit中读取到AVURLAsset资源时,通知应用程序端处理的委派模式(代理模式)。理论上,当AVKit需要您的应用程序“植入”去读取资源(影片,m3u8档案或字幕档案)时,就会去呼叫resourceLoader(_:shouldWaitForLoadingOfRequestedResource :),这时候app就可以加入读取所需的授权验证(例如:auth token),来让你的服务端能够验证您的资源读取需求,并回传你所需要的资源档案。 替换成客制化方案的流程: 读取master播放列表(master.m3u8) 让一开始读取的master.m3u8 URL方案在应用端从https cplp成cplp ( https://example.com/master.m3u8 –> cplp ://example.com/master.m3u8),而因为这个客制化的cplp URL方案,就会让ARL委托被触发,并通过resourceLoader(_:shouldWaitForLoadingOfRequestedResource :)能够被顺利的调用到,但这里只需要去获得master.m3u8档案并回传给loadingRequest即可,不需要其他的处理。 注意:若不确定原始先使用的协议会是 http 或 https 的话,可以通过“加入前缀”的方式去改成客制化sheme,例如在scheme前面加上 my ,则 http 就会变成 myhttp ,而 https 就会变成 myhttps 。如此一来,想要还原原本的方案,只需要可移除的前缀即可。 读取index播放列表(index.m3u8) 因为master.m3u8的URL被窜改成客制化的URL方案,所以一来根据HLS(http live stream)的规则,master中的index.m3u8连结也就会自动变成cplp://example.com/index .m3u8,并且成功让ARL代表也被呼叫。 但因为密钥将链接放置在index.m3u8的缘故,则需要更进一步的将成为“#EXT-X-KEY:METHOD = AES-128,URI =” https://example.com/key “”给换成“#EXT-X-KEY:METHOD = AES-128,URI =” ckey ://example.com/key””(注意这里的自定义方案“ […]
如果我为iOS(XCode / Objective-C)创build了自己的自定义应用程序,是否可以将它支持AirPlay并将我select的光束内容提供给Apple TV? 我在找什么API /函数调用?
我有一个播放一些媒体的AVPlayer实例,但我不希望用户能够通过AirPlay进行stream式传输。 所以我把AVPlayer的allowsExternalPlayback属性设置为NO 。 但是它似乎并不影响控制中心的AirPlaybutton,因此它保持可见。 有没有办法隐藏button?
当AVAudioRecorder会话处于活动状态时(当我正在录制audio时),我无法激活设备上的AirPlay镜像。 Airplay镜像在应用程序运行时停用,当应用程序退出时将其重新打开。 这篇文章似乎表明, 这是没有办法的 。 我的想法是尝试: 使用较低级别的录制框架 或者输出一个单独的窗口到外部显示器 ,而不是镜像 (我试过这个,它不工作)。 有没有其他方法可以解决这个问题,或者你知道这两种方法中的哪一种是已知的?
我有我的应用程序通过AVPlayer成功stream式传输MP3。 我实现了一个MPVolumeView来支持AirPlay,但是我注意到我的苹果电视上的标题信息并没有显示stream媒体MP3中的任何内容,而只是“未知”信息。 无论如何,从应用程序来控制这个信息,或者这是一个问题引起的stream媒体MP3? 任何帮助将非常感激!!
我使用AVPlayer和AVPlayerViewController创build了一个video播放器。 我已经将“ allowsExternalPlayback ”属性设置为true,并将“ usesExternalPlaybackWhileExternalScreenIsActive ”属性设置为true。 但是我仍然没有在播放器控件中获得Airplay图标。 player = AVPlayer(URL: url!) player!.allowsExternalPlayback = true player?.usesExternalPlaybackWhileExternalScreenIsActive = true 我在ios 9.2上运行我的应用程序。
我想知道是否有可能获得我的iOS应用程序当前正在使用的airplay设备的IP地址。 无论是,还是networking上所有支持Airplay的设备的IP地址。 先谢谢你! 编辑:虽然我现在有一个公认的答案,我有兴趣知道如何获得当前正在播放的airplay设备的IP。
问题:iPhone屏幕镜像和我的应用程序的专用外部视图在四面显示一英寸的黑色边框。 但是:有些视图在全屏幕上显示完美而没有黑色边框,例如Apple TV菜单和照片应用程序。 尝试已经 – 没有影响: 在1080p高清电视上禁用过扫描(“禁用16:9过扫描”)( 使用2个屏幕的iPad镜像,支持1080分辨率? ) 设置UIScreenOverscanCompensation – 没有效果( IOS – 外部(HDMI)输出只填充一半的屏幕,除非手动编码视图 ) 设置:iPhone 4S(5.0.1),Apple TV第二代(4.4.4) 任何build议,我可以尝试另外?
如何在Swift项目中显示AirPlaypopup式菜单? (像Spotify这样的许多应用程序可以像下面这样显示):