SDL_mixer нет звука для определенных файлов mp3

Так что у меня проблемы с SDL_mixer, и кажется, что он хорошо воспроизводится на большом количестве mp3-файлов (хотя «отлично». Я заметил, что в начале некоторых MP3-файлов есть небольшой сегмент искажения звука, а затем он начинает играть) но в некоторых файлах MP3 есть просто абсолютная тишина. Кажется, ничего не играет. И Mix_PlayMusic, похоже, не возвращает ошибку и ничего больше, но, похоже, не издает ни единого звука. Изредка я получаю случайное «Нарушение прав доступа при чтении» при попытке воспроизвести эти файлы, но каждый раз, это просто тишина.

Вот код, который я использую для воспроизведения файла 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 — это те, которые, кажется, не работают. Кто-нибудь может объяснить это?

РЕДАКТИРОВАТЬ: После дополнительных испытаний, это также может произойти на других

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]