В этом уроке я покажу как можно легко и просто воспроизвести музыкальный файл программно.
Конечно лучше всего использовать библиотеку NAudio но мы сделает простой велосипед )
Для начала подключаем зависимости
Закинем в ресурсы волновой файл формата .wav
P.S: Есть много конвертеров которые конвертируют любые форматы в .wav
На примере можно взять FFmpeg: и конвертировать таким скриптом:
P.P.S: Есть один минус из этого что файл на выходе будет прилично весить под 50 - 100 МБ.
Создадим класс MusicEdition.cs
Вопрос:
Как это работает?
Ответ:
Сначала мы проверяем файл на существование, если программа его находит что идём дальше, если нет то пишем уведомление пользователю что файл не найден.
После загружаем файл из нужного нам пути:
( Предварительно нужно обвернуть функцию SoundPlayer в using - чтобы освободить ресурсы проигрывателя )
Внутри функции мы загружаем музыкальный файл, после делаем проверку что файл был загружен успешно, и начинаем проигрывание )
С загрузкой из ресурсов те же самые манипуляции =)
Вызывается просто:
Конечно лучше всего использовать библиотеку 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();
}
}
}