我在用c ++播放mp3文件时遇到了一些问题(我为英语表示歉意,这不是我的母语)。我在程序中使用winapi播放音乐(我正在使用函数mciSendStringW)。我的程序将使用3个线程。主线程,用于输入/输出操作的线程,一个用于播放音乐的线程。我有两个问题:
File "<ipython-input-42-76ab838299bc>", line 23, in dict_value_finder
results = dict_value_finder(value, field, partial_match)
NameError: name 'dict_value_finder' is not defined
但是我有第二个问题
mciSendStringW(LR"(play SongPath1.mp3 wait)", NULL, 0, NULL)
因为,程序将在此行中停止,直到歌曲结束。例如,用户关闭音乐,但是我不能说踩踏音乐,也不能杀死另一个线程中的音乐线程。但是如果我使用
mciSendStringW(LR"(play SongPath1.mp3 wait)", NULL, 0, NULL);
没有标记“ wait”,我可以这样写:
mciSendStringW(LR"(play SongPath1.mp3)", NULL, 0, NULL);
但是我有多首歌曲,当第一首歌曲结束时,将开始播放。但是我不知道什么时候歌曲结束了。如果我使用,请编程:
mciSendStringW(LR"(play SongPath1.mp3 )", NULL, 0, NULL);
while(true){
g_song_mutex.lock(); /*global mutex for g_switch_off_music*/
if(g_switch_off_music) { /*global bool for switch off music*/
mciSendStringW(LR"(stop SongPath1.mp3)", NULL, 0, NULL);
return;
this_thread::sleep_for(chrono::milliseconds(300));
}
g_song_mutex.unlock();
}
不能播放第二首歌曲(或先播放一首),或者如果我使用:
mciSendStringW(LR"(play SongPath1.mp3)", NULL, 0, NULL);
程序无法关闭歌曲。