【问题标题】:Qt: no playback on linuxQt:在 linux 上没有播放
【发布时间】:2016-06-10 07:56:06
【问题描述】:

我已经尝试过(我认为)在 Qt 项目中播放音频的所有可能方式,但都没有奏效:

这些解决方案都不播放 WAV 或 MP3,我尝试从资源 (qrc:media/file.wav) 或仅从磁盘 (/full/path/to/file.wav) 加载文件。

我认为问题出在编解码器上。 QAudioDevice::supportedCodecs() 返回一个空列表。我在一个 linux 系统上播放音频/视频没有问题(Ubuntu 14.04,通常在 VLC 中播放......使用自己的编解码器?)。

播放 QSound(WAV 和 MP3):

QSoundEffect(pulseaudio): Error decoding source

QMediaplayer (WAV):没有任何反应

QMediaplayer (MP3):

GStreamer; Unable to play - "qrc:media/lowtone.mp3"

【问题讨论】:

  • QAudioDevice::supportedCodecs 甚至不返回 audio/pcm?
  • @UmNyobe nope... QStringList 的 size() 返回 0

标签: c++ linux qt audio


【解决方案1】:

Qt 为每个平台使用specific media backends(链接是 qt5,但在 Qt4 中是一样的)。从错误看来,您的版本使用的是GStreamer

检查您的发行版上的 gstreamer 开发包是否安装良好,因为 QAudioDevice::supportedCodecs must return at least audio/pcm。处理包设置,直到您的测试程序显示pcm。见https://wiki.qt.io/Building_Qt_for_Linux

您可能还需要安装插件(也包括开发包)才能使用 phonon 播放 wav 或 mp3。

【讨论】:

  • 感谢您的回复。我得到audio/pcm 现在由supportedCodecs 返回。我注意到QMediaPlayer::play 在作为插槽调用时确实有效(通过发出信号)。显然它必须被异步调用才能正常工作,即使对象是在堆上分配的并且超出了调用者的范围。我仍然不能使用QSound::play ......那个应该阻止的,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2021-08-31
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多