質問: QtMultimedia.QMediaPlayer() self.player.setMedia(QtMultimedia.QMediaContent(QtCore.QUrl.fromLocalFile("resource"+os.sep+"voice.wav"))) ... self.player.play() ``` ### 試したこと 音声ファイルが悪いのかと別のファイル(mp3ファイル)を試してみましたが同様のエラーが出ました また、gstreamerに問題があるのかと思いgstreamer-toolのインストールを行いましたが結果は変わりませんでした ### 補足情報(言語/FW/ツール等のバージョンなど) OS:Ubuntu 16.04 LTS 言語:python 3.6.0 使用ライブラリ:PyQt5.8.2 Qt5.9 よろしくお願いします
回答: 解決したようで何よりです、しかし一点だけ追記をします。 相対パス(os.path.abspathの変換も含む)はカレントディレクトリに依存します。 ですので、`os.path.abspath`で解決するのは、あまり良い手とは言えません。 ショートカットなどで他ディレクトリから呼ばれた場合に、またパスがずれてしまうためです。 ですので`os.path.dirname(sys.argv[0])`でトップレベルスクリプト相対からパスを算出すべきです。 ``` import os, sys app_root = os.path.abspath(os.path.dirname(sys.argv[0])) wav_path = os.path.join(app_root, "resource", "voice.wav") ``` Qtにもそれ相当の関数が`QApplication`にあった気がしますが、こちらの方が良いと思います。 `__file__`を用いてパスを取得する手もありますが、こちらは`py2exe`を使った際にエラーがでるので`os.path.dirname(sys.argv[0])`の方がおすすめです。