Как заставить QWebEngineView PyQt5 воспроизводить звук?

Я хочу воспроизводить аудио в Интернете, используя QWebEngineView из PyQt5. Это мой код:

import sys

from PyQt5 import QtWebEngineWidgets, QtWidgets

if __name__ == '__main__':
    app = QtWidgets.QApplication([])

    view = QtWebEngineWidgets.QWebEngineView()
    view.settings().setAttribute(QtWebEngineWidgets.QWebEngineSettings.PluginsEnabled, True)
    view.settings().setAttribute(QtWebEngineWidgets.QWebEngineSettings.JavascriptEnabled, True)

    html = '''
    <html>
        <audio id="pron" src="http://static.sfdict.com/staticrep/dictaudio/A06/A0612000.mp3"></audio>
        <button onclick="document.getElementById('pron').play()">Play!</button>
    </html>'''
    view.setHtml(html)

    view.resize(250, 150)
    view.move(300, 300)
    view.show()

    sys.exit(app.exec_())

Но когда я нажимаю кнопку Play, звук не воспроизводится. Что со мной не так?


person Jeffery    schedule 29.12.2016    source источник
comment
Яблоко! У меня на линуксе работает нормально. Настройки ни на что не влияют. Если вы используете Windows, установлены ли у вас все необходимые аудиокодеки? Попробуйте проверить со ссылкой на файл wma.   -  person ekhumoro    schedule 29.12.2016
comment
Того же мнения, что и @ekhumoro   -  person eyllanesc    schedule 29.12.2016
comment
Я получил предупреждение консоли при тестировании вашего примера, то есть js: Uncaught (в обещании) NotSupportedError: у элемента нет поддерживаемых источников.   -  person iMath    schedule 28.06.2018


Ответы (1)


QWebEngineView по умолчанию не поддерживает воспроизведение mp3 , по крайней мере, на Win7, как я тестировал. Если вы измените свой URL-адрес mp3 на ogg (формат ogg поддерживается по умолчанию через QWebEngineView ), например.

https://upload.wikimedia.org/wikipedia/commons/5/5a/Nl-URL%27s.ogg

тогда ваш пример будет работать!

Когда я искал в Интернете, я обнаружил, что единственный способ включить воспроизведение mp3 — это скомпилировать наш собственный веб-движок Qt, кто-то сказал мне, как это сделать следующим образом:

Скомпилируйте свой собственный Qt (включая QtWebEngine), затем скомпилируйте PyQt и при вызове его configure.py используйте --qmake, чтобы передать путь к правильному исполняемому файлу qmake.

Если кто-то заинтересован в компиляции веб-движка Qt, эта информация может быть полезна.

Как скомпилировать Qt webengine (5.11 ) в Windows с проприетарными кодеками

Невозможно получить поддержку mp3 с помощью QtWebEngine

person iMath    schedule 28.06.2018