Почему SDL_Mixer не воспроизводит музыку для определенных mp3-файлов?

StackOverflow https://stackoverflow.com/questions/459794

  •  19-08-2019
  •  | 
  •  

Вопрос

Почему SDL_Mixer не воспроизводит музыку для определенных mp3-файлов?

Я использую SDL_Mixer для воспроизведения музыки в приложении, которое создаю. На некоторых песнях (на самом деле, на целых альбомах) музыка просто не воспроизводится без каких-либо ошибок. Музыкальные данные успешно загружаются с использованием Mix_LoadMUS, и при выполнении Mix_PlayMusic с этими данными, как ни странно, возвращает 0 для успеха, но не воспроизводит музыку. Я также попытался прочитать Mix_GetError () и SDL_GetError () (я считаю, что они одинаковы), чтобы увидеть, если это вызывает ошибку, но не такая удача.

Мой вопрос: по каким другим причинам SDL_mixer не сможет воспроизводить конкретный mp3?

Я знаю, что mp3-файлы работают, так как я могу воспроизводить их в других музыкальных проигрывателях. Я также точно знаю, что они не воспроизводятся (в отличие от, возможно, уменьшения громкости), поскольку Mix_PlayingMusic возвращает 0.

Спасибо всем!

Это было полезно?

Решение

Это на самом деле оказалось проблемой звука с этим конкретным компьютером. Испытав те же тесты на другой машине, звук работал безупречно. Просто быстрое замечание на случай, если кто-то еще столкнется с этой проблемой.

Другие советы

Различные реализации алгоритма MP3 допускают разные уровни соответствия формату. Большинство музыкальных проигрывателей довольно терпимы, потому что большинство пользователей предпочитают слышать что-то прерывистое, чем вообще ничего, но распространенные библиотеки воспроизведения допускают гораздо меньше.

Я бы порекомендовал открыть нарушающие (или все) mp3-файлы в редакторе аудиосэмплов, например Audacity и реэкспорт в mp3. Вы можете потерять немного качества, так как сжатие mp3 по своей природе потеряно, но, скорее всего, это решит проблему с воспроизведением.

У меня была та же проблема, и реэкспорт mp3-файлов с помощью Audacity не помог, но сделав что-то вроде этого:     if (Mix_PlayingMusic () == 0)         Mix_PlayMusic () в цикле событий музыка воспроизводилась после 2 или 3 попыток (каждый раз, когда я запускал программу, она менялась). Другим решением было преобразование музыки в файлы .ogg.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top