C audio library windows

Библиотеки для проигрывания Аудио

Всем Здрасте. меня волнует такой вопрос, хочу написать плеер. Я уже писал один на библиотеке directX.
но там были только стандартные функции и он кушал около 25 мегабайт оперативки. думал взять Bass.dll, начал разбираться у меня голова лопнула. много очень не могу понять. По этому вопрос, какую библу лучше взять DirectX или bass.dll?

Жду ответов и советов!
Спасибо!

Открытие аудио-файлов из длл библиотеки
Есть приложение с формой и есть dll-ка с файлом ресурсов, в котором лежит wav файл. Как по клику.

Библиотека для проигрывания видео
Решил написать библиотеку для проигрывания видео, но выходят какие-то нестыковки. Что не так в моем.

Программа для проигрывания аудио
Подскажите САБЖ. Основные критерии: удобный плейлист, возможность создавать и сохранять его, чтобы.

Подключение флеш-модуля для проигрывания видео/аудио.
Здравствуйте! Проблема: вставить на сайт видео-модуль, с помощью которого можно просматривать.

Всем Здрасте. меня волнует такой вопрос, хочу написать плеер. Я уже писал один на библиотеке directX.
но там были только стандартные функции и он кушал около 25 мегабайт оперативки. думал взять Bass.dll, начал разбираться у меня голова лопнула. много очень не могу понять. По этому вопрос, какую библу лучше взять DirectX или bass.dll?

Жду ответов и советов!
Спасибо!

во фрейме 2+ вроде уже можно так:

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Подскажите библиотеки для создания Видео и Аудио плееров
1) Библиотеки для Видео проигрывателя. 2) Библиотеки для Аудио проигрывателя. НЕ предлагать.

Подскажите библиотеки для создания Видео и Аудио плееров на VB .NET
Подскажите библиотеки для создания Видео и Аудио плееров на VB .NET.

Библиотека для проигрывания MP3
Всем доброго времени суток. Не могли бы подсказать библиотеку для воспроизведения mp3.

Библиотеки для работы со звуком на ПК

В ходе работы над очередным проектом заказчик выразил пожелание добавить функционал обработки звука в реальном времени. Для этого было необходимо захватывать сигнал со звуковой карты, обрабатывать и отображать в интерфейсе результаты обработки, т.е. нужна realtime работа со звуком на ПК. Решение должно было быть кросс платформенным. Свой велосипед изобретать не было времени и желания. Поэтому был произведен поиск готовых решений для работы со звуком в интернете.

Там присутствовали следующие библиотеки:

Библиотека BASS отпала по причине платной лицензии для коммерческого использования. FMOD, кроме платности, не предоставляла нужный функционал. OpenAL ориентирована на игры. В итоге, выбор пал на PortAudio. К плюсам данной библиотеки можно отнести:

  • простой API,
  • удобную лицензию,
  • возможность работы под основными ОС.

Сборка

Для того чтобы начать работать с библиотекой необходимо собрать ее под нужную ОС. В моем случае это ОС семейства Windows, поэтому для сборки я использую компилятор MinGW. Что нужно сделать?

  1. Подготовить среду сборки. Для этого нужно скачать компилятор MinGW и среду MSYS. Установить, открыть shell MSYS и проверить работоспособность.
  2. Скачать исходники библиотеки с официального сайта. Распаковать их в папку с MSYS (для удобства). В моем случае это папка portaudio.
  3. Собрать библиотеку. Для этого запускаем shell, переходим в папку с PortAudio, даем команду конфигурации ./configure. По умолчанию собирается конфигурация для WMME. Если вам необходима другая конфигурация, используйте флаг -with-winapi. Далее подаем команду make. После завершения сборки бинарные файлы библиотеки находятся в папке lib.

Для работы с библиотекой из вашей программы будут нужны следующие файлы:

Работа

Работать с библиотекой достаточно просто, интерфейс построен на вызове функций. Обмен аудиоданными осуществляется с помощью callback функций. До начала работы необходимо вызвать функцию инициализации библиотеки Pa_Initialize():

Теперь самое время определить имеющиеся звуковые устройства. Для этого нужно произвести их поиск. Количество устройств возвращает функция Pa_GetDeviceCount(), а функция Pa_GetDeviceInfo() возвращает информацию об устройстве в виде структуры PaDeviceInfo. Ниже приведен пример функции, выполняющей поиск:

Сам обмен аудиоданными происходит посредством вызова библиотекой callback функции audioEngineCallback (в примере показан только захват данных с выбранного источника):

Для запуска процесса обмена аудиоданными нужно открыть устройство и запустить поток. При этом библиотека portaudio начнет вызывать функцию audioEngineCallback. Пример кода:

Для завершения процесса обмена необходимо остановить поток и закрыть устройство. Пример кода:

Если библиотека вам больше не нужна, нужно освободить ресурсы, используя функцию Pa_Terminate():

Полностью исходный код примера работы с библиотекой PortAudio можно скачать по ссылке Пример работы с PortAudio. Если вам нужна работа со звуком на ПК подобного вида обращайтесь к нам.

C audio library windows

CSCore — .NET Audio Library

CSCore is a free .NET audio library which is completely written in C#. Although it is still a rather young project, it offers tons of features like playing or capturing audio, en- or decoding many different codecs, effects and much more!

Читайте также:  Windows adding user to group

CSCore is based on a very extensible architecture which allows you to make it fit to your needs without any major effort. You can build music players, voice chats, audio recorders and so on! Supported platforms: Windows only, linux and mac experimental (see https://github.com/filoe/cscore/tree/netstandard).

For more details, take a look at the source or the online documentation.

Feel free to download or clone the source code:

You may prefer to install the CSCore nuget package:

For FFmpeg support, install the CSCore.Ffmpeg nuget package

  • Highly optimized PERFORMANCE through usage of CLI instructions
  • Designed for newbies and professionals
  • Tons of features
  • Fast support on github and stackoverflow
  • High code coverage through unit tests
  • Licensed under the MS-PL (does not include the CSCore.Ffmpeg project which is licensed under the LGPL)

Currently the following features are implemented:

  • Realtime audio processing
    • Process audio data in realtime
    • Apply any processors in any order you want in realtime
    • Create custom processors (e.g. effects, analyzes, decoders. )
  • Codecs *1
    • MP3
    • WAVE (PCM, IeeeFloat, GSM, ADPCM. )
    • FLAC
    • AAC
    • AC3
    • WMA
    • Raw data
    • OGG-Vorbis (through NVorbis)
    • FFmpeg (lots of additional formats, see CSCore.Ffmpeg)
  • FFmpeg support
    • Supported through CSCore.Ffmpeg)
  • Speaker Output
    • WaveOut
    • DirectSoundOut (realtime streaming)
    • WASAPI (loop- and event-callback + exclusive mode available)
    • XAudio2
  • Recording
    • WaveIn
    • WASAPI (loop- and event-callback + exclusive mode available)
    • WASAPI loopback capture (capture output from soundcard)
  • DSP Algorithms
    • Fastfouriertransform (FFT)
    • Effects (Echo, Compressor, Reverb, Chorus, Gargle, Flanger. )
    • Resampler
    • Channel-mixing using custom channel-matrices
    • Generic Equalizer
    • .
  • XAudio2 support
    • XAudio2.7 and XAudio2.8 support
    • 3D Audio support (see X3DAudio sample)
    • Streaming source voice implementation allowing the client to stream any codec, custom effect. to XAudio2
    • Optimized for games
  • Mediafoundation encoding and decoding
  • DirectX Media Objects Wrapper
  • CoreAudioAPI Wrapper
    • WASAPI
    • Windows Multimedia Devices
    • Windows Audio Session
    • Endpoint Volume.
  • Multi-Channel support
  • Flexible
    • Configure and customize any parts of CSCore
    • Use low latency values for realtime performance, high latency values for stability
    • Adjust the audio quality
    • Configure custom channel matrices
    • Create custom effects
    • .
    • Or simply: Make CSCore fit your needs!
  • Tags (ID3v1, ID3v2, FLAC)
  • Sample Winforms Visualizations
  • Optimized performance though the usage of CLI instructions provided by a custom post compiler

*1 Some Codecs are only available on certain platforms. For more details, see Codeplex-Page.

Some projects using already using cscore:

  • Dopamine: An music player which tries to keep listening to music clean and simple.
  • Hurricane: Is a powerful music player written in C# based on CSCore sound library.
  • Sharpex2D: A game engine which allows you to create beautiful 2D games under .NET for Windows and Mono compatible systems
  • Turnt-Ninja: A beat-fighting-ninja-like-get-turnt rhythm game inspired by the wonderful Super Hexagon by Terry Cavanagh.
  • HTLED: A audio visualization displayed on a selfmade 32×16 LED matrix.
  • .

For more samples see Samples

As long as this document is in development, see Codeplex for more details.

Простейший вывод звука с помощью библиотеки Audiere

Приветствую! Данная заметка ориентирована на начинающих программистов, самых, что ни на есть новичков. Она о простой библиотеке Audiere. Если вы когда-то хотели вывести звук просто и быстро, то Audiere вам скорее всего понравится!

Для начала расскажу немного о том, что это:

Audiere — это высокоуровневый аудио-API с открытым исходным кодом под лицензией LGPL. Его можно использовать во множестве языков, включая Java, C++, Python, Delphi и др. Разрешается использовать в коммерческих приложениях свободным образом, если исходный код не будет затронут (подробности в документации к библиотеке).

Подготовимся к реализации простейшего примера на C++:

  • Скачиваем библиотеку на оф.сайте (в моём случае — это Win32 Binary Release)
  • Традиционно переносим файл «audiere.lib» в папку «lib» компилятора, а заголовочник «audiere.h» также в папку «include» вашего компилятора

И напоследок, программа по-интереснее: сделаем примитивный музыкальный инструмент!

В этот раз мы будем пользоваться методом «getch()». Его отличие в том, что он работает также, как «getche()», но не отображает введенные символы. Но вдруг у вас получилась интересная мелодия и нужно посмотреть, что вы нажимали?: можно использовать и «getche()», а можно и в массив записывать с «getch()». Я намеренно не усложняю текст для новичков, чтобы не скрывать простоту кода, поэтому проверку на ошибки и всё остальное вы можете дописать сами.

Исходный код музыкального инструмента:

Файлы *.wav для этого проекта можно скачать здесь. Распакуйте их в папку с исходным кодом.

В «conio.h» есть хорошая альтернатива методу «cin>>» — это «getche()». «getche()» не дожидается ввода команды «Enter», а присваивает значение переменной сразу после нажатия клавиши:

Но как видишь ты сможешь нажать на клавишу лишь однажды, поэтому этот метод лучше использовать для массивов в циклах:

» !inputVar[i]==’\r’ » — это проверка на нажатие «Enter», если он будет нажат — цикл закончится. ‘\r’ — это признак возврата каретки.

А теперь, почему в коде «getche()» стоит так одиноко и не присваивается никакой переменной: нам это не нужно. Нужно лишь дождаться нажатия любой клавиши, после чего программа завершится.

С помощью «setlocale(0, „Russian“);» устанавливается поддержка вывода русского текста в консоль (но не ввода).

Следующие две строки будут понятнее после более продолжительного знакомства с C++, например, по книге

Герберт Шилдт — «Полный справочник по C++»

Поскольку «sound» у нас — это указатель, то методы для него будут выполняться с помощью оператора стрелочки «->», а не точки; как могло бы быть: «sound.play()». Этому, в вышеупомянутой книге, посвящена глава «Указатели».

Комментарий к конструкции «if else»:

Для всех следующих проверок мы использовали «else if», что даёт прирост скорости для программы, потому что после проверки каждого значения и его соответствия нажатой клавишы — остальные опреаторы else if выполнены не будут. Если бы мы записали:

то несмотря, на нажатую, например, клавишу ‘q’ — все остальные условия всё равно бы проверялись, что в данном случае бессмысленно.

Желаю успеха в обучении!

Читают сейчас

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

Эксперт: Хакеры могут использовать Web Audio API для снятия цифрового отпечатка

Концепции, лежащие в основе Web Audio API

Генератор музыки. Web Audio API. Опыт новичка

Вакансии

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Минуточку внимания

Комментарии 22

У меня есть почему-то стойкое ощущение что подобная статья не совсем для Хабра…

Вопрос к автору, раз уж вы решили в цикле проверять нажатие клавиш, то почему у вас прописано:

Статья подается как учебный материал, но учит не очень хорошему стилю.

А вообще я бы посоветовал использовать switch в подобных случаях.

По поводу else if.

Еще мне кажется у вас ошибка в коде:

Вы создаете массив на 30 элементов, но вот счетчик у вас почему-то до 100.

P.S. Интересно, кто-нибудь догадается на Хабр написать статью про написание HelloWord на С++…

Еще один вопрос автору, зачем делать вот это:

если честно, не совсем понятна логика сего действа. В современном мире есть IDE, которые не позволяют подключить библиотеку к проекту и надо все используемые библиотеки и заголовочные файлы копировать туда, где расположены файлы стандартной библиотеки?

А какой конкретно компилятор вы имели ввиду? Может есть менее экзотические способы подключать библиотеки ?!

Ну как бы выразиться поточнее…
Дело не в том, очевидные это вещи или нет. Дело в том, что вы учите не совсем правильному подходу. Я не против как таковых статей для новичков, я против того, чтобы этих новичков учили неправильным вещам. Переучивать их потом выходит дороже, чем учить с нуля.

И если вы позиционируете статью как учебную, тогда вам вопрос от новичка, где человек должен искать у себя на ПК папку с компилятором? Вы ведь не показываете пример работы в какой-то конкретной среде, я могу использовать VisualStudio, могу использовать связку Qt+MinGW и т.д.
Так как новички обычно не устанавливают компилятор вручную, а ставят сразу какую-нибудь IDE, мне лично кажется что процесс поиска папки, где расположены стандартные библиотеки компилятора, будет для них не совсем тривиальным, и скорее всего они полезут в Гугл. А если они полезут в Гугл, зачем нужна ваша статья?

Мало того, что в самом коде есть ошибки, так и в ней нет каких-то особенностей, относящихся конкретно к Audiere, поменяй имя библиотеки с Audiere на любое другое имя и 80% статьи останется без изменений.

Хочу выразить одну мысль, хотелось бы узнать Ваше видение.

Хабрахабр имеет возможность оставлять комментарии проверенных пользователей, которые, по-видимому по логике здесь уже находятся с чёткой целью — совершенствовать способности. Из рационального подхода и всем искренним желанием своего сердца, я всё же, надеюсь, что мы не будем учитывать некоторый процент самоутверждения среди пользователей, когда мы занимаемся бессмысленными обсуждениями или мыслями, без которых можно обойтись.

Теперь после предисловия, сама мысль: я думаю, вернее будет использовать статьи, как предмет потенциально незаконченный (иначе бы здесь не было возможности редактирования), а как предмет с редакцией. Я думаю, комментарии под статьёй в первую очередь должны быть направлены на пополнение статьи, обогащение её опытом каждого. В конце концов, нет более правильного способа сделать что-то хорошо, кроме как улучшить, то что сделано недостаточно хорошо. Есть редкие случаи когда не следует улучшать то, что не способно заработать — но это чаще всего уже определено в момент создания. Если бы мы, как люди, направившие общее устремление к движению к гипотетической, но силой важной — к истине, и были ювелирами мысли, то я думаю многие предметы, включая подобные статьи стали бы гораздо эффективнее. И у меня к Вам вопрос, я уверен, что когда-то Вы сталкивались с резким отношением к своим мысленным рассуждениям. Чаще всего критическое отношение имеет ключ «Нет, это не нужно.». Вы наверно задумывались, что созиданием можно было бы сделать куда больше, чем пресекать даже попытки что-то изложить. Мне нравится пример некоторых русских классических литературных критиков: в их критических статьях они не рубили с плеча рассматривая рассказы и их авторов, а были глубоко вовлечены в их становление и движение к усовершенствованию, были соучаствовавшими в их достижении мастерства.

В послесловии Вас хотел бы поблагодарить за критические дополнения. Думаю, (нам ведь есть чему учиться ) нам нужно немножко менять отношение от критических оценок, всё-таки это не работает и не помогает.

Думаю здесь ключевая ошибка в концепции, что что-то принадлежит мне или ему, у меня есть глубокое убеждение, что переход во всеобщее достояние имеет в перспективе более полную свободу для совершенства и пользы для человечества, нежели желание иметь собственность. Но это я лишь предполагаю, ошибается всякий. Мне кажется, что в вики это довольно глубокая идея обобщения всеобщего опыта. По поводу бардака — думаю есть вероятность, что нынешний вариант это не менее хаотичное и разбросанное качество организации статей. Та статья, которая была написана несколько лет назад и уже устарела — больше уже не перепишется, не обновится, не исправится. Всё-таки во всём должны существовать формы, если бы их не было, то, например музыка была бы лишь чередованием несвязности. Также и научный и публицистический материал должен быть организован в формы, например энциклопедии. Есть возможности обновлять, совершенстовать форму — и энциклопедия в этом тоже ещё может измениться. Но у энциклопедичности есть минус несомненный — данная форма лишает индивидуальности, соответственно статьи бы здесь потеряли налёт человеческого обличия.

Получается, что подобие «гонзо-журналистики» — добавляет приятный оттенок живой истории или рассказа, в ущерб энциклопедичности; а энциклопедичность, имея наиболее совершенную форму в передаче фактической информации, становится холодным бездушным текстом. Выходит, что подобные статьи, как у меня, и лишенные энциклопедичности — это тот возможный процент, где у этой концепции имеются минусы и позволяют появляться определенному проценту незавершенных статей.
В конце концов, в корне лежит простое человеческое желание чем-то поделиться, радостью творчества или открытия. Когда-то мне очень хотелось бы даже подобной статьи, но её не было. Статьи ориентированные на новичков часто переполнены излишками иной информации, хотя несомненно нужной в перспективе. И когда ты всего лишь хочешь сделать винт для самолёта, тебе рассказывают как построить весь самолёт. И таким образом статьи в которых указаны мельчайшие нюансы, вызывают перегрузку информацией и замедляют процесс обучения. Я однажды пробовал читать Кантора и его теорию множеств — и конечно же из этого ничего не вышло. Обучающийся, если он на самом деле учится — обучится, и отточит всё что нужно. У меня есть мысль, что так часто упоминающееся заучивание плохого стиля кода или иных механических повторений — свойственно тем, кто в сути и не обучается, а лишь подстраивается под выполнение определенных требований. Человек, цель которого решить задачу и получить за неё хорошую оценку (не вылететь с работы) — никогда не задумается ни о каком стиле, или лучшем алгоритме. В таком смысле, под редакцией статьи я лишь подразумевал желание человека учиться, принимать свои ошибки, перестать подпитывать собственное самоутверждение; а со стороны иных людей — желание помочь, а не изобличить, действие — а не оценочная критика, перестать относиться друг к другу в соревновательной концепции и не давать ход ко взаимному унижению. Вся эта система собственничества и самоутверждения в социуме ведет лишь к деградации моральных аспектов человека, людям недостаёт простоты, равнодушие и отношение друг к другу как к лишь безжизненным механизмам усиливается, мы резко настроены против друг друга и скпетицизм используем не для движения к чему-то наиболее верному, а на самом деле для того, чтобы нас не пошатнули. Мне бы хотелось, чтобы люди помогали друг другу, учит всегда лишь собственный пример. Один строитель видит камень у основания непрочный — и меняет его, а не ищет виноватых показывая как сейчас рухнет дом. Он показывает как его сохранить. Всё же я думаю есть, что можно ещё улучшить в наших способах делиться информацией в интернете и обучаться, многое работает не достаточно хорошо и это можно менять.

Я понимаю вашу мысль, но давайте ее продолжим так. Что, если бы читатели могли дописывать книги или вносить в них исправления? И в журналы бы отправляли свое видение, как должна выглядеть статья по их мнению.
Статья или роман тем и отличается от вики, что это законченное произведение.
А так возможно один читатель захотел бы, чтоб Анна Каренина не бросилась под поезд, а повесилась, другой бы захотел, чтоб она выжила и вышло еще 15 книг про ее жизнь и т.д. В этом случае вы, как автор, не несете никакой ответственности за содержание статьи.

Возьмем даже текущую статью, первоначально в переборе нажатых кнопок было использованы условия if. Я сказал, что в данном случае, если уж так хочется использовать if, стоит использовать else if. Но, я также по прежнему считаю, что в данном случае необходимо использовать switch. Будем править статью еще раз?
А придет другой, и скажет, что ему else if привычнее. Что будем делать? На каждую статью назначать редактора, который будет выбирать наиболее правильное, с его точки зрения, решение? На вики ведь так и происходит, статьи правятся редакторами.
Мне кажется идея несколько утопическая.

Читайте также:  Adb app control linux
Оцените статью