1. Introdução
Airplay é um conjunto de protocolos implementados pela Apple para permitir a visualização de vários conteúdos de mídia no iPhone, iPod touch, iPad (dispositivo de hardware) ou iTunes (software) na Apple TV. O AirPlay é compatível com os seguintes cenários de uso:
• Transfira e exiba fotos e apresentações de slides de dispositivos iOS;
• Transfira e reproduza áudio de dispositivos iOS ou software Itunes;
• Transfira e reproduza vídeos de dispositivos iOS ou software Itunes;
• Imagens de tela de dispositivos iOS ou OS X Mountain Lion. Como esse recurso requer suporte de decodificação de hardware, ele só pode ser compatível com computadores iPad 2, iPhone 4S, Mac com CPU Sandy Bridge (ou dispositivos mais recentes).
Inicialmente, o protocolo era chamado AirTunes e suportava apenas streaming de áudio. Mais tarde, quando a Apple desenvolveu a Apple TV, esse protocolo foi expandido e aprimorado, adicionou suporte a vídeo e foi renomeado para Airplay. O protocolo Airplay é baseado em protocolos padrão de rede conhecidos, como Multicast DNS, HTTP, RTSP, RTP ou NTP e outras extensões personalizadas.
Como nos concentramos apenas na parte de áudio, o foco do estudo abaixo é o serviço AirTunes.
2. O mecanismo de realização
O software que implementa o protocolo Airplay pode descobrir dispositivos relacionados na mesma rede sem qualquer configuração, o que se deve principalmente ao Bonjour (baseado no protocolo M-DNS).
Bonjour: O nome da Apple para o padrão aberto Zeroconf baseado em DNS multicast.
Zeroconf (Zero Setting Network Standard): Totalmente chamado de rede de configuração zero, o nome chinês é padrão de serviço de rede de configuração zero, é uma tecnologia de rede para gerar automaticamente endereços IP disponíveis, sem configuração manual adicional e servidor de configuração dedicado. O objetivo da "rede de configuração zero" é permitir que usuários não profissionais conectem facilmente vários dispositivos de rede, como computadores e impressoras. Todo o processo de construção de uma rede é alcançado por meio da automação do programa. Se não houver Zeroconf, o usuário deve configurar manualmente alguns serviços, como DHCP, DNS, outras configurações na rede de computadores e assim por diante. Estes são muito difíceis para usuários não técnicos e novos usuários.
O exemplo específico é: o usuário possui uma apple tv e um iPhone4s, desde que estejam conectados à mesma LAN sem fio, o iphone4s encontrará automaticamente a apple tv, então, ao reproduzir música ou vídeo, o usuário apenas clica no push. Você pode reproduzir músicas e vídeos para reproduzir na Apple TV.
Além do Bonjour, Avahi e howl são implementados para implementar o protocolo Zeroconf.
3. a implementação, portabilidade e depuração do protocolo Airplay:
O software de código aberto que implementa o protocolo Airplay no Linux tem shairport e xmbc (o mecanismo de implementação da parte de áudio também é baseado em shairport).
Shairport é um software que emula um roteador ApEx com a finalidade de transferir músicas do iTunes e outros dispositivos compatíveis. É um servidor que suporta RAOP. A versão 0.X é escrita no script perl, mas o shairport atual foi atualizado para 1.0-dev. Esta versão removeu a parte do script perl e a alterou para C, o que é mais conveniente para nós portarmos. No entanto, ainda está em desenvolvimento e ainda não foi lançado oficialmente, potencialmente com bugs. As dependências necessárias após a versão 1.0-dev são OpenSSL e as dependências opcionais são libao, PulseAudio, avahi (ou howl). Por meio de análise, se libao e PulseAudio estiverem instalados, o shairport terá 5 backends de saída (ou seja, alsa, ao, pusle, dummy, pipe) para escolher, e mesmo que libao e PulseAudio não estejam instalados, o shairport ainda terá 3 backends de saída. (ou seja, alsa, manequim, tubo), não afeta a função do shairport (há um atraso na reprodução), se você deseja obter uma qualidade de som de alta qualidade, é melhor instalar o PulseAudio. Por meio de experimentação constante, você pode optar por compilar o OpenSSL e uivar para evitar uma compilação cruzada complexa.