У меня есть аудиопоток с сервера, который я хочу играть с QMediaPlayer
в моей программе. Все работает, когда я сначала загружаю файл в QBuffer
, а затем вызываю setMedia
и play
метод от игрока. Но если я хочу играть музыку, пока поток все еще работает, медиаплеер воспроизводит звук только тогда, когда был вызван метод setMedia
, а затем stoppes. Есть ли какие-либо возможные способы заставить его работать, как я хочу? Спасибо.Как воспроизвести потоковое аудио с помощью QMediaPlayer?
ответ
Я не вижу причин, по которым он не работает, если вы правильно инициализируете игрока.
Поскольку вы не использовали код, который вы написали (также, поскольку я не буду доступен для остальной части дня, чтобы увидеть ваш ответ, если я оставляю комментарий), я оставлю здесь пример кода. Проверьте, подходит ли приведенный ниже код.
QMediaPlayer* player = new QMediaPlayer(this, QMediaPlayer::StreamPlayback);
player->setMedia(QUrl("http://vpr.streamguys.net/vpr64.mp3"));
player->setVolume(80);
player->play();
Если это так, попробуйте сделать то же самое, изменив URL-адрес вашего потока.
EDIT: Я предполагаю, что игрок исчерпывает буфер, прежде чем обновлять его. Постарайтесь следить за bufferStatus
и QMediaPlayer::MediaStatus
. Цитирую documentation:
bufferStatus : const int
This property holds the percentage of the temporary buffer filled before playback begins or resumes, from (empty) to (full). When the player object is buffering; this property holds the percentage of the temporary buffer that is filled. The buffer will need to reach 100% filled before playback can start or resume, at which time mediaStatus() will return BufferedMedia or BufferingMedia. If the value is anything lower than 100, mediaStatus() will return StalledMedia.
Да. Вот как это выглядит. Посмотрите, есть ли [this] (http://stackoverflow.com/questions/21404500/qmediaplayer-streaming-from-a-custom-qiodevice-with-encryption-on-mac-os-10-9) сообщение, чтобы помочь вы. – nnb
Я не уверен, что это будет иметь значение. Но попробуйте передать экземпляр 'QMediaContent' в качестве первого параметра в' QMediaPlayer :: setMedia' вместо 'NULL'. т. е. 'mediaPlayer.setMedia (QMediaContent(), песня);' – nnb
Это может быть возможное объяснение. :) – nnb
Via QAudioOutput:
QByteArray* yourSoundData = blah blah...;
QBuffer* buffer = new QBuffer;
buffer->setData(yourSoundData);
buffer->open(QBuffer::ReadOnly);
QAudioFormat format; // According to your sound format (e.g. wav)
format.setSampleRate(22050);
format.setChannelCount(1);
format.setSampleSize(16);
format.setCodec("audio/wav");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
if (!info.isFormatSupported(format)) {
qWarning() << "Raw audio format not supported by backend, cannot play audio.";
return;
}
QAudioOutput* audio = new QAudioOutput(format, this);
audio->start(buffer);
Подробнее: http://doc.qt.io/qt-5/qaudiooutput.html
- 1. Аудио визуализация с помощью QMediaPlayer
- 2. Как воспроизвести аудио и удалить файл в QMediaPlayer?
- 3. Как воспроизвести потоковое аудио с использованием протокола mms
- 4. Как остановить потоковое аудио
- 5. Как воспроизвести аудио-диск с помощью Phonon?
- 6. Потоковое аудио с iPhone
- 7. Потоковое аудио AAC с Android
- 8. Потоковое аудио с помощью libspotifydotnet (Spotify - libspotify)
- 9. Потоковое аудио в браузере
- 10. Воспроизвести аудио с Python
- 11. Потоковое аудио с использованием AS3
- 12. программно потоковое аудио с NetStream
- 13. потоковое аудио на сервер
- 14. C++ Потоковое аудио с микрофона
- 15. Потоковое аудио с онлайн-радио
- 16. Потоковое аудио с использованием сервиса
- 17. Потоковое аудио - с чего начать?
- 18. PCM аудио потоковое через websocket
- 19. Потоковое аудио udp C
- 20. Потоковое аудио с сервера Voscast
- 21. Живые потоковое аудио с прошивки
- 22. Потоковое аудио (YouTube)
- 23. Веб-аудио API и потоковое аудио
- 24. Как поместить аудио и воспроизвести это аудио
- 25. Воспроизвести аудио как вход микрофона
- 26. Потоковое аудио через http
- 27. Потоковое аудио на iPhone
- 28. Потоковое аудио через HTTP
- 29. Безопасное потоковое аудио
- 30. Воспроизвести аудио с прямой ссылки
Вы пытались построить '' QMediaPlayer' с QMediaPlayer :: StreamPlayback 'option like:' QMediaPlayer * player = new QMediaPlayer (0, QMediaPlayer :: StreamPlayback) '? – Nejat
Я попробовал, и он все еще играет только до позиции, когда вызывалась 'setMedia'. –
Когда вы спрашиваете, почему какой-то код не работает, рекомендуется прикрепить код ... По крайней мере, хороший, соответствующий фрагмент, если не полный [MVCE] (http://stackoverflow.com/help/mcve). – hyde