Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
39 / 40 / 10
Регистрация: 07.01.2010
Сообщений: 148
1

Воспроизвести mp3

25.11.2011, 22:07. Показов 3361. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача такая:
Есть два mp3 файла которые нужжно воспроизвести по очереди!!! При желании несколько раз!

Делаю в кнопке
1 воспроизведение одного
2 запуск таймера

Переходим в событие Тик
1 воспроизводим второй файл

Вроде бы все просто но если воспроизводить файлы вотрым способом !кучу раз! оба файла воспроизводит норально!

Если первый способ то воторой файл воспроизводиться с эхом и с каждым нажатием оно усиливается!

Способ 1
Код :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
 using Microsoft.DirectX.AudioVideoPlayback;
 
Audio audio;
 
private void button1_Click(object sender, EventArgs e)
        {
             
              audio = new Audio(@"C:\Program Files\HomeProject\Azbuka\Sound\Фразы\Покажи_букву.mp3", true);
             
              timer1.Interval = 1000;
              timer1.Tick += new EventHandler(timer1_Tick);
              timer1.Start();
        }
 
 private void timer1_Tick(object sender, EventArgs e)
        {
        
             audio = new Audio(@"C:\Program Files\HomeProject\Azbuka\Sound\Фразы\А.mp3", true);
             timer1.Enabled = false;
            
        }

Способ 2
Так же делал вот так ну это от без исхоности За то робит)))))

C#
1
2
3
4
5
6
7
8
9
10
11
12
private void button1_Click(object sender, EventArgs e)
 {
                audio = new Audio(@"C:\Program Files\HomeProject\Azbuka\Sound\Фразы\Покажи_букву.mp3", true);
 
         for (int i = 0; i < 500000000; i++)
            {
                i = i + 2;
            }
 
               audio = new Audio(@"C:\Program Files\HomeProject\Azbuka\Sound\Фразы\А.mp3", true);
              
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2011, 22:07
Ответы с готовыми решениями:

Как воспроизвести ogg
Для моей игры необходима музыка в ogg формате, так как wav просто невероятный размер хавает! Нужен...

Воспроизвести звук .net core
Всем привет, стоит задача прикрутить звук к уведомлениям на .net core UI делаю с помощью Avalonia....

Как воспроизвести звук из сис. динамика?
Как воспроизвести звук из сис. динамика(того что &quot;PC Speaker&quot;)? Это все нужно проделать на Windows...

Bass.Net.dll: как воспроизвести файл
Ребят. Уже надоело гуглить и лазить по форуму. Подскажите как правильно воспроизвести файл...

4
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
26.11.2011, 02:00 2
Цитата Сообщение от bellliy Посмотреть сообщение
Если первый способ то воторой файл воспроизводиться с эхом и с каждым нажатием оно усиливается!
Потому-что каждое нажатие на кнопку, таймер подписывается на новый обработчик, то есть timer1.Tick ссылается на столько обработчиков, сколько раз была нажата кнопка. После того как подпишется, он воспроизводится выполняя код в обработчике. Первое нажатие на кнопке запускается один раз timer1_Tick, второе нажатие уже 2 раза, и каждое последующее прибавляет ещё один раз. Вот и эхо.
Вот это перенеси в конструктор окна:
C#
1
2
timer1.Interval = 1000;
timer1.Tick += new EventHandler(timer1_Tick);
И насчёт этого:
Цитата Сообщение от bellliy Посмотреть сообщение
C#
1
2
3
4
for (int i = 0; i < 500000000; i++)
 {
 i = i + 2;
 }
Ну уж хотя бы можно было использовать Thread.Sleep(1000). А так конечно таймер куда более нормальный вариант.
1
39 / 40 / 10
Регистрация: 07.01.2010
Сообщений: 148
26.11.2011, 02:50  [ТС] 3
Спасибо за ответ большое=)

Но пока ждал решение решил проблемму так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 using System;
    using System.Timers;
    using System.Windows.Forms;
    using System.Threading;
 
 
namespace MyTimer
{
    class Delay
    {
 
        bool Mytimer_Polon = false;
        System.Timers.Timer Mytimer;
 
        public Delay()
        {
            Mytimer = new System.Timers.Timer();
            Mytimer.AutoReset = false;
            Mytimer.Elapsed += delegate// Событие
            {
                Mytimer_Polon = true;
            };
        }
 
        public void Delay_ms(int Delay_ms)// Функция для использования
        {
            Mytimer.Interval = Delay_ms;
            Mytimer.Enabled = true;
            while (Mytimer_Polon == false)// пока не наполниться
            {
                Application.DoEvents(); Thread.Sleep(9);// Тормозим поток но сохроняем жизнь формы
            } // Ожидает
            Mytimer.Enabled = false;
            Mytimer_Polon = false;
        }
    }
}
Очень удобно пользоваться! Если нужна в программе задержка!
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
26.11.2011, 03:02 4
Не-е-е, помоему это не решение. Это вообще какой-то изврат. То есть там где можно сделать нормально, сделано просто через одно место (ИМХО).

Ещё совет:
Называй поля с маленькой буквы в твоём случае (не используй ты эти прочерки между слов (хотя дело твоё)):
C#
1
bool myTimerPolon = false;
Добавлено через 3 минуты
Советую почитать "Соглашения по оформлению кода команды RSDN", тут всё описано действительно по уму. Только можно не согласиться с названием полей с прочерка (bool _myTimerPolon), но и то в принципе тоже вариант.
1
39 / 40 / 10
Регистрация: 07.01.2010
Сообщений: 148
28.11.2011, 16:33  [ТС] 5
Почитаем=)
0
28.11.2011, 16:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2011, 16:33
Помогаю со студенческими работами здесь

Как воспроизвести аудио файлы размером 1 килобайт?
У меня есть .wav аудио файлы очень малого размера - 1Кб, как массивы байтов, и я пробую...

Как одновременно воспроизвести аудио-потоки от разных участников чата?
Пишу аудио-чат конференцию. Передаю аудио-поток с микрофона клиента на сервер, с сервера...

Как воспроизвести видео на форме
Нужно что бы по нажатию кнопки просто запускалось видео без всяких красивостей.

Изменить цвет и потом воспроизвести звук
Здравствуйте. C# приложение WPF Всё работает но немного не так. При нажатии на кнопку сначала...


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

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