• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

С# Пишем музыкальный воспроизводитель музыки в формате .wav

Antlion

Участник
Сообщения
12
Реакции
13
0 руб.
Telegram
В этом уроке я покажу как можно легко и просто воспроизвести музыкальный файл программно.
Конечно лучше всего использовать библиотеку NAudio но мы сделает простой велосипед )

Для начала подключаем зависимости

Код:
using Properties;
using System;
using System.IO;
using System.Media;
using System.Threading;

Закинем в ресурсы волновой файл формата .wav

P.S: Есть много конвертеров которые конвертируют любые форматы в .wav
На примере можно взять FFmpeg: и конвертировать таким скриптом: ffmpeg - i вашфайл.mp3 вашфайл.wav

P.P.S: Есть один минус из этого что файл на выходе будет прилично весить под 50 - 100 МБ.

Создадим класс MusicEdition.cs

Вопрос
:
Как это работает?

Ответ:
Сначала мы проверяем файл на существование, если программа его находит что идём дальше, если нет то пишем уведомление пользователю что файл не найден.

После загружаем файл из нужного нам пути:
( Предварительно нужно обвернуть функцию SoundPlayer в using - чтобы освободить ресурсы проигрывателя )
Внутри функции мы загружаем музыкальный файл, после делаем проверку что файл был загружен успешно, и начинаем проигрывание )

С загрузкой из ресурсов те же самые манипуляции =)

Код:
namespace MusicPlay
{
    using Properties;
    using System;
    using System.IO;
    using System.Media;
    using System.Threading;

    public class MusicEdition
    {
        public static void PlayFrom(string path_wav)
        {
            if (File.Exists(path_wav))
            {
                try
                {
                    Console.WriteLine("Файл найден... Загружаем...");
                    using (var player = new SoundPlayer())
                    {
                        player.SoundLocation = path_wav;
                        player.Load();
                        if (player.IsLoadCompleted)
                        {
                            Console.WriteLine("Загрузка завершена.");
                            Thread.Sleep(1000);
                            Console.WriteLine("Запускаем проигрывание.");
                            player.Play();
                        }
                        else
                        {
                            Console.WriteLine("Загрузка не успешна");
                        }
                    }
                }
                catch (InvalidOperationException ioe) { Console.WriteLine(ioe.Message); }
            }
            else
            {
                Console.WriteLine("Музыкальный файл не обнаружен.");
            }
        }

        public static void PlayFromResource()
        {
            using (UnmanagedMemoryStream str = Resources.Music) // Resources.Music - ваш музыкальный файл.
            {
                try
                {
                    using (var snd = new SoundPlayer(str))
                    {
                        snd.Load();
                        if (snd.IsLoadCompleted)
                        {
                            Console.WriteLine("Загрузка завершена.");
                            Thread.Sleep(1000);
                            Console.WriteLine("Запускаем проигрывание.");
                            snd.Play();
                        }
                        else
                        {
                            Console.WriteLine("Загрузка не успешна");
                        }
                    }
                }
                catch (InvalidOperationException ioe) { Console.WriteLine(ioe.Message); }
            }
        }
    }
}

Вызывается просто:

Код:
namespace MusicPlay
{
    using System;

    internal static class Program
    {
        private static readonly string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

        [STAThread]
        public static void Main()
        {
            //MusicEdition.PlayFrom(Path.Combine(Desktop, "1.wav"));
            MusicEdition.PlayFromResource();
            Console.ReadKey();
        }
    }
}
 
Сверху Снизу