Qt (PySide2和anaconda)通过QMediaPlayer播放音频:警告:“;无法打开音频设备进行播放。”;

Qt (PySide2和anaconda)通过QMediaPlayer播放音频:警告:“;无法打开音频设备进行播放。”;,qt,anaconda,gstreamer,pyside2,ubuntu-20.04,Qt,Anaconda,Gstreamer,Pyside2,Ubuntu 20.04,已经有很多相关问题,但现有信息均未涵盖/修复此问题: 通过Ubuntu 20.04上的anaconda安装了PySide2 遵循基本步骤,将教程代码翻译成PySide2,播放声音文件 通过以下方式加载文件时: player.setMedia(url) 警告 Warning: "Could not open audio device for playback." 在终端上打印。虽然URL是正确的,其他应用程序也可以播放,但没有声音 最后一个事实表明,由于Python

已经有很多相关问题,但现有信息均未涵盖/修复此问题:

  • 通过Ubuntu 20.04上的anaconda安装了
    PySide2
  • 遵循基本步骤,将教程代码翻译成PySide2,播放声音文件
通过以下方式加载文件时:

player.setMedia(url)

警告

Warning: "Could not open audio device for playback."
在终端上打印。虽然URL是正确的,其他应用程序也可以播放,但没有声音<非常重要的是,加载带有相同Qt5版本的VC++ C++ QT创口。< /强>

最后一个事实表明,由于Python、anaconda或两者的原因,安装出现了故障。

Diagnostic(请跳过下面的内容了解解决方案): 事实上,一些调查表明错误出在
gstreamer
lib上,它可能无法通过内置的
pulseaudio
服务器传送声音

要了解您的gstreamer是否正常工作,请执行以下操作: 您可以按所述全局安装gstreamer。然后,从非康达终端运行以下程序:

#检查我们是否正在使用全局/conda安装
哪个gst-launch-1.0
#播放测试音
gst-launch-1.0 audiotestsrc!音频转换!音频重采样!脉冲墨水
#播放不同的音频格式
gst-play-1.0~/Desktop/test.wav
gst-play-1.0~/Desktop/test3.mp3
这应该没有任何问题。然后,在conda环境中尝试同样的方法。如果
which
命令指向不同的二进制文件,并且您遇到问题,下面的解决方案可能适合您

解决方案 现在的挑战是找出缺失的内容和版本。在对
conda
存储库中的组合进行了大量猜测和尝试之后,我发现了以下一系列步骤,这些步骤将从全新的conda环境引导到使用
gstreamer
QMediaPlayer.play()
功能的
PySide2
安装。它可能与Python 3.7以外的其他版本一起工作,如果有人也能使用任何变体,我将非常高兴

#创建环境
condacreate-y-c conda forge-n qt37 python=3.7
康达激活qt37
#Gst兼容安装
conda安装-y-c conda forge gst插件基本gst插件良好gstreamer
康达安装-y-c康达锻造pulseaudio
康达安装-y-c dtk锻造gst插件良好pulseaudio
#现在锻造pyside2是你的朋友
康达安装-y-c康达锻造pyside2
重复上面的
gst
测试现在应该可以在本地安装中产生声音并播放文件。如果是这种情况,那么您的
QMediaPlayer
也很有可能正常工作

为了确保。。。 由于脚本缺少特定的版本,下面是供后代使用的冻结的
conda列表。它还可以帮助您修改现有环境

#命名版本生成通道
_libgcc_互斥0.1 conda_forge conda forge
_openmp_互斥4.5 1_gnu conda forge
alsa lib 1.2.3 h516909a_0康达锻造厂
attr 2.4.48 h516909a_0康达锻造厂
ca证书2020.12.5 ha878542_0康达锻造厂
certifi 2020.12.5 py37h89c1867_1康达锻造
dbus 1.13.6 h48d8840_2康达锻造厂
expat 2.3.0 h9c3ff4c_0康达锻造厂
fftw 3.3.9 nompi_h74d3f13_101康达锻造厂
fontconfig 2.13.1 hba837de_1005康达锻造
freetype 2.10.4 h0708190_1康达锻造
gettext 0.19.8.1 h0b5b191_1005康达锻造
glib 2.68.1 h9c3ff4c_0康达锻造
油嘴工具2.68.1 h9c3ff4c_0康达锻造
gst插件库1.18.4 hf529b03_2 conda forge
gst插件良好1.18.4 h9f60fe5_2 conda forge
gst插件good pulseaudio 1.18.4 h3fd9d12_0 dtk forge
gstreamer 1.18.4 h76c114f_2康达锻造
icu 68.1 h58526e2_0康达锻造厂
千斤顶1.9.18 h295b1ef_1001康达锻造
jpeg 9d h36c2ea0_0 conda forge
json-c 0.15 h98cffda_0康达锻造
krb5 1.17.2 h926e7f8_0康达锻造
lame 3.100 h7f98852_1001康达锻造
ld_impl_linux-64 2.35.1 hea4e1c9_2 conda forge
libcap 2.48 h7f98852_0康达锻造厂
libclang 11.1.0默认值\u ha53f305\u 0康达锻造
libdb 6.2.32 h9c3ff4c_0康达锻造
libedit 3.1.20191231 he28a2e2_2康达锻造厂
libevent 2.1.10 hcdb4288_3康达锻造厂
libffi 3.3 h58526e2_2康达锻造厂
libflac 1.3.3 h9c3ff4c_1康达锻造
LIBCC ng 9.3.0 h2828fa1_19康达锻造厂
libgfortran ng 9.3.0 hff62375_19康达锻造厂
libgfortran5 9.3.0 hff62375_19康达锻造厂
libglib 2.68.1 h3e27bee_0康达锻造
libgomp 9.3.0 h2828fa1_19康达锻造厂
libiconv 1.16 h516909a_0康达锻造厂
libllvm11.1.0 hf817b99_2康达锻造
libogg 1.3.4 h7f98852_1康达锻造
libopus 1.3.1 h7f98852_1康达锻造厂
libpng