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

Тема в разделе "Программирование", создана пользователем Antlion, 27 июн 2019.

  1. Antlion

    Antlion New Member

    Сообщения:
    14
    Симпатии:
    0
    В этом уроке я покажу как можно легко и просто воспроизвести музыкальный файл программно.
    Конечно лучше всего использовать библиотеку но мы сделает простой велосипед )

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

    Код:
    using Properties;
    using System;
    using System.IO;
    using System.Media;
    using System.Threading;
    Закинем в ресурсы волновой файл формата .wav

    P.S: Есть много конвертеров которые конвертируют любые форматы в .wav
    На примере можно взять : и конвертировать таким скриптом: 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();
    }
    }
    }

Поделиться этой страницей