AirPlay是Apple的无线协议,用于在设备之间通过本地Wi-Fi网络传输音频、视频和照片,且不损失质量。与蓝牙不同,AirPlay使用Wi-Fi连接,提供更大的带宽和范围。根据Apple Developer(2026)的数据,AirPlay 2支持多房间音频和多个扬声器之间的同步,延迟低于100毫秒。
要点
AirPlay — 是Apple专有的无线协议,允许在本地网络中的设备之间传输音频、视频、照片和屏幕。该协议于2010年作为AirPlay推出(以前AirTunes仅用于音频),经历了多个版本:用于单房间播放的基本版本、具有多房间同步功能的AirPlay 2(2018)以及用于第三方设备的AirPlay Receiver(2021)。
AirPlay的主要目的是将iPhone、iPad或Mac上的内容流式传输到Apple TV、HomePod以及兼容的三星、LG、索尼和TCL电视,无需额外线缆。与Chromecast不同,AirPlay不需要中间云服务器——数据传输直接在设备之间通过本地网络进行(点对点),从而减少延迟且不消耗互联网流量。
该协议支持AES-128加密,用于在传输过程中保护内容,这对于流式传输受保护的视频(DRM)尤为重要。AirPlay使用Apple的FairPlay技术进行数字版权管理,允许从iTunes Store、Apple TV+和其他服务合法地向外部设备流式传输内容。
AirPlay使用协议组合来发现设备、建立连接和传输数据。该过程从发现开始:源设备(iPhone)向本地网络发送多播DNS(mDNS)查询。Apple TV、HomePod或支持AirPlay的电视等接收器会响应,告知其可用性和支持的格式。发现后,源设备和接收器通过Wi-Fi Direct建立直接的点对点连接,如果设备在直接视线范围内,则可绕过路由器。
对于音频传输,AirPlay使用其基于RTSP(实时流协议)的专有协议,并采用ALAC(Apple无损音频编解码器)进行无损压缩。标准音频以16位/44.1千赫格式传输,而AirPlay 2支持高达24位/48千赫。根据Apple AVFoundation(2026)的数据,AirPlay 2中的音频延迟即使在多房间同步情况下也低于100毫秒,使该协议适用于观看视频和游戏。
视频传输通过HTTP Live Streaming(HLS)实现。源设备将视频编码为多个具有不同比特率的流,打包成MPEG-TS片段,并通过在源设备上运行的普通HTTP服务器进行传输。接收器订阅HLS流,下载片段并进行缓冲播放。这种方法提供了自适应比特率——视频质量会自动适应当前网络带宽。
| 数据类型 | 编解码器 | 质量 |
|---|---|---|
| 音频 | ALAC(Apple Lossless) | 16位/44.1千赫 — 24位/48千赫 |
| 视频 | H.264、HEVC(H.265) | 高达4K,60帧/秒 |
| 照片 | JPEG、HEIF、PNG | 原始分辨率 |
| 屏幕 | H.264 | 高达1080p,30帧/秒 |
AirPlay 2 — 协议的第二代,于2018年随iOS 11.4发布。主要创新是支持多房间音频:用户可以同时向多个HomePod扬声器、Apple TV和第三方设备发送声音,并以毫秒精度同步。这得益于引入共享时钟(shared clock)和接收端缓冲机制而得以实现。
每个接收设备在开始播放前会缓冲最多10秒的音频。源设备发送带有时间戳的数据包,接收设备调整其计时,使得来自不同扬声器的声音同时到达听者。据Apple称,AirPlay 2设备之间的同步抖动低于1毫秒,人耳在物理上无法察觉。这允许在不购买昂贵的AV接收器的情况下搭建完整的多房间音频系统。
AirPlay 2还增加了系统集成:播放控制可从iOS控制中心、锁定屏幕甚至通过Siri进行。用户可以说“嘿Siri,在厨房播放爵士乐”——语音助手将在相应的HomePod上开始流式播放。对于开发者,Apple提供了MediaPlayer框架和MPNowPlayingInfoCenter类,用于显示曲目信息并从任何应用控制播放。
尽管蓝牙和AirPlay都用于无线音频传输,但它们之间存在根本性差异。蓝牙A2DP在最大SBC编解码器质量(328 kbps)下提供最远10米的声音传输,而AirPlay通过Wi-Fi覆盖整个本地网络(室内最远50米),比特率高达1.5 Mbps。对于无损质量的音乐流式传输,AirPlay是Apple生态系统中唯一的无线选项。
| 参数 | AirPlay | 蓝牙A2DP |
|---|---|---|
| 连接类型 | Wi-Fi(2.4/5 GHz) | 2.4 GHz射频 |
| 范围 | 最远50米 | 最远10米 |
| 音频质量 | 无损(ALAC) | 压缩SBC/AAC |
| 延迟 | 约100毫秒 | 约200–300毫秒 |
| 多房间 | 是(AirPlay 2) | 否 |
| 能耗 | 较高(Wi-Fi模块) | 低 |
蓝牙因其低能耗,在室外仍然是耳机和便携式扬声器的首选。 AirPlay — 用于在固定设备上进行家庭流式播放,音质和多房间同步很重要。实际上,两种协议共存:AirPlay用于家庭,蓝牙用于户外和汽车。
要为iOS应用添加AirPlay支持,开发者无需从头实现该协议——Apple在AVKit框架中提供了现成的UI组件。主要元素是AVRoutePickerView,它显示一个用于选择输出设备的按钮。按下时,系统会自动扫描可用的AirPlay接收器,并让用户选择目标设备。
import AVKit
import AVFoundation
class VideoPlayerViewController: UIViewController {
let player = AVPlayer()
let routePicker = AVRoutePickerView()
override func viewDidLoad() {
super.viewDidLoad()
routePicker.translatesAutoresizingMaskIntoConstraints = false
routePicker.activeTintColor = .systemBlue
view.addSubview(routePicker)
guard let url = URL(string: "https://example.com/stream.m3u8") else { return }
let item = AVPlayerItem(url: url)
player.replaceCurrentItem(with: item)
player.play()
}
}
在上述示例中,创建了一个AVRoutePickerView并将其添加到控制器的视图层次结构中。按下按钮时,iOS会显示带有可用设备列表的系统AirPicker。AVPlayer会自动将音频/视频重定向到所选AirPlay设备,无需额外代码——整个路由由系统处理。
如果需要在没有UI组件的情况下进行编程路由控制,请使用AVAudioSession切换输出端口。这对于具有自定义界面的应用非常有用——例如,带有自己设备列表的音乐播放器。
import AVFoundation
func routeToAirPlay() {
let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback, mode: .default)
let outputs = session.currentRoute.outputs
for output in outputs {
if output.portType == .airPlay {
print("AirPlay设备已连接:", output.portName)
}
}
}
routeToAirPlay方法以播放类别激活音频会话,并检查当前路由是否存在.airPlay端口。如果设备已通过AirPlay连接,应用可以相应调整UI——将AirPlay图标显示为活动状态。要实时跟踪路由更改,请订阅AVAudioSession.routeChangeNotification通知。
AirPlay适用于所有搭载iOS 4.2+、iPadOS、macOS 10.8+和watchOS的Apple设备。Apple TV(第三代及更新)、HomePod和HomePod mini可作为接收器。自2021年起,Apple向第三方制造商开放了AirPlay Receiver协议:三星、LG、索尼、TCL、Hisense和飞利浦电视已获得内置支持,无需额外设备即可接收AirPlay。
AirPlay需要Wi-Fi连接。点对点版本(AirPlay Direct)即使在没有共享路由器的情况下也能工作——设备会创建一个直接的Wi-Fi网络。这在无法访问本地网络的旅行中非常有用。AirPlay Direct支持iPhone 5s+、iPad Air 2+、第四代Apple TV和HomePod。连接无需密码——使用通过iCloud Keychain或屏幕上的PIN码进行的加密认证。
尽管有诸多优点,AirPlay仍有局限性。该协议仅通过Wi-Fi工作——不支持蓝牙。最大视频分辨率——4K,60帧/秒(在Apple TV 4K上)。Dolby Atmos格式的音频仅在流式传输到HomePod或搭载tvOS 14+的Apple TV时可用。对于第三方电视,AirPlay Receiver仅支持基本音频(立体声),不支持空间音效。开发者还应考虑到,AirPlay的延迟(约100毫秒)使该协议不适用于实时游戏——游戏最好使用有线直接连接或低延迟蓝牙。
在移动应用中实现AirPlay时,需要在Info.plist中添加NSBonjourServices键,指定_airplay._tcp和_raop._tcp服务以进行设备发现。是否需要相机和麦克风?不需要——AirPlay不需要访问相机或麦克风,只需要本地网络(NSLocalNetworkUsageDescription)来发现网络中的设备。如果没有此请求,应用将无法在iOS 14+上找到AirPlay接收器。
常见问题
AirPlay通过Wi-Fi在设备之间使用直接的点对点连接,无需中间服务器。Chromecast将URL发送到Google设备,由该设备自行从互联网加载内容。AirPlay更适合本地内容(照片、相机视频),Chromecast则适合从云服务进行流式传输。
可以,AirPlay支持点对点模式(AirPlay Direct),在此模式下iPhone和Apple TV无需路由器即可创建直接的Wi-Fi网络。需要使用蓝牙进行初始发现,以及iPhone 5s+和第四代Apple TV。点对点模式在设备靠近时自动激活。
支持,AirPlay在流式传输到HomePod(包括HomePod mini)和搭载tvOS 14+的Apple TV 4K时支持Dolby Atmos。音频通过ALAC编解码器以Dolby Atmos格式(面向对象的音频)传输。在第三方电视上不支持Atmos——仅支持立体声。
使用AVKit框架中的AVRoutePickerView。通过Interface Builder或编程方式将其添加到视图层次结构中。按下时,iOS会自动显示带有可用设备列表的系统AirPicker。对于自定义界面,请使用带有showsRouteButton属性的MPVolumeView。
最常见的原因:设备位于不同的Wi-Fi网络中、蓝牙已关闭、Info.plist中缺少NSLocalNetworkUsageDescription键、或电视上的AirPlay Receiver已关闭。NSLocalNetworkUsageDescription对于iOS 14+是必需的——没有它,应用将无法访问本地网络。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。