top of page

 

O Spotify é um serviço streaming distribuído na Internet, pelo que apresenta um sistema complexo, deste modo é preciso garantir que os ficheiros são entregues a todos os utilizadores com o nível de qualidade, ou seja, sem atrasos significativos nem interrupções. Para tal é necessário uma estrutura de distribuição e uma tecnologia de codificação e de compressão dos dados adequada. 

 

Arquitetura

A transmissão de música é menos exigente ao nível da largura de banda e do tamanho em (bits) dos objetos, que o streaming de vídeo. Deste modo, a transferência dos ficheiros de áudio do Spotify é auxiliada por uma rede peer-to-peer (P2P) e pela cache local. Estes protocolos têm como principal objetivo obter uma elevada qualidade de reprodução em termos de latência (tempo que decorre desde a ordem de reprodução até ao início da mesma) e interrupções de reprodução.

As músicas podem ser obtidas a partir de 3 fontes: Cache da máquina do utilizador, da rede P2P e dos servidores do Spotify.

No armazenamento em Cache sempre que o utilizador reproduz uma música pelo Spotify, esta é guardada automaticamente na memória, assim, que a música é reproduzida novamente ela reproduzida diretamente pela memória e não pela rede. Esta estratégia permite uma melhor otimização da utilização da rede tirando partido de as músicas serem reproduzidas mais do que uma vez evitando acesso a rede e download desnecessários, permite ainda a partilha de músicas guardas entre clientes, através do P2P.

Sempre que a música não esteja guardada em cache, esta é descarregada pelos servidores do Spotify que acaba por ser mais fiável devido à maior largura de banda e menor atraso. Sempre que um Utilizador é iniciado, é feita uma ligação TCP, que significa Transmission Control Protocol, a um servidor Spotify, estando estabelecida esta ligação vai permitir localizar outos utilizadores online servindo no apoio à rede P2P.

É também importante salientar que sempre que é feita uma transferência de dados, a aplicação do utilizador antecipa as próximas músicas a ser reproduzidas, e começa a transferência com alguma antecedência a este processo denominamos “prefetch”.

 

 

 Codificação

O spotify oferece um formato Ogg Vorbis com taxas de bits variáveis para a qualidade, dependendo do dispositivo e da assinatura:

  • Qualidade normal 160 kbps

  • Alta qualidade 320 kbps

 

O Ogg Vorbis usa uma codificação a débito variável (VBR), que modifica o número de bits por segundo para codificar os dados de áudio em função da sua complexidade.

Deste modo faz uso da MDCT (Modified discrete cosine transform) para converter as amostras PCM para um domínio de frequência onde é uma análise ao nível do ruido. Este CODEC usa assim vetores de quantização e codificação entrópica [10].

O formato Ogg Vorbis é um formato de código aberto, ao contrário dos seus principais concorrentes como por exemplo MP3, WMA e AAC. Isto significa que o algoritmo de compressão pode ser utilizado livremente por todos sendo um recurso para o desenvolvimento e lançamento de várias ferramentas e bibliotecas livres de direito (Open Source) [12].

 

 Protocolos de comunicação

O Spotify utiliza um protocolo TCP (Transmission Control Protocol), é um protocolo de comunicação, da camada de transporte da rede de computadores do modelo OSI, que dão por sua vez suporte a rede global da Internet, verificando se os dados são enviados na sequencia correta e sem erros via rede, é assim suplementado pelo protocolo da Internet que se chama TCP/IP [13].

Cada Utilizador têm uma ligação TCP, assim que é feito um pedido que é enviado para um servidor principal do Spotify atribuído a cada AP (Acess point), caso este pedido não seja possível de realizar por falhas no servidor, este vai pedir a um outro servidor da qual também faz parte PS (Production Storage).  A comunicação entre AP e PS é feita por HTTP (Hypertext Transfer Protocol), é feita assim a autenticação, encaminhando para os serviços específicos. Por cima desta ligação atua um protocolo encriptado para trocar a informação entre o utilizador e o ponto de acesso.

O protocolo TCP não oferece débitos constantes, assim as aplicações Spotify possuem buffers para armazenas o conteúdo que vai sendo recebido de modo a estimar condições de receção de forma atrasar a reprodução a música.

cache.jpg
Captura de ecrã 2019-12-12, às 12.26.59.
bottom of page