update ffmpeg_speaker
This commit is contained in:
parent
11f0097521
commit
4c852f5260
@ -78,16 +78,17 @@ void ffmpegSpeaker::start() {
|
||||
}
|
||||
void ffmpegSpeaker::resetPlayState()
|
||||
{
|
||||
state_.is_decoding = false;
|
||||
state_.is_running = false;
|
||||
state_.is_paused = false;
|
||||
audio_path_.clear();
|
||||
|
||||
if (pcm_handle_) {
|
||||
snd_pcm_drain(pcm_handle_);
|
||||
snd_pcm_close(pcm_handle_);
|
||||
pcm_handle_ = nullptr;
|
||||
}
|
||||
state_.is_decoding = false;
|
||||
state_.is_running = false;
|
||||
state_.is_paused = false;
|
||||
audio_path_.clear();
|
||||
|
||||
|
||||
LOG(INFO) << "[ffmpegSpeaker] (resetPlayState): Success, id=" << id_;
|
||||
}
|
||||
|
||||
@ -346,8 +347,13 @@ void ffmpegSpeaker::play_audio_() {
|
||||
else {
|
||||
//音频数据队列为空且解码已经结束,退出
|
||||
if (!state_.is_decoding) {
|
||||
if (pcm_handle_) {
|
||||
// 停止播放,清空缓存,否则结束会有杂音
|
||||
snd_pcm_drop(pcm_handle_);
|
||||
LOG(INFO) << "[ffmpegSpeaker] ALSA buffer cleared";
|
||||
break;
|
||||
}
|
||||
}
|
||||
this_thread::sleep_for(chrono::seconds(1)); // 空队列等待
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user