mpg321
別のイベントをトリガーとしてPythonで音楽ファイルを再生したい。次に、特定の文字列を入力すると、音楽の再生が停止するようにします。
Pythonを使用してこれを行うにはどうすればよいですか?
mpg321
別のイベントをトリガーとしてPythonで音楽ファイルを再生したい。次に、特定の文字列を入力すると、音楽の再生が停止するようにします。
Pythonを使用してこれを行うにはどうすればよいですか?
import os
from subprocess import Popen, PIPE
music = None
while 1:
cmd = raw_input('> ')
if cmd.lower() == 'play':
music = Popen('mpg321 /home/Torxed/test.mp3'.split(' ',1), stdout=PIPE, stderr=STDOUT, close_fds=True)
elif cmd.lower() == 'stop':
try:
music.stdout.close()
music.stdin.close()
except:
pass
music = None
サブプロセスを使用する代わりに、次のことができます。
music = os.popen('mpg321 /home/Torxed/test.mp3', 'w')
そしてただする
music.close()
プログラマーの場合、タスクを実行するために外部のソースに依存するべきではないため、これはまだ恐ろしい解決策だと思います..アプリケーション内で処理する必要があり、OSや一部ではあまり処理しないでください。 dパーティ申し込み。
Pygame : たとえば、Pygame を使用してください。
import pygame, time
pygame.init()
pygame.mixer.music.load('/home/Torxed/test.mp3')
pygame.mixer.music.play()
time.sleep(5)
pygame.mixer.music.fadeout(5)
スナック サウンド ツールキット: 柔軟性に優れた純粋な Python オーディオ ライブラリです。
s = Sound()
s.read('/home/Torxed/test.mp3')
s.play()
Pyglet : 簡単に私のお気に入りで、音楽にもアクセスできるクロスプラットフォームのグラフィック OpenGL ライブラリです。
import pyglet
music = pyglet.resource.media('/home/Torxed/test.mp3')
music.play()
pyglet.app.run()
Winsoundは Windows のみの代替手段です
import winsound
winsound.PlaySound('C:\\users\\Torxed\\Desktop\\test.mp3')
OSSaudioこれは、Linux のネイティブな代替手段です。OSS は、Linux/Unix システムで最もデフォルトのオーディオ再生の 1 つであるため、ほとんどの人にとって奇妙なオプションではないはずです。(Stackoverflow の @orestis の厚意による)
from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen('/home/Torxed/test.wav','rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
try:
from ossaudiodev import AFMT_S16_NE
except ImportError:
if byteorder == "little":
AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
else:
AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()
私をOSSソリューションに導いたいくつかのグーグルは、私にこれを与えました(彼らの功績を認めてください、良い例です):Pythonでサウンドを再生する