指定したWebサイトでオーディオブックのチャプターを検索し、ダウンロードして再生する小さなオーディオプレーヤーを作成しました。唯一の問題は、一時停止できないことです。私が使用しているmp3ファイルを再生するにはos.system("afplay chapter.mp3")
呼び出しを含むスレッドを作成することを考えましたos.system
が、そのように一時停止することはできないと確信しています。スレッドがループの場合、再開する準備ができたら、アクセスしてロックを解除する必要がある変数をロックするだけで済みます。しかし、このスレッドは1行のコードにすぎないため、不可能と思われます。また、プロセスを作成して送信SIGSTOP
することも検討しました。しかし、いくつかの未知の理由でそれは機能しません。
import os, signal
from multiprocessing import Process
p = Process(target=play)
p.start()
raw_input("press enter to pause: ")
os.kill(p.pid, signal.SIGSTOP)
コードは、プロセスを停止せずにサイレントに実行されます。
afplayに代わるものがあることは知っていますが、今のところはos.system呼び出しに固執するつもりです。だから私の質問は、どうすれば1行のスレッドまたはプロセスを一時停止できますか?Process()呼び出しで新しいプロセスを作成する代わりに、afplayのプロセスIDを見つける必要がありますか?もしそうなら、どのように?