Я пишу TCP сервер-клиент приложение, часть которого которое реализует воспроизведение выбранного сервером .mp3 файла на всех подключённых клиентах. Почитав, решил использовать библиотеку NAudio для обработки аудио. Вообще я новичок в работе со звуком.
Вот код передачи mp3:
public void PlayFromFile(string fileName, UserList _clients)
{
Mp3FileReader reader = new Mp3FileReader(fileName);
Mp3Frame frame;
// For each frame
while ((frame = reader.ReadNextFrame()) != null)
{
foreach (var client in _clients)
{
NetworkStream outputStream = client.GetStream();
outputStream.Write(frame.RawData, 0, frame.RawData.Length);
}
}
}
Подскажите, правильный ли выбран подход для отправки пакетов приложениям-клиентам и если да - как лучше всего ловить и воспроизводить данные на стороне клиента?
Заранее спасибо.
Подход неправильный по нескольким причинам.
Вы никак не отделяете разные фреймы друг от друга - в итоге получатель не сможет определить где заканчивается один и начинается другой. Напомню, что протокол TCP работает не с отдельными пакетами, а с потоком.
Вы используете TCP. TCP - это не лучший протокол для передачи в ситуации когда вам нужна стабильная задержка, но не нужна гарантия доставки. Для передачи реалтайм-аудио и видео лучше использовать UDP, а еще лучше - RTP.
Вы декодируете звук перед передачей по сети. Передача его в сжатом виде намного эффективнее...
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости