Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
1

Расскажите о System.Media, либо о другом способе проигрывания аудио

23.11.2020, 10:48. Показов 2775. Ответов 17

Author24 — интернет-сервис помощи студентам
Пожалуйста расскажите кое-что о System.Media,а именно есть ли возможность контроля громкости при данном способе воспроизведения аудио?
Если нет, то расскажите об альтернативном способе проигрывания аудио(желательно в формате mp3),+ покажите контроль громкости, если такая функция есть)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2020, 10:48
Ответы с готовыми решениями:

Библиотеки для проигрывания Аудио
Всем Здрасте. меня волнует такой вопрос, хочу написать плеер. Я уже писал один на библиотеке...

Программа для проигрывания аудио
Подскажите САБЖ. Основные критерии: удобный плейлист, возможность создавать и сохранять его, чтобы...

Нет звука в media во время проигрывания фильмов
Добрый всем день. Столкнулся с проблемой, когда проигрываю в media фильмы, то нету звука. Хотя, при...

Проигрывания музыкальных файлов при помощи Windows Media Player
Добрый день господа программисты! Напоролся на вот такую проблему-не знаю как через C# проиграть...

17
54 / 44 / 11
Регистрация: 15.07.2011
Сообщений: 160
23.11.2020, 11:03 2
System.Media использует довольно старую функцию PlaySound. Напрямую контроля громкости там нет, разве что через WASAPI-сессию регулировать глобальную громкость для текущего процесса.

Альтернативные - например NAudio: https://github.com/naudio/NAudio Контроль громкости там есть (DirectSoundOut.Volume)
1
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
23.11.2020, 17:01  [ТС] 3
Спасибо, попробую, если что спрошу ещё)
0
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
23.11.2020, 23:38  [ТС] 4
И снова здравствуй) Спасибо за помощь, но не мог бы ты мне показать как это использовать?)Я просто новичок, и бы ло бы хорошо если бы ты всё более-менее подробно расписал и показал, надеюсь поймёшь)
Вот то, что я нашел по поводу применения:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
WaveFormat wfOKI = WaveFormat.CreateCustomFormat(WaveFormatEncoding.DialogicOkiAdpcm, 8000, 1, 3000, 48, 3);
WaveStream wsRaw = new WaveFileReader(txtFileName.Text);
wsRaw = WaveFormatConversionStream.CreatePcmStream(wsRaw);    // Line A
wsRaw = new BlockAlignReductionStream(wsRaw);                 // Line B
WaveStream wsOKI = new RawSourceWaveStream(wsRaw, wfOKI);
 
WaveOut woCall = new WaveOut();
woCall.Init(wsOKI);    // <-- This line gives an error.
woCall.Play();
 
while (woCall.PlaybackState == PlaybackState.Playing)
{
       System.Threading.Thread.Sleep(300);
}
0
54 / 44 / 11
Регистрация: 15.07.2011
Сообщений: 160
24.11.2020, 06:04 5
В файле точно ADPCM с нужными параметрами? Если не уверены в формате файла, лучше использовать AudioFileReader, который его автоматически определяет. Вот пример: https://github.com/naudio/NAud... soleApp.md Громкость тут соответственно у WaveOutEvent нужно регулировать.
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
24.11.2020, 06:08 6
Цитата Сообщение от Volodya_drv Посмотреть сообщение
расскажите об альтернативном способе проигрывания аудио
Windows Media Player
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
24.11.2020, 06:16 7
Цитата Сообщение от I can Посмотреть сообщение
Windows Media Player
Расскажите о System.Media, либо о другом способе проигрывания аудио
1
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
24.11.2020, 10:51  [ТС] 8
Ну смотрите, у меня есть один и тот же трек и в mp3 и в wav.Но всё же я вас прошу покажите на примере как вы сами используете naudio(как пользователь "I can")- мне так лучше поймётся, а если распишите, то будет просто супер!

Добавлено через 2 минуты
I can, Спасибо вам за наглядный пример!
0
54 / 44 / 11
Регистрация: 15.07.2011
Сообщений: 160
24.11.2020, 11:06 9
Дык расписывать нечего, воспроизведение файла это буквально 5 строк, которые даже не надо писать самому, а просто скопировать из первого же примера в документации. Перенесу его сюда, на случай если ссылка умрет:

C#
1
2
3
4
5
6
using(var audioFile = new AudioFileReader(audioFile))
using(var outputDevice = new WaveOutEvent())
{
    outputDevice.Init(audioFile);
    outputDevice.Play();    
}
(убрал цикл со Thread.Sleep, так как в WinForms он не нужен и приведет к зависанию UI)

AudioFileReader пытается автоматически определить формат по содержанию файла и прочитать его, если есть кодеки для него. И для WAV, и для MP3 кодеки будут. Если надо исключить автоопределение, используем вместо AudioFileReader конкретный класс, например WaveFileReader, Mp3FileReader. Громкость здесь регулируется вызовом outputDevice.Volume = ... (от 0.0f до 1.0f).

Попробуйте применить этот пример, если что-то не получается, спросите.

А совет использовать Windows Media Player кстати неплохой, раз мы в рамках WinForms. Так получается без сторонних библиотек будет.
1
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
24.11.2020, 21:54  [ТС] 10
Вот сейчас просто супер рассказали, сейчас пойду гляну, если что напишу) Огромное спасибо!

Добавлено через 4 часа 24 минуты
I can, И снова здравствуйте) Всё отлично получилось с вашим вариантом, но всё же у меня есть вопрос: а можно ли как-то контролировать начало и конец песни, т.е - узнавать когда песня закончилась. Объясню зачем мне это- я создал форму при запуске которой должна играть рандомная песня из списка(в писке 10 песен(пока)).Как это можно реализовать?
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
24.11.2020, 22:49 11
Лучший ответ Сообщение было отмечено Volodya_drv как решение

Решение

Цитата Сообщение от Volodya_drv Посмотреть сообщение
можно ли как-то контролировать начало и конец песни, т.е - узнавать когда песня закончилась
Естественно. Набросаю пример немного попозже.

Добавлено через 1 минуту
Цитата Сообщение от Volodya_drv Посмотреть сообщение
должна играть рандомная песня из списка
Можно список создать, перемешать и плееру скормить.

Добавлено через 21 минуту
Например, создание и воспроизведение плейлиста из двух треков (у меня они одинаковые)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        private void button1_Click(object sender, EventArgs e)
        {
                 //axWindowsMediaPlayer1.URL = "C:\\tmp\\V.mp3";
                 //axWindowsMediaPlayer1.Ctlcontrols.pause();//Пауза
                 //axWindowsMediaPlayer1.Ctlcontrols.play();
                 var  p = axWindowsMediaPlayer1;
                 var playlist = p.playlistCollection.newPlaylist("Название");
 
                playlist.appendItem(p.newMedia("C:\\tmp\\V.mp3"));
                playlist.appendItem(p.newMedia("C:\\tmp\\V.mp3"));
 
                p.currentPlaylist = playlist;
                p.Ctlcontrols.play();
        }
Добавлено через 1 минуту
Так можно получать текущую позицию в секундах, например по тикам таймера

C#
1
double  p =  axWindowsMediaPlayer1.Ctlcontrols.currentPosition;
Добавлено через 1 минуту
Поставьте точку после Ctlcontrols, и подсказка много чего полезного покажет

Добавлено через 16 минут
Цитата Сообщение от Volodya_drv Посмотреть сообщение
узнавать когда песня закончилась
Статус

C#
1
 string s = axWindowsMediaPlayer1.status;
1
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
24.11.2020, 23:17  [ТС] 12
I can, Спасибо! А как постоянно обновлять данные?(желательно каждую секунду)
вот что я попытался придумать
C#
1
2
3
4
5
6
while(true)
{
 double  p =  axWindowsMediaPlayer1.Ctlcontrols.currentPosition;
 string _p=p.ToString():
 label3.Text=_p;
}
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
24.11.2020, 23:25 13
Цитата Сообщение от Volodya_drv Посмотреть сообщение
как постоянно обновлять данные?(желательно каждую секунду)
Ну есть же таймер. Зачем грузить систему циклом ?
0
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
24.11.2020, 23:27  [ТС] 14
Действительно, не подумал - извиняюсь(.
string s = axWindowsMediaPlayer1.status;- имеет два статуса true и false? просто на label отражается подключение
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
24.11.2020, 23:28 15
Для контроля изменения статуса можно использовать событие
Миниатюры
Расскажите о System.Media, либо о другом способе проигрывания аудио  
1
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
24.11.2020, 23:31 16
Цитата Сообщение от Volodya_drv Посмотреть сообщение
подключение
подключение
воспроизведение
остановлено
готово

и тому подобное

Добавлено через 1 минуту
Цитата Сообщение от Volodya_drv Посмотреть сообщение
просто на label отражается подключение
Потому что в цикле не успевал у вас обновляться label, в таймере будет хорошо
1
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
24.11.2020, 23:48  [ТС] 17
Огромное спасибо вам за всю вашу помощь!!
Миниатюры
Расскажите о System.Media, либо о другом способе проигрывания аудио  
1
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
24.11.2020, 23:59  [ТС] 18
I can, надеюсь я вам ещё не надоел, но не могли бы вы ответить на ещё один интересующий меня вопрос(он уже в новой теме)?)
Расскажите всё о таблицах в windows form
0
24.11.2020, 23:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2020, 23:59
Помогаю со студенческими работами здесь

Подключение флеш-модуля для проигрывания видео/аудио.
Здравствуйте! Проблема: вставить на сайт видео-модуль, с помощью которого можно просматривать...

Вместо проигрывания аудио файла система выдает короткий гудок
Сам код. #include &lt;stdio.h&gt; #include &lt;windows.h&gt; #pragma comment(lib, &quot;winmm.lib&quot;) #include...

Проверка проигрывания музыки через bass в другом приложении
Здравствуйте. К слову весь вопрос. Как проверить проигрывает ли музыку через bass другое...

System.Media.SoundPlayer
Как в System.Media.SoundPlayer менять громкость?

System.Windows.Media.Animation.AnimationException: 'Не удается анимировать свойство "Left" для "System.Windows.Controls
Пишу простую игру Save the humans по книге &quot;Изучаем C#&quot; столкнуля с ошибкой:...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru