Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2009, 12:18   #1
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
Вопрос Воспроизведение mp3

Кто нибудь знает как/чем воспроизводить звуки в формате mp3? В Visual Studio 2008 Express? Компонента MediaPlayer, ну или подобного, не нашёл.
Код:
System.Media.SoundPlayer SP = new System.Media.SoundPlayer();
            SP.SoundLocation = Application.StartupPath + "\\Вход в Windows XP.wav";
            SP.Load();
            SP.Play();
такой способ, только Wav воспроизводит.
Casper-SC вне форума Ответить с цитированием
Старый 22.12.2009, 12:45   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Код:
private string _command;
private bool isOpen;
[DllImport("winmm.dll")]
 
private static extern long mciSendString(string strCommand,StringBuilder strReturn,int iReturnLength, IntPtr hwndCallback);
 
public void Close()
{
   _command = "close MediaFile";
   mciSendString(_command, null, 0, IntPtr.Zero);
   isOpen = false;
}
 
public void Open(string sFileName)
{
   _command = "open \"" + sFileName + "\" type mpegvideo alias MediaFile";
   mciSendString(_command, null, 0, IntPtr.Zero);
   isOpen = true;
}
 
public void Play(bool loop)
{
   if(isOpen)
   {
      _command = "play MediaFile";
      if (loop)
       _command += " REPEAT";
      mciSendString(_command, null, 0, IntPtr.Zero);
   }
}
или скачай тут
http://www.csharphelp.com/2006/06/mp3-jukebox/
Hollander вне форума Ответить с цитированием
Старый 22.12.2009, 13:54   #3
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

+ DirectX соответственно...
dampirik вне форума Ответить с цитированием
Старый 22.12.2009, 16:02   #4
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
+ DirectX соответственно...
Ничего не понял. Если бы я знал как, то я бы не спрашивал. Спасибо конечно, но это не ответ на вопрос.

Кто знает, что такое WPF? Я как понял, там можно 3D приложения писать, значит и звук и скины?

Последний раз редактировалось Casper-SC; 22.12.2009 в 16:16.
Casper-SC вне форума Ответить с цитированием
Старый 24.12.2009, 02:59   #5
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
По умолчанию

WPF - новая технология создания Windows Form приложений, где разметка контролов, стилей кнопок, рисование и т.д осуществляеться языком XAML.
Типа аля css для винформа. Она позволяет создавать свои красивые интерфейсы, что можно сделать в Microsoft Expression Blend
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Старый 26.12.2009, 03:22   #6
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
[DllImport("winmm.dll")]
Где это писать? У меня выдаёт ошибку


///////////////////////////////////////////////

В очередной раз сам нашёл ответ. Чтобы [DllImport("winmm.dll")] работало, надо в using прописать:
Код:
 using System.Runtime.InteropServices;
А лучше сделать так: Проект -> Добавить класс
Вот код всего класса:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices; //Чтобы работал DllImport

namespace WindowsFormsApplication1
{
    public partial class MediaPlayer
    {
        private string _command;
        private bool isOpen;

        [DllImport("winmm.dll")]
        private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

        public void CloseMediaFile()
        {
            _command = "close MediaFile";
            mciSendString(_command, null, 0, IntPtr.Zero);
            isOpen = false;
        }

        public void Open(string sFileName)
        {
            _command = "open \"" + sFileName + "\" type mpegvideo alias MediaFile";
            mciSendString(_command, null, 0, IntPtr.Zero);
            isOpen = true;
        }

        public void Play(bool loop)
        {
            if (isOpen)
            {
                _command = "play MediaFile";
                if (loop)
                    _command += " REPEAT";
                mciSendString(_command, null, 0, IntPtr.Zero);
            }
        }
    }

}
можно дополнить его естественно.

Потом этот класс вызывать в программе можно так:
Код:
...
        MediaPlayer MP = new WindowsFormsApplication1.MediaPlayer();
        MP.Open(Application.StartupPath + "\\Sounds\\FonMusic.mp3");
        MP.Play(true);
...
Преимущества этого кода в том, что можно воспроизводить одновременно много звуков, создав несколько переменных этого класса

Последний раз редактировалось Casper-SC; 26.12.2009 в 20:56.
Casper-SC вне форума Ответить с цитированием
Старый 26.12.2009, 04:45   #7
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Нашёл на одном форуме, у меня всё работает:

Код:
//создаем класс воспроизведения аудио файлов

Microsoft.DirectX.AudioVideoPlayback.Audio song = new Microsoft.DirectX.AudioVideoPlayback.Audio(@"E:\song.mp3");
//проигрываем файл
song.Play();

//примечание: нужно вручную добавить библиотеку Microsoft.DirectX.AudioVideoPlayback в Ваш проект
 (ProjectName -> Add Referense) или (Проект -> Добавить ссылку)
Запускал программу на другом компьютере, там виндос не находил какой-то файл DirectX. И при компиляции программы тоже выводиться какое-то сообщение. Короче есть скриншот
Цитата:
Обнаружено событие LoaderLock
Message: Библиотека "C:\WINDOWS\assembly\GAC\Microsoft. DirectX\1.0.2902.0__31bf3856ad364e3 5\Microsoft.DirectX.dll" пытается выполнить управляемый код под блокировкой OS Loader. Запуск управляемого кода в пределах функции DllMain или функции инициализации образа может вызвать зависание приложения.

Последний раз редактировалось Casper-SC; 26.12.2009 в 19:16.
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспроизведение mp3 Gerzs Мультимедиа в Delphi 10 07.12.2009 14:45
Воспроизведение MID Alex Cones Мультимедиа в Delphi 14 30.11.2009 17:51
воспроизведение покругу Mazaxaka Мультимедиа в Delphi 1 22.02.2009 17:05
Воспроизведение SLIMMUS Общие вопросы Delphi 1 13.09.2008 15:45
MediaPlayer - как сделать последовательное воспроизведение mp3 файлов (именно mp3) Kashp Компоненты Delphi 13 28.09.2007 08:38