Simplest way to play mp3 from Visual C++

前端 未结 6 1913
星月不相逢
星月不相逢 2020-12-31 20:04

A few years back, I wrote some util library around DShow/DSound to let me play MP3s in a Windows C++ application. Is that still the normal way to do it in a C++/MFC app, or

相关标签:
6条回答
  • 2020-12-31 20:26

    You could have a look at BASS. It's a simple to use audio library, free for noncommercial use.

    0 讨论(0)
  • 2020-12-31 20:28

    You can either use DirectShow but it's not part of DirectX anymore or rely on a third-party library like Bass, FMod, mpg123 or even libwmp3.

    If you don't want to use DirectShow anymore (but why change if your existing code keeps working?), you can use 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 讨论(0)
  • 2020-12-31 20:28

    If you don't want to pay any licence and wanna do in-house, do the parsing of your mp3 file and pass it to XAudio2. Its a thing that you can do once (2-3 hours at max) and use always. :P

    0 讨论(0)
  • 2020-12-31 20:31

    This is an easy way to play any audio file: http://msdn.microsoft.com/en-us/library/dd390090(VS.85).aspx

    0 讨论(0)
  • 2020-12-31 20:40

    PlaySound() natively supports MP3 as long as it is embedded in a WAV file. People don't realize that WAV is a container format.

    Download the ffmpeg utilities to convert the header and preserve the codec:

    ffmpeg -i input.mp3 -c copy -f wav embedded_mp3.wav
    
    0 讨论(0)
  • 2020-12-31 20:45

    Youc could use MCI windows functions, https://msdn.microsoft.com/en-us/library/ms709626

    It can play many of audio file formats including MP3, WAV, MIDI etc.

    If I recall correctly it does not require DirectX.

    The PlaySound function might also work for you.

    0 讨论(0)
提交回复
热议问题