2010-01-12 3 views
6

Несколько лет назад я написал некоторую библиотеку утилиты вокруг DShow/DSound, чтобы позволить мне воспроизводить MP3 в приложении Windows C++. Это нормальный способ сделать это в приложении C++/MFC или это область DirectX, которая была включена в общие API Windows?Простой способ воспроизведения mp3 с Visual C++

Мотивация заключается в том, что мы просто используем стандартный метод Windows PlaySound для WAV и хотели бы иметь возможность воспроизводить MP3-файлы с использованием аналогично простого API, предоставляемого Windows, или того, что мы пишем, чтобы обернуть более сложные функции.

EDIT: это для большого коммерческого проекта с закрытым исходным кодом. И мы просто хотим просто поиграть, много заплатить за библиотеку не будет.

ответ

-1

Вы можете взглянуть на BASS. Это простая в использовании аудио-библиотека, бесплатная для некоммерческого использования.

6

Вы можете использовать DirectShow, но это не часть DirectX больше или полагаться на сторонние библиотеки, как Bass, FMod, mpg123 или даже libwmp3.

Если вы не хотите больше использовать DirectShow (? Но зачем менять, если существующий код продолжает работать), вы можете использовать MCI:

mciSendString("open la_chenille.mp3 type mpegvideo alias song1", NULL, 0, 0); 
mciSendString("play song1", NULL, 0, 0); 
mciSendString("close song1", NULL, 0, 0); 
+0

Несколько потенциальных подводных камней с этим фрагментом: 1. Марка что путь к вашему файлу правильно процитирован \ " \" 2. Я обнаружил, что передача «close song1» сразу после «play song1» повлияла на то, что звук не воспроизводится. т. е. звук будет открыт, а затем сразу же закрыт. – Dave

0

Если вы не хотите платить какой-либо лицензии и захотите сделать это, сделайте разбор вашего mp3-файла и передайте его XAudio2. Это то, что вы можете сделать один раз (2-3 часа максимум) и использовать всегда. : P

+0

Как это лучше, чем DirectShow? Оба являются MS API, но пользователи уже имеют DShow (возможно). Есть ли преимущество? –

+0

DirectShow имеет другую цель, для «мультимедиа», так как для мультимедиа смысл очень широк. (и в настоящее время он больше не обновляется) XAudio2 является заменой DirectSound, является кросс-платформенным Xbox360/ПК для аудио API на уровне низкого уровня. Microsoft хочет использовать его как единственный API для использования в Windows. – feal87

2

Youc может использовать MCI функции окна, https://msdn.microsoft.com/en-us/library/ms709626

Он может проигрывать многие аудио форматы файлов, включая MP3, WAV, MIDI и т.д.

Если я правильно помню, это не требует DirectX.

Функция PlaySound также может работать для вас.

0

PlaySound() изначально поддерживает MP3 до тех пор, пока он встроен в WAV-файл. Люди не понимают, что WAV - это формат контейнера. Скачать FFmpeg утилиты для преобразования заголовка и сохранить кодек:

FFmpeg -i input.mp3 -c -f копировать Wav embedded_mp3.wav

Смежные вопросы