Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用mpg321通过Python播放音乐?_Python - Fatal编程技术网

如何使用mpg321通过Python播放音乐?

如何使用mpg321通过Python播放音乐?,python,Python,我想用另一个事件作为触发器,使用Python播放带有mpg321的音乐文件。然后,当我输入特定的字符串时,我希望音乐停止播放 如何使用Python实现这一点 import os from subprocess import Popen, PIPE music = None while 1: cmd = raw_input('> ') if cmd.lower() == 'play': music = Popen('mpg321 /home/Torxed/te

我想用另一个事件作为触发器,使用Python播放带有
mpg321
的音乐文件。然后,当我输入特定的字符串时,我希望音乐停止播放

如何使用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()
我仍然认为这是一个可怕的解决方案,因为如果你是一个程序员,你不应该依赖外部资源来完成你的任务。。它应该在应用程序中处理,而不是在操作系统或某些3: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()
  • 更多信息请点击此处:
Python本机替代方案 Winsound是仅限Windows的替代方案

import winsound
winsound.PlaySound('C:\\users\\Torxed\\Desktop\\test.mp3')
OSSaudio这是一个本机Linux替代品,OSS是Linux/Unix系统上最默认的音频回放之一,因此对于大多数人来说,它不应该是一个奇怪的选择。(由Stackoverflow上的@orestis提供)


一些引导我使用OSS解决方案的谷歌搜索给了我这样的信息(一定要相信那些家伙,好的例子):

让我们知道你用了什么“os.popen”(if语句下的mpg321/home/pi/voltage.mp3')。@user2340615注意:对于我的备选方案,例如Pygame,您可以截获按键,并使其通过图形前端播放/停止/暂停音乐。天空是极限。pyglet备选方案也很不错。
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()