はじめに
ROS(ROS2ではない)で開発をしているものです。
ROSは用意されているライブラリが多いのですが、環境がPython2で止まっているのでPython3以降のライブラリが使えないという問題点が有ります。そのためROS・Pythonを使って開発をしている場合、音再生にはROSで用意されているsound_playというライブラリを使用します。
起こったこと
waveファイルを再生しようとしたのですがなぜか10秒ほど再生したところで止まってしまう...
ソースコード的には間違っていないし、再生も途中で止まるようにはしていないのですが、何故か自動で止まります。
以前はoggファイルに変えるとすんなり解決できたのですが、それも刺さらず...
で、調べていたら既に解決していた(アップデート済み?)でした。しかし私のライブラリはなぜか書き換えられていなかったので手動で書き換えた次第です。
解決方法など
↑解決済みのソース
既にGitHub上で問題提起されており、開発者が対応済みでした。
しかしながら先程述べた通り私のPCではまだ対処されていなかったので自分で書き直す必要が有りました。
書き直した場所はリンク先にも有りますが、ここです。
def get_staleness(self):
.....
# ここが0になっていたら1に変える
position = self.sound.query_position(Gst.Format.TIME)[1]
duration = self.sound.query_duration(Gst.Format.TIME)[1]
管理者権限が必要なのでsudo vimとかで開きます。
で、再度音を再生してみると、最後まで再生してくれるようになりました!!!
一応最新バージョンでは(というか2020年初期には)修正されているようですがなぜか私のPCは直っていなかったので...
もしまだ音の再生が途中で止まるという方は試してみると良いかもしれません!