0

それで、私はSDL_mixerに問題があり、かなりの量のmp3で問題なく再生されるようです(ただし、「問題ありません」。一部のMP3の最初に、音の破損の小さなセグメントがあり、その後再生が開始されることに気付きました)しかし、一部の MP3 ファイルでは、完全な無音だけが存在します。何も再生されないようです。そして、Mix_PlayMusic はエラーを返していないようで、他にも何もしていませんが、単一の音を出していないようです。これらのファイルを再生しようとすると、ランダムに「Access Reading Violation」が表示されることがありますが、それ以外の場合は無音です。

MP3ファイルを再生するために使用しているコードは次のとおりです。

#include "SDL.h"
#include "SDL_mixer.h"

#include <iostream>

bool initLibs()
{
    //Initialize all SDL subsystems
    if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
    {
        return false;
    }

    int flags = MIX_INIT_MP3 | MIX_INIT_OGG;
    if(Mix_Init(flags)!=flags)
    {
        return false;
    }

    //Initialize SDL_mixer
    if( Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, AUDIO_S16, 2, 4096 ) == -1 )
    {
        return false;
    }

    //If everything initialized fine
    return true;
}

int main(int argc, char* argv[])
{
    if(!initLibs())
    {
        std::cout << "error loading libraries" << std::endl;
    }
    Mix_Music* music = Mix_LoadMUS("test.mp3");
    if(music == nullptr)
    {
        std::cout << "error loading music: " << Mix_GetError() << std::endl;
    }
    else
    {
        if(Mix_PlayMusic(music, -1) == -1)
        {
            std::cout << "error playing music: " << Mix_GetError() << std::endl;
        }
    }
    SDL_Delay(30000);
    system("PAUSE");
    Mix_HaltMusic();
    Mix_FreeMusic(music);
    system("PAUSE");
    return 0;
}

MP3 ファイルの違いを調べていたところ、実際の違いは、LAME3.99 エンコーディングのものは動作しないように見えることだけのようです。これを説明できる人はいますか?

編集:さらにテストした後、他のものでも発生するようです

4

0 に答える 0