Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O streaming é o processo de manter apenas uma pequena parte de um arquivo de áudio reproduzido na memória. Isso permite que arquivos de áudio grandes, como música em segundo plano, sejam reproduzidos e não assumam uma grande quantidade de memória.
Dica
Dimensionamento de buffer para baixa latência: Use pelo menos 3 buffers em seu anel de streaming para evitar paralisações e mantenha a duração de cada buffer entre 20 e 100 ms. Buffers mais curtos (20 a 40 ms) reduzem a latência percebida para efeitos sonoros interativos, mas exigem leituras de disco mais rápidas e agendamento de thread mais rígido. Para streaming de música em segundo plano, buffers de 80 a 100 ms fornecem margem confortável enquanto permanecem inaudíveis para os usuários.
Aviso
O thread de streaming deve ser executado com prioridade elevada via MMCSS (por exemplo, registrando-se na tarefa "Pro Audio" ou "Games") para evitar estouros de buffer causados por threads de prioridade mais baixa que sobrecarregam o pipeline de áudio. Os estouros de buffer resultam em estalos audíveis ou pausas de silêncio que são prejudiciais ao áudio do jogo.
Quando um arquivo de áudio é transmitido, seus dados são lidos do disco em partes, em vez de carregar o arquivo inteiro de uma só vez. O streaming é feito lendo de forma assíncrona dados de áudio em uma fila de buffers de disco. Cada buffer é preenchido e, em seguida, enviado para uma voz-fonte. Depois que o serviço de voz termina de reproduzir um buffer, ele fica disponível para leitura novamente. Percorrer os buffers de disco dessa maneira permite reproduzir um arquivo de áudio grande enquanto apenas parte dos dados é carregada. O código de streaming deve ser colocado em um thread separado, onde ele pode hibernar enquanto aguarda a conclusão de operações de disco e áudio de longa duração. Uma classe de retorno de chamada é usada para ativar o thread disparando eventos quando as operações de áudio tiverem sido concluídas.
Para obter um exemplo de como o streaming pode ser feito com o XAudio2, consulte Como transmitir um som do disco.
Tópicos relacionados: