Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
mradermaxlol
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 22
1

Воспроизведение OGG через OpenTK (OpenTK.OpenAL) из ресурсов

26.05.2015, 21:46. Просмотров 985. Ответов 7
Метки нет (Все метки)

Добрый вечер всем!

Не по теме:

Собственно, мой первый пост :)



Имеется проблема с воспроизведением звуков OGG (и любых других) файлов из ресурсов приложения (встроено как Content, т.е. можно вызвать через Properties.Resources). Честно говоря, OpenAL вообще отказывается воспроизводить звук, даже через путь. А нужно, чтобы не было ненужных файлов в отдельной папке. Может кто растолковать дауну новичку как пользоваться OpenTK.Audio (OpenAL)? Или есть другие кросплатформенные open-source либы воспроизведения звука?
Примечание
Пробовал NAudio, NVorbis, DragonOGG (не заработал), BASS (даже инициализироваться отказался)...


https://drive.google.com/file/d/0ByN...ew?usp=sharing - ссылка на солюшн VS C# 2010. Если можно, хотелось бы увидеть пример воспроизведения звука из ресурса в одном методе (Main, если конкретно)
Заранее благодарю.

Добавлено через 44 минуты
Кстати, пробовал и через MemoryStream файл добавлять.
C#
1
MemoryStream ms = new MemoryStream (Properties.Resources.background);
Не сработало, тишина.
И с массивом byte[] не склалось - всегда писал ошибку
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2015, 21:46
Ответы с готовыми решениями:

Рендеринг видео потока используя OpenTK и LibVLC
Здравствуйте! Требуется отрендерить на полигон видео. Решил использовать LibVLC, нашел пример для...

Проблема с openTK. Не устанавливается фон (всё время он белого цвета)
Здравствуйте. Недавно скачал для Visual studio 17, библиотеку - openTK (Для работы с 3д). Все...

Как нарисовать линию с использованием библиотеки OpenTK
Вот пример один в один с книжки. Но масштаб отображается не верно. Линии, которые рисуются в цикле...

Воспроизведение mp3 из ресурсов
Помогите люди плизз, вот есть библиотека Audio.PlayBack Как мне там задать путь из ресурсов...

Воспроизведение звука из ресурсов
Я себе добавил звук в проект, и он играет постоянно. Вопрос: файлу приходится прописывать путь...

7
kzru_hunter
1064 / 779 / 100
Регистрация: 01.02.2011
Сообщений: 1,795
Записей в блоге: 1
26.05.2015, 21:57 2
Может в папку temp сохранять и оттуда воспроизводить?
0
mradermaxlol
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 22
26.05.2015, 23:22  [ТС] 3
kzru_hunter, спасибо, но как это реализовать?
0
Изображения
 
kzru_hunter
1064 / 779 / 100
Регистрация: 01.02.2011
Сообщений: 1,795
Записей в блоге: 1
27.05.2015, 12:23 4
Цитата Сообщение от mradermaxlol Посмотреть сообщение
но как это реализовать?
Использовать File.WriteAllBytes(), например так:
C#
1
2
3
String FileName = File.WriteAllBytes(Path.GetTempFileName(), Properties.Resources.MyFile)
//и по завершении программы удалять этот файл:
File.Delete(FileName);
Можно ещё попробовать функцию ниже. Изюминка этой функции в том, что файл сам удалится по завершении программы. Единственная проблема: после создания этого файла, доступ к этому файлу возможен только для чтения.
C#
1
2
3
4
5
6
7
8
9
10
11
12
        /// <summary>
        /// Создаёт из byte[] временный файл в папке temp с заданным расширением.
        /// По закрытии программы этот файл самоудалится.
        /// </summary>
        private String CreateTempFileFromBytes(byte[] bytes, String FileExtension)
        {
            String s = Path.GetTempPath() + Path.GetFileNameWithoutExtension(Path.GetRandomFileName()) + FileExtension;
            File.WriteAllBytes(s, bytes);
            new FileStream(s, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.DeleteOnClose);
 
            return s;
        }
Использование:
C#
1
String sFileName = CreateTempFileFromBytes(Properties.Resources.MyFile, ".exe");
По поводу самого вопроизведения звуков из файла - я не пробовал. Сам ещё новичок в C#
1
27.05.2015, 12:23
mradermaxlol
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 22
27.05.2015, 14:01  [ТС] 5
Цитата Сообщение от kzru_hunter Посмотреть сообщение
По поводу самого вопроизведения звуков из файла - я не пробовал.
Ну, это уже будет проще Спасибо!
0
kzru_hunter
1064 / 779 / 100
Регистрация: 01.02.2011
Сообщений: 1,795
Записей в блоге: 1
27.05.2015, 16:07 6
Попробовал библиотеку irrKlang - вроде нормальная (воспроизводит .wav, .ogg, .mp3, .flac).
C#
1
2
3
4
5
6
7
using irrKlang;
...
ISoundEngine engine = new ISoundEngine();
ISoundSource source = engine.AddSoundSourceFromMemory(Properties.Resources._1, "mp3");
ISound sound = engine.Play2D(source, false, true, false);
sound.Volume = 0.5f;
sound.Paused = false;
Единственно, нужно, чтобы заранее в выходной папке лежали файлы ikpFlac.dll и ikpMP3.dll, иначе mp3 и flac не будет воспроизводить.
0
Вложения
Тип файла: rar test.rar (1.16 Мб, 5 просмотров)
mradermaxlol
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 22
27.05.2015, 19:38  [ТС] 7
kzru_hunter, я тоже пробовал, но бесят всякие надписи (нестираемые) в окне консоли, которые не видны в VSHost, но видны в просто экзэшнике. Хотя, может, виноват ILMerge...
0
kzru_hunter
1064 / 779 / 100
Регистрация: 01.02.2011
Сообщений: 1,795
Записей в блоге: 1
27.05.2015, 22:03 8
Там можно это убрать. Плохо, что не сразу в хелпе можно найти про эти настройки.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        SoundEngineOptionFlag options = SoundEngineOptionFlag.DefaultOptions ^ SoundEngineOptionFlag.PrintDebugInfoToStdOut;
        ISoundEngine engine = new ISoundEngine(SoundOutputDriver.AutoDetect, options);
        ISoundSource source = engine.AddSoundSourceFromMemory(Project1.Properties.Resources._11, "mp3");        
 
        ISound sound = engine.Play2D(source, false, true, false);
        if (sound == null)
        {
            Console.Write("error playing");
            Console.Read();
            return;
        }
       
        sound.Volume = 0.5f;
        sound.Paused = false;
        Console.Read();
1
27.05.2015, 22:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2015, 22:03

Воспроизведение файла из ресурсов
public static extern long PlaySound(String lpszName, long hModule, long dwFlags); ...

Воспроизведение .wav из ресурсов
Добавил файл в ресурсы: Пытался вызвать его на проигрывание двумя способами: ...

OpenTK. Рисование сферы
У университете задали задание: Сделать Солнце, Землю и Луну и осуществить вращение Земли вокруг...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru