Название: Так какой всё-таки mediaStatus() должен быть? Отправлено: Гурман от Октябрь 12, 2017, 16:46 Проигрываю аудио-файл с помощью QMediaPlayer. Нужно знать, когда оно закончило играть. Ловлю stateChanged(QMediaPlayer::State state). Смотрю состояние плеера и статус медиа.
Код: qDebug()<<"state changed"<<state<<player->mediaStatus(); В документации Qt про статус медиа написано: Цитировать QMediaPlayer::BufferedMedia 6 The player has fully buffered the current media. The player is in the PlayingState or PausedState. QMediaPlayer::EndOfMedia 7 Playback has reached the end of the current media. The player is in the StoppedState. То есть, когда трек доиграл, я поймаю StoppedState и EndOfMedia? Ага, щаз... когда трек доиграл, получаю вот это: Цитировать state changed QMediaPlayer::StoppedState QMediaPlayer::BufferedMedia Какого?... Почему не EndOfMedia? И самое главное - как это отличить от случая, когда воспроизведение закончилось принудительно, а не по концу трека? Кто-нибудь разбирался? Название: Re: Так какой всё-таки mediaStatus() должен быть? Отправлено: Гурман от Октябрь 12, 2017, 17:36 Похоже наоборот надо - ловить сигнал mediaStatusChanged(QMediaPlayer::MediaStatus) и в нём проверять состояние плеера. Этот сигнал при окончании трека выдаётся после stateChanged(QMediaPlayer::State). Если медиа статус EndOfMedia и состояние плеера StoppedState, значит трек закончился. В других случаях комбинации сигналов другие. Хрена с два где-нибудь это описано.
|