(PySide2+anaconda) 通过 QMediaPlayer 播放音频:警告:"Could not open audio device for playback."
(PySide2+anaconda) playing audio via QMediaPlayer: Warning: "Could not open audio device for playback."
已经有很多相关问题,但是 none 现有信息 covered/fixed 这个问题:
- 在 Ubuntu 20.04
通过 anaconda 安装 PySide2
- 遵循基本步骤并将教程代码转换为 PySide2,QMediaPlayer 播放声音文件
通过以下方式加载文件时:
player.setMedia(url)
警告
Warning: "Could not open audio device for playback."
打印在终端上。尽管 URL 正确且其他应用程序可以播放,但没有声音发出。 至关重要的是,通过具有相同 qt5 版本的 C++ QTCreator 加载 Official Media Player Qt Example 是可行的。
由于 Python、anaconda 或两者的原因,最后一个事实表明安装错误。
诊断(跳过下面的解决方案):
确实,一些调查显示错误出在 gstreamer
库,它可能无法通过内置 pulseaudio
服务器传输声音。
查看您的 gstreamer 是否正常工作:
您可以按照 here 所述全局安装 gstreamer。然后,从非 conda 终端,运行 以下内容:
# check that we're using the global/conda installation
which gst-launch-1.0
# play a test tone
gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! pulsesink
# play different audio formats
gst-play-1.0 ~/Desktop/test.wav
gst-play-1.0 ~/Desktop/test3.mp3
哪个应该没有任何问题。然后,在您的 conda 环境中尝试相同的操作。如果 which
命令指向不同的二进制文件并且您遇到问题,下面的解决方案可能对您有用!
解决方案
现在的挑战是找出缺少什么,以及哪个版本。在对 conda
存储库进行大量猜测和尝试组合之后,我发现了以下一系列步骤,这些步骤从一个新的 conda 环境到一个 PySide2
安装,其中 gstreamer
和 QMediaPlayer.play()
功能。它可能适用于 Python 3.7 以外的版本,我很高兴听到是否有人也能使用任何变体!
# create env
conda create -y -c conda-forge -n qt37 python=3.7
conda activate qt37
# Gst-compatible installation
conda install -y -c conda-forge gst-plugins-base gst-plugins-good gstreamer
conda install -y -c conda-forge pulseaudio
conda install -y -c dtk-forge gst-plugins-good-pulseaudio
# Now the forge pyside2 is your friend
conda install -y -c conda-forge pyside2
重复上面的 gst
测试现在应该会产生声音并播放本地安装的文件。如果是这样的话,很可能您的 QMediaPlayer
也能正常工作。
为了确保...
由于脚本缺少特定版本,这里是为后代冻结的conda list
。它还可以帮助您修改现有环境。
# Name Version Build Channel
_libgcc_mutex 0.1 conda_forge conda-forge
_openmp_mutex 4.5 1_gnu conda-forge
alsa-lib 1.2.3 h516909a_0 conda-forge
attr 2.4.48 h516909a_0 conda-forge
ca-certificates 2020.12.5 ha878542_0 conda-forge
certifi 2020.12.5 py37h89c1867_1 conda-forge
dbus 1.13.6 h48d8840_2 conda-forge
expat 2.3.0 h9c3ff4c_0 conda-forge
fftw 3.3.9 nompi_h74d3f13_101 conda-forge
fontconfig 2.13.1 hba837de_1005 conda-forge
freetype 2.10.4 h0708190_1 conda-forge
gettext 0.19.8.1 h0b5b191_1005 conda-forge
glib 2.68.1 h9c3ff4c_0 conda-forge
glib-tools 2.68.1 h9c3ff4c_0 conda-forge
gst-plugins-base 1.18.4 hf529b03_2 conda-forge
gst-plugins-good 1.18.4 h9f60fe5_2 conda-forge
gst-plugins-good-pulseaudio 1.18.4 h3fd9d12_0 dtk-forge
gstreamer 1.18.4 h76c114f_2 conda-forge
icu 68.1 h58526e2_0 conda-forge
jack 1.9.18 h295b1ef_1001 conda-forge
jpeg 9d h36c2ea0_0 conda-forge
json-c 0.15 h98cffda_0 conda-forge
krb5 1.17.2 h926e7f8_0 conda-forge
lame 3.100 h7f98852_1001 conda-forge
ld_impl_linux-64 2.35.1 hea4e1c9_2 conda-forge
libcap 2.48 h7f98852_0 conda-forge
libclang 11.1.0 default_ha53f305_0 conda-forge
libdb 6.2.32 h9c3ff4c_0 conda-forge
libedit 3.1.20191231 he28a2e2_2 conda-forge
libevent 2.1.10 hcdb4288_3 conda-forge
libffi 3.3 h58526e2_2 conda-forge
libflac 1.3.3 h9c3ff4c_1 conda-forge
libgcc-ng 9.3.0 h2828fa1_19 conda-forge
libgfortran-ng 9.3.0 hff62375_19 conda-forge
libgfortran5 9.3.0 hff62375_19 conda-forge
libglib 2.68.1 h3e27bee_0 conda-forge
libgomp 9.3.0 h2828fa1_19 conda-forge
libiconv 1.16 h516909a_0 conda-forge
libllvm11 11.1.0 hf817b99_2 conda-forge
libogg 1.3.4 h7f98852_1 conda-forge
libopus 1.3.1 h7f98852_1 conda-forge
libpng 1.6.37 h21135ba_2 conda-forge
libpq 13.2 hfd2b0eb_2 conda-forge
libsndfile 1.0.31 h9c3ff4c_1 conda-forge
libstdcxx-ng 9.3.0 h6de172a_19 conda-forge
libtool 2.4.6 h58526e2_1007 conda-forge
libuuid 2.32.1 h7f98852_1000 conda-forge
libvorbis 1.3.7 h9c3ff4c_0 conda-forge
libxcb 1.13 h7f98852_1003 conda-forge
libxkbcommon 1.0.3 he3ba5ed_0 conda-forge
libxml2 2.9.10 h72842e0_4 conda-forge
libxslt 1.1.33 h15afd5d_2 conda-forge
lz4-c 1.9.3 h9c3ff4c_0 conda-forge
mysql-common 8.0.23 ha770c72_2 conda-forge
mysql-libs 8.0.23 h935591d_2 conda-forge
ncurses 6.2 h58526e2_4 conda-forge
nspr 4.30 h9c3ff4c_0 conda-forge
nss 3.64 hb5efdd6_0 conda-forge
openssl 1.1.1k h7f98852_0 conda-forge
pcre 8.44 he1b5a44_0 conda-forge
pip 21.1.1 pyhd8ed1ab_0 conda-forge
pthread-stubs 0.4 h36c2ea0_1001 conda-forge
pulseaudio 14.0 hb166930_3 conda-forge
pyside2 5.13.2 py37hfa98aef_4 conda-forge
python 3.7.10 hffdb5ce_100_cpython conda-forge
python_abi 3.7 1_cp37m conda-forge
qt 5.12.9 hda022c4_4 conda-forge
readline 8.1 h46c0cb4_0 conda-forge
setuptools 49.6.0 py37h89c1867_3 conda-forge
sqlite 3.35.5 h74cdb3f_0 conda-forge
tk 8.6.10 h21135ba_1 conda-forge
wheel 0.36.2 pyhd3deb0d_0 conda-forge
xorg-libxau 1.0.9 h7f98852_0 conda-forge
xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge
xz 5.2.5 h516909a_1 conda-forge
zlib 1.2.11 h516909a_1010 conda-forge
zstd 1.4.9 ha95c52a_0 conda-forge
希望对您有所帮助!
安德烈斯
已经有很多相关问题,但是 none 现有信息 covered/fixed 这个问题:
- 在 Ubuntu 20.04 通过 anaconda 安装
- 遵循基本步骤并将教程代码转换为 PySide2,QMediaPlayer 播放声音文件
PySide2
通过以下方式加载文件时:
player.setMedia(url)
警告
Warning: "Could not open audio device for playback."
打印在终端上。尽管 URL 正确且其他应用程序可以播放,但没有声音发出。 至关重要的是,通过具有相同 qt5 版本的 C++ QTCreator 加载 Official Media Player Qt Example 是可行的。
由于 Python、anaconda 或两者的原因,最后一个事实表明安装错误。
诊断(跳过下面的解决方案):
确实,一些调查显示错误出在 gstreamer
库,它可能无法通过内置 pulseaudio
服务器传输声音。
查看您的 gstreamer 是否正常工作:
您可以按照 here 所述全局安装 gstreamer。然后,从非 conda 终端,运行 以下内容:
# check that we're using the global/conda installation
which gst-launch-1.0
# play a test tone
gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! pulsesink
# play different audio formats
gst-play-1.0 ~/Desktop/test.wav
gst-play-1.0 ~/Desktop/test3.mp3
哪个应该没有任何问题。然后,在您的 conda 环境中尝试相同的操作。如果 which
命令指向不同的二进制文件并且您遇到问题,下面的解决方案可能对您有用!
解决方案
现在的挑战是找出缺少什么,以及哪个版本。在对 conda
存储库进行大量猜测和尝试组合之后,我发现了以下一系列步骤,这些步骤从一个新的 conda 环境到一个 PySide2
安装,其中 gstreamer
和 QMediaPlayer.play()
功能。它可能适用于 Python 3.7 以外的版本,我很高兴听到是否有人也能使用任何变体!
# create env
conda create -y -c conda-forge -n qt37 python=3.7
conda activate qt37
# Gst-compatible installation
conda install -y -c conda-forge gst-plugins-base gst-plugins-good gstreamer
conda install -y -c conda-forge pulseaudio
conda install -y -c dtk-forge gst-plugins-good-pulseaudio
# Now the forge pyside2 is your friend
conda install -y -c conda-forge pyside2
重复上面的 gst
测试现在应该会产生声音并播放本地安装的文件。如果是这样的话,很可能您的 QMediaPlayer
也能正常工作。
为了确保...
由于脚本缺少特定版本,这里是为后代冻结的conda list
。它还可以帮助您修改现有环境。
# Name Version Build Channel
_libgcc_mutex 0.1 conda_forge conda-forge
_openmp_mutex 4.5 1_gnu conda-forge
alsa-lib 1.2.3 h516909a_0 conda-forge
attr 2.4.48 h516909a_0 conda-forge
ca-certificates 2020.12.5 ha878542_0 conda-forge
certifi 2020.12.5 py37h89c1867_1 conda-forge
dbus 1.13.6 h48d8840_2 conda-forge
expat 2.3.0 h9c3ff4c_0 conda-forge
fftw 3.3.9 nompi_h74d3f13_101 conda-forge
fontconfig 2.13.1 hba837de_1005 conda-forge
freetype 2.10.4 h0708190_1 conda-forge
gettext 0.19.8.1 h0b5b191_1005 conda-forge
glib 2.68.1 h9c3ff4c_0 conda-forge
glib-tools 2.68.1 h9c3ff4c_0 conda-forge
gst-plugins-base 1.18.4 hf529b03_2 conda-forge
gst-plugins-good 1.18.4 h9f60fe5_2 conda-forge
gst-plugins-good-pulseaudio 1.18.4 h3fd9d12_0 dtk-forge
gstreamer 1.18.4 h76c114f_2 conda-forge
icu 68.1 h58526e2_0 conda-forge
jack 1.9.18 h295b1ef_1001 conda-forge
jpeg 9d h36c2ea0_0 conda-forge
json-c 0.15 h98cffda_0 conda-forge
krb5 1.17.2 h926e7f8_0 conda-forge
lame 3.100 h7f98852_1001 conda-forge
ld_impl_linux-64 2.35.1 hea4e1c9_2 conda-forge
libcap 2.48 h7f98852_0 conda-forge
libclang 11.1.0 default_ha53f305_0 conda-forge
libdb 6.2.32 h9c3ff4c_0 conda-forge
libedit 3.1.20191231 he28a2e2_2 conda-forge
libevent 2.1.10 hcdb4288_3 conda-forge
libffi 3.3 h58526e2_2 conda-forge
libflac 1.3.3 h9c3ff4c_1 conda-forge
libgcc-ng 9.3.0 h2828fa1_19 conda-forge
libgfortran-ng 9.3.0 hff62375_19 conda-forge
libgfortran5 9.3.0 hff62375_19 conda-forge
libglib 2.68.1 h3e27bee_0 conda-forge
libgomp 9.3.0 h2828fa1_19 conda-forge
libiconv 1.16 h516909a_0 conda-forge
libllvm11 11.1.0 hf817b99_2 conda-forge
libogg 1.3.4 h7f98852_1 conda-forge
libopus 1.3.1 h7f98852_1 conda-forge
libpng 1.6.37 h21135ba_2 conda-forge
libpq 13.2 hfd2b0eb_2 conda-forge
libsndfile 1.0.31 h9c3ff4c_1 conda-forge
libstdcxx-ng 9.3.0 h6de172a_19 conda-forge
libtool 2.4.6 h58526e2_1007 conda-forge
libuuid 2.32.1 h7f98852_1000 conda-forge
libvorbis 1.3.7 h9c3ff4c_0 conda-forge
libxcb 1.13 h7f98852_1003 conda-forge
libxkbcommon 1.0.3 he3ba5ed_0 conda-forge
libxml2 2.9.10 h72842e0_4 conda-forge
libxslt 1.1.33 h15afd5d_2 conda-forge
lz4-c 1.9.3 h9c3ff4c_0 conda-forge
mysql-common 8.0.23 ha770c72_2 conda-forge
mysql-libs 8.0.23 h935591d_2 conda-forge
ncurses 6.2 h58526e2_4 conda-forge
nspr 4.30 h9c3ff4c_0 conda-forge
nss 3.64 hb5efdd6_0 conda-forge
openssl 1.1.1k h7f98852_0 conda-forge
pcre 8.44 he1b5a44_0 conda-forge
pip 21.1.1 pyhd8ed1ab_0 conda-forge
pthread-stubs 0.4 h36c2ea0_1001 conda-forge
pulseaudio 14.0 hb166930_3 conda-forge
pyside2 5.13.2 py37hfa98aef_4 conda-forge
python 3.7.10 hffdb5ce_100_cpython conda-forge
python_abi 3.7 1_cp37m conda-forge
qt 5.12.9 hda022c4_4 conda-forge
readline 8.1 h46c0cb4_0 conda-forge
setuptools 49.6.0 py37h89c1867_3 conda-forge
sqlite 3.35.5 h74cdb3f_0 conda-forge
tk 8.6.10 h21135ba_1 conda-forge
wheel 0.36.2 pyhd3deb0d_0 conda-forge
xorg-libxau 1.0.9 h7f98852_0 conda-forge
xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge
xz 5.2.5 h516909a_1 conda-forge
zlib 1.2.11 h516909a_1010 conda-forge
zstd 1.4.9 ha95c52a_0 conda-forge
希望对您有所帮助!
安德烈斯