И если песня длится 30 секунд, когда песня заканчивается, происходит задержка на одну секунду, а затем она начинается снова. и это не интересно слышать, я хочу, чтобы песня была, например, 5 минут, чтобы пользователь не слышал задержку.
Это то же самое, что и кейс Я видел раньше. Интересно, что все они хотят устранить задержку.
При использовании PlaySound(pathtosound.c_str(), 0, SND_ASYNC | SND_LOOP)
для воспроизведения аудиофайлов неизбежно будет небольшая задержка, и время будет меньше 1 секунды.
InНа мой взгляд, эта задержка кажется неизбежной. Если вы не пытаетесь вырезать и копировать файл WAV от 30 секунд до 5 минут с помощью стороннего инструмента. И таким образом, вы можете избежать повторения 30 секунд звука.
Есть ли способ воспроизведения других типов файлов?
Вы можете использовать mciSendString .
mciSendStringФункция отправляет командную строку на устройство MCI. Устройство, на которое отправляется команда, указывается в командной строке.
mciSendString
имеет много интересных функций. Вы можете получить команды из этого документа .
Пример использования mciSendStringto
воспроизведения других аудиозаписей, например, зацикливание mp3.
#include <conio.h>
#include <Windows.h>
#include <iostream>
#pragma comment (lib,"Winmm.lib")
using namespace std;
int main()
{
LPCSTR const Sound_File_Open = "open C:\\Users\\xxx\\Desktop\\nyan-clipped.mp3 type mpegvideo alias Current_Sound_Command";
MCIERROR open = mciSendString(Sound_File_Open, NULL, 0, NULL);
MCIERROR play = mciSendString("play Current_Sound_Command repeat", NULL, 0, NULL);
system("pause");
}
Больше случаев:
Или уменьшить размер файла?
WAV-файл - это звук без потерь, несжатый звук. Вам следует попробовать формат с потерями, такой как mp3. Высококачественный mp3-файл часто неотличим от файла без потерь.
Если абсолютно необходимо, чтобы файл был .wav, существует способ уменьшить размер файла, хотя при этом вы потеряете больше качества. процесс, чем вы с помощью аудиокодека с потерями.
Возможные варианты для уменьшения размера файла:
- Преобразование из стерео в моно
- Понижение частоты дискретизации звука
- Понижение битовой глубины звука
Вот пример того, как сжимать файлы WAV.