С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C# Вычислить значение бесконечной суммы (потоки) https://www.cyberforum.ru/ csharp-beginners/ thread1711709.html
Программа, которая будет вычислять значение бесконечной суммы 1-(1/1!)+(1/2!)-(1/3!)+ и т.д. с точностью E=10-6. Как создать потоки я понял, метод для факториала брал с msdn. Понял как вычислить один факториал, но бесконечную сумму, да еще и с чередованием знаков, не понял как. Может быть через цикл... Помогите пожалуйста! using System; using System.Collections.Generic; using System.Linq;...
Класс «Сотрудник» и коллекция сотрудников C#
Добрый день господа! Помогите пожалуйста с моей проблемой. Нужно создать класс (сотрудники) и создать коллекцию этих сотрудников. Это нужно сделать на форме, что бы при нажатию на кнопку добавлялся новый сотрудник в коллекцию.
C# 'MyObject' не содержит определения для https://www.cyberforum.ru/ csharp-beginners/ thread1711693.html
Есть класс: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization;
C# Почему при выполнении выводит и считает только последний номер потока? Добрый день Объясните пожалуйста Вот код, должен посчитать сумму байт текста Создаю потоки в Main, передаю параметры в func (параметры: количество потока и порядковый номер потока) Почему при выполнении выводит и считает только последний номер потока??? https://www.cyberforum.ru/ csharp-beginners/ thread1711692.html
Изменение прокси для программы C#
Привет друзья! извините новичек в c# Пытаюсь создать программу следующего рода: 1) Текст бокс для вставки прокси в формате proxy: port:login: password 2) Кнопка старт 3) Кнопка стоп Идея такая после нажатия кнопки старт любая программа должна работать под той проксей которая была введена в текст бокс И при нажатии кнопки стоп прокся убиралась
C# Таблица степеней для полинома https://www.cyberforum.ru/ csharp-beginners/ thread1711581.html
Есть программа, позволяющая делить многочлен на многочлен. Делит правильно. но делит только по одному элементу. необходимо записать сразу несколько многочленов в делимое, поделить на делитель. Результат сохранить и вывести на экран. using System; using System.Collections.Generic; using System.Linq; namespace ca { class Program {
C# Исправить ошибки в коде https://www.cyberforum.ru/ csharp-beginners/ thread1711579.html
Заполнить массив структур числами по принципу домино. Вывести первую неправильную позицию. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
Заменить все найденные в строке символы, недопустимые в имени файла, на пробелы C#
Добрый день. Подскажите, пожалуйста. Хочу сделать проверку на существование в строке символов, которые нельзя использовать в имени файла (символы, которые используются windows'ом), и заменить такие символы на пробелы. Как это сделать с помощью регулярного выражения? Есть следующий паттерн, но при его использовании, удаляются все символы. str = Regex.Replace(str, @"", "",...
C# Интегрирование Симпсоном Написал программу: private void button1_Click(object sender, EventArgs e) { Func<double, double> f = x => 20 * Math.Exp((-x - 1) / x); var a = double.Parse(textBox1.Text); var b = double.Parse(textBox1.Text); var n = double.Parse(textBox1.Text); richTextBox1.Text += string.Format("Ответ: {0}", Simpson(f,a,b,n)); } https://www.cyberforum.ru/ csharp-beginners/ thread1711572.html C# Нарисовать флаг Греции Доброго времени суток помогите реализовать задачу нужно нарисовать флаг Греции. С клавиатуры вводиться высота. Реализовать с помощью циклов. https://www.cyberforum.ru/ csharp-beginners/ thread1711528.html
Организовать иерархию классов: дом, улица, город C#
Обязательно реализовать в каждом классе метод ToString, который будет форматировать вывод информации об объекте в виде строке. Если у объекта есть дочерние объекты, можно вывести информацию о них (например под банковским счетом - список транзакций) Задание: Нужно сделать 3 класса улица,дом и город 1.Улица имеет список точек, координат (List <Point>) Point 2.Дом имеет координаты и ссылки на...
C# Строку в команду Есть стринговая переменная s string s = "int cena = 10"; Можно ли как то сделать объявление переменной cena (т.е. стринговую переменную сделать в строчку кода)? https://www.cyberforum.ru/ csharp-beginners/ thread1711506.html
64 / 64 / 14
Регистрация: 05.08.2011
Сообщений: 323
Записей в блоге: 5
0
.NET 4.x

Воспроизведение аудио-потока (массива байтов) - C# - Ответ 9022757

14.04.2016, 19:04. Показов 14445. Ответов 14
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер! Имеется модем. После получения особой команды модем начинает выдавать мне блоки данных (строго по 320 байт - голос того кто говорит на другом конце телефонной связи) через каждые N миллисекунд. Сырых данных. Их можно воспроизвести только добавив соответствующий заголовок WAVE файла.

Если эти кусочки собрать воедино и добавить в начале заголовок WAVE файла, то этот файл читается и воспроизводится любым аудио-плеером. И звук чистый, как и надо.

Однако у меня возникла необходимость воспроизводить этот поток в режиме "реального времени". Дабы не тратить деньги на звонки, я записал весь поток сырых данных, полученных с модема. И, разбивая их на блоки по 320 байт, пытаемся соединить в цельный поток звука. Для справки, звук: 8 кГц, 16 бит, 1 канал.

Попытка решить задачу №1 (MemoryStream + SoundPlayer):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        public void snd2()
        {
            var incoming = File.ReadAllBytes("1.txt");
            var mw = new MansWave();
 
            var part = 320;
            var offset = 0;
            
            while (incoming.Length - offset > part)
            {
                var buffer = incoming.Skip(offset).Take(part).ToArray();
                var ms = new MemoryStream(mw.GetBytesForSample(buffer));
                var sp = new SoundPlayer(ms);
                ms.Position = 0;
                
                sp.Play();
                
                offset += part;
            }
        }
При этом методе наблюдается чересчур быстрое воспроизведение и, кроме того, оно прерывистое. Подозреваю, что это из-за того, что плеер каждый раз создается заново. Попытки добавить какой-нибудь Thread.Sleep не помогает, а лишь затормаживает само воспроизведение.

Попытка №2 (NAudio):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        public void snd1()
        {
            var incoming = File.ReadAllBytes("1.txt");
            
            var part = 320;
            var offset = 0;
            
            waveOut = new WaveOut();
            waveProvider = new BufferedWaveProvider(new WaveFormat(8000, 16, 1));
 
            
            while (incoming.Length - offset > part)
            {
                waveProvider.AddSamples(incoming, offset, part);
                waveOut.Init(waveProvider);
                
                if (waveOut.PlaybackState != PlaybackState.Playing) waveOut.Play();
 
                offset += part;
            }
        }
В этом случае результат странный. В самой середине звука всё нормально. Но в начале и в конце звук не только прерывистый, но и длительность прерывания увеличивается тем больше, чем дальше текущая метка от середины. Я поясню - сначала прерывистый, затем нормальный, затем опять прерывистый, и дальше "пробелы" между звуками увеличиваются всё больше и больше, как будто замедляя воспроизведение.

Попытка решить задачу №3 (с помощью библиотеки WinSound):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var incoming = File.ReadAllBytes("1.txt");
 
            var part = 320;
            var offset = 0;
 
            while (incoming.Length - offset > part)
            {
                WinSound.Player playerOne = new WinSound.Player();
                WinSound.WaveFile.Create(@"temp.wav", 8000, 16, 1, incoming.Skip(offset).Take(part).ToArray());
                playerOne.PlayFile(@"temp.wav", "Realtek");
 
                offset += part;
            }
Результат точно такой же как и с NAudio. Что я делаю не так? Помогите, пожалуйста. Желательно обойтись без сторонних библиотек вроде NAudio или других, но подойдёт любой рабочий метод.

Так же пробовал создать таймер который каждые N миллисекунд читал бы очередной кусок данных и воспроизводил. Результат либо было хуже (откровенные прерывания из-за завышенной задержки), либо точно такой же, как и без таймера вообще.

Вернуться к обсуждению:
Воспроизведение аудио-потока (массива байтов) C#
1
Заказать работу у эксперта
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2016, 19:04
Готовые ответы и решения:

Воспроизведение потокового аудио
Тема не раз затрагивалась, но нигде не нашел ответа на свой вопрос. в общем вот таким образом...

Воспроизведение аудио
Всем доброго времени суток. Написал небольшую программу для воспроизведения аудио файлов.....

Воспроизведение аудио
Доброго времени суток! Посоветуйте инструмент для воспроизведения аудио (небольшой аудиоплеер,...

Воспроизведение аудио потока
Для воспроизведения потока использую AVPlayer с аргументов NSURL. Подскажите, как заставить плеер...

14
14.04.2016, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2016, 19:04
Помогаю со студенческими работами здесь

Воспроизведение аудио
Здравствуйте! Есть вот такая простая конструкция, работает нормально. Аудио воспроизводится по...

Воспроизведение аудио
Нужно, чтобы аудио-дорожка воспроизводилась без остановки до определенного события (нажатие кнопки,...

Воспроизведение аудио файла
Здравствуйте, я только начал программировать на java, но у меня уже имеется конкретная задача...

Воспроизведение аудио из б.д. access
База данных--Acess Среда разработки--RAD Studio 10.2...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru