web-dev-qa-db-ja.com

C ++プログラムで* .mp3または* .wavサウンドファイルを再生または開く方法

私はコンピューターサイエンスの学生です。私は、サウンドとともにグラフィックスの短いゲームを開発する最終学期プロジェクトを持っています。

7
John Talbott

http://sfml-dev.org/documentation/2.0/classsf_1_1Music.php

SFMLはmp3をサポートしていませんが、別の人が示唆しています。私がいつもしていることは、Audacityを使用してすべての音楽をoggにし、すべてのサウンドエフェクトをwavのままにしておくことです。

Wavの読み込みと再生は簡単です(粗雑な例):

http://www.sfml-dev.org/tutorials/2.0/audio-sounds.php

#include <SFML/Audio.hpp>
...
sf::SoundBuffer buffer;
if (!buffer.loadFromFile("sound.wav")){
    return -1;
}
sf::Sound sound;
sound.setBuffer(buffer);
sound.play();

Ogg音楽ファイルのストリーミングも簡単です。

#include <SFML/Audio.hpp>
...
sf::Music music;
if (!music.openFromFile("music.ogg"))
    return -1; // error
music.play();
5
DCurro

* .mp3または* .wavファイルを再生する場合、最も簡単な方法は [〜#〜] sfml [〜#〜] を使用することです。

4
Xardaska

VC++で簡単なc ++コードを試してください。

#include <windows.h>
#include <iostream>
#pragma comment(lib, "winmm.lib")

int main(int argc, char* argv[])
{
std::cout<<"Sound playing... enjoy....!!!";
PlaySound("C:\\temp\\sound_test.wav", NULL, SND_FILENAME); //SND_FILENAME or SND_LOOP
return 0;
}
2
Kulamani

私はあなたのゲームのためにこれを行うためにFMODを使用します。ほとんどすべてのファイルをサウンド用に再生する機能があり、C++での実装は非常に簡単です。 FMODとDir3ect Xを併用することは強力であり、それほど難しくはありません。シングルトンクラスに精通している場合は、win main cppでサウンドマネージャーのシングルトンクラスを作成し、新しい音楽や効果音をロードまたは再生するときにいつでもアクセスできるようにします。これがオーディオマネージャーの例です

    #pragma once

#ifndef H_AUDIOMANAGER
#define H_AUDIOMANAGER

#include <string>
#include <Windows.h>
#include "fmod.h"
#include "fmod.hpp"
#include "fmod_codec.h"
#include "fmod_dsp.h"
#include "fmod_errors.h"
#include "fmod_memoryinfo.h"
#include "fmod_output.h"

class AudioManager
{
public:
    // Destructor
    ~AudioManager(void);

    void Initialize(void);  // Initialize sound components
    void Shutdown(void);    // Shutdown sound components

    // Singleton instance manip methods
    static AudioManager* GetInstance(void);
    static void DestroyInstance(void);

    // Accessors
    FMOD::System* GetSystem(void)
        {return soundSystem;}

    // Sound playing
    void Play(FMOD::Sound* sound);  // Play a sound/music with default channel
    void PlaySFX(FMOD::Sound* sound);   // Play a sound effect with custom channel
    void PlayBGM(FMOD::Sound* sound);   // Play background music with custom channel

    // Volume adjustment methods
    void SetBGMVolume(float volume);
    void SetSFXVolume(float volume);

private:
    static AudioManager* instance;  // Singleton instance
    AudioManager(void);  // Constructor

    FMOD::System* soundSystem;  // Sound system object
    FMOD_RESULT result;
    FMOD::Channel* bgmChannel;  // Channel for background music
    static const int numSfxChannels = 4;
    FMOD::Channel* sfxChannels[numSfxChannels]; // Channel for sound effects
};

#endif
2
Josh

ライブラリを使用して、(a)サウンドファイルを読み取り、(b)それらを再生します。 (空き時間のある時点で両方試してみることをお勧めしますが、...)

おそらく(* nix):

Windows:DirectX。

2
user3392484