Cách dừng mô-đun playound trong python

Tóm lược. Phát một bài hát âm thanh mp3 bằng mã python nghe có vẻ thú vị. Có thể phát mp3 bằng Python không?

Không có cơ chế sẵn có để chạy tệp phương tiện (chẳng hạn như mp3) trong Python, nhưng có nhiều thư viện của bên thứ 3 như vlc hoặc pygame sử dụng để chúng tôi có thể phát tệp âm thanh trong Python

Phát mp3 bằng Mô-đun VLC Python

Chúng tôi sẽ sử dụng mô-đun VLC Python để phát tệp âm thanh vì nó dễ dàng và cung cấp nhiều tính năng ngoài việc chỉ phát và dừng

Vì vậy, hãy bắt đầu bằng cách cài đặt vlc. mô-đun py bằng lệnh sau trong terminal

pip install python-vlc

Sau khi cài đặt ta có thể import module vlc để chạy file mp3 như sau

  • Nhập mô-đun vlc
  • Tạo một đối tượng phương tiện VLC bằng cách chuyển đường dẫn của tệp mp3 tới phương thức
    >>>import  vlc
    >>>p = vlc.MediaPlayer("fade music.mp3")
    >>>p.play()
    0
    >>>p.stop()
    1 làm tham số
  • Gọi phương thức
    >>>import  vlc
    >>>p = vlc.MediaPlayer("fade music.mp3")
    >>>p.play()
    0
    >>>p.stop()
    2 trên đối tượng để phát bài hát
  • Để dừng phát, hãy sử dụng phương pháp
    >>>import  vlc
    >>>p = vlc.MediaPlayer("fade music.mp3")
    >>>p.play()
    0
    >>>p.stop()
    3 trên đối tượng

Ví dụ. Dòng lệnh Python

>>>import  vlc
>>>p = vlc.MediaPlayer("fade music.mp3")
>>>p.play()
0
>>>p.stop()

Ví dụ. IDE Python

import  vlc
import time

p = vlc.MediaPlayer("fade music.mp3")
p.play()
time.sleep(60)
p.stop()

Trong dòng lệnh python, nhạc sẽ không dừng cho đến khi chúng ta thực hiện lệnh tiếp theo là

>>>import  vlc
>>>p = vlc.MediaPlayer("fade music.mp3")
>>>p.play()
0
>>>p.stop()
4, trong khi trong python IDE, chúng ta sẽ không nghe thấy bài hát đang phát vì quá trình thực thi chương trình hoàn tất trong tích tắc của giây

Do đó để nghe được âm thanh mp3 qua mã viết bằng Python Ide, chúng ta phải tạm dừng thực thi chương trình bằng phương thức

>>>import  vlc
>>>p = vlc.MediaPlayer("fade music.mp3")
>>>p.play()
0
>>>p.stop()
5

Nó yêu cầu một đối số - đường dẫn đến tệp có âm thanh bạn muốn phát. Đây có thể là một tệp cục bộ hoặc một URL

Có một đối số thứ hai tùy chọn, khối, được đặt thành True theo mặc định. Đặt nó thành Sai làm cho chức năng chạy không đồng bộ

Trên Windows, sử dụng Windll. chiến thắng. WAVE và MP3 đã được thử nghiệm và được biết là hoạt động. Các định dạng tệp khác cũng có thể hoạt động

Trên OS X, sử dụng AppKit. NSSound. WAVE và MP3 đã được thử nghiệm và được biết là hoạt động. Nói chung, bất cứ thứ gì QuickTime có thể phát, thì âm thanh cũng có thể phát, dành cho OS X

Trên Linux, sử dụng GStreamer. Được biết là hoạt động trên Ubuntu 14. 04 và hệ điều hành sơ cấp Loki. Tôi hy vọng bất kỳ bản phân phối Linux nào có trải nghiệm máy tính để bàn gnome tiêu chuẩn sẽ hoạt động

Nếu bạn muốn các bản phân phối Linux khác (hoặc bất kỳ HĐH nào khác) hoạt động, hãy gửi PR bổ sung hỗ trợ cho nó, nhưng vui lòng đảm bảo rằng nó vượt qua các bài kiểm tra (xem bên dưới)

Trò chơi điện tử nhằm mục đích đưa người chơi vào một loại thực tế ảo. Chúng tôi làm điều này chủ yếu bằng hình ảnh, nhưng nó có thể tạo ra sự khác biệt lớn và là một cải tiến lớn cho trò chơi của bạn nếu bạn thêm cả âm thanh

Âm thanh thường có hai dạng chính. Tiếng ồn "xung quanh" hoặc do hành động của người chơi. Với PyGame, bạn có hai lựa chọn. Âm nhạc hoặc Âm thanh. Nhạc sẽ chỉ phát ở chế độ nền khi bạn gọi nó và âm thanh sẽ phát bất cứ lúc nào bạn gọi chúng để phát. Chúng tôi sẽ đề cập đến cả hai ở đây bằng cách thêm cả hai vào trò chơi hiện tại của chúng tôi. Đầu tiên, chúng tôi sẽ sử dụng một giai điệu đơn giản từ YouTube làm nhạc cho trò chơi của mình và sau đó chúng tôi sẽ thêm âm thanh "va chạm" mà chúng tôi sẽ phát nếu chúng tôi va phải bất kỳ khối nào

Để bắt đầu, hãy tạo ra âm thanh

crash_sound = pygame.mixer.Sound("crash.wav")

Ở trên sẽ chỉ định sự cố. wav để phát khi chúng tôi gọi crash_sound trong chức năng phát âm thanh của PyGame. Chú ý tập tin là. làn sóng. PyGame có thể xử lý. mp3 cũng vậy, nhưng nó hơi trục trặc và đôi khi sẽ hoạt động và đôi khi nó không hoạt động. Để đặt cược an toàn nhất, hãy đi với. làn sóng

Bây giờ chúng ta đã biết cách gọi âm thanh, làm thế nào chúng ta có thể tạo ra âm nhạc?

pygame.mixer.music.load('jazz.wav')
pygame.mixer.music.play(-1)

Đoạn mã trên sẽ phát tệp nhạc vô thời hạn (mặc dù bạn có thể gọi nó để dừng). -1 báo hiệu PyGame chỉ phát mãi mãi, nhưng nếu bạn đặt số 5 vào đó, thì nhạc sẽ phát một lần và thêm 5 lần nữa

Bây giờ, chúng tôi muốn âm nhạc phát, và đúng như vậy, sau đó chúng tôi cần âm thanh va chạm để phát khi va chạm. Ngoài ra, chúng tôi muốn dừng âm nhạc nếu trường hợp này xảy ra

Vì vậy, trong chức năng sụp đổ của chúng tôi

def crash():
    ####################################
    pygame.mixer.Sound.play(crash_sound)
    pygame.mixer.music.stop()
    ####################################
    largeText = pygame.font.SysFont("comicsansms",115)
    TextSurf, TextRect = text_objects("You Crashed", largeText)

Ở trên, chúng tôi đang gọi PyGame để phát crash_sound, cũng như dừng nhạc. Điều này có nghĩa là âm nhạc sẽ bắt đầu lại nếu trò chơi được chơi lại

Bây giờ, điều khác duy nhất mà chúng ta có thể muốn làm là tìm hiểu cách tạm dừng/bỏ tạm dừng nhạc khi người chơi tạm dừng trò chơi. Điều này là đủ dễ dàng

Trong chức năng tạm dừng của chúng tôi

def paused():
    ############
    pygame.mixer.music.pause()
    #############

Và sau đó tất nhiên chúng ta phải bỏ tạm dừng nó

def unpause():
    global pause
    #################
    pygame.mixer.music.unpause()
    #################
    pause = False

Mã PyGame đầy đủ

import pygame
import time
import random
 
pygame.init()

#############
crash_sound = pygame.mixer.Sound("crash.wav")
#############
 
display_width = 800
display_height = 600
 
black = (0,0,0)
white = (255,255,255)

red = (200,0,0)
green = (0,200,0)

bright_red = (255,0,0)
bright_green = (0,255,0)
 
block_color = (53,115,255)
 
car_width = 73
 
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('A bit Racey')
clock = pygame.time.Clock()
 
carImg = pygame.image.load('racecar.png')
gameIcon = pygame.image.load('carIcon.png')

pygame.display.set_icon(gameIcon)

pause = False
#crash = True
 
def things_dodged(count):
    font = pygame.font.SysFont("comicsansms", 25)
    text = font.render("Dodged: "+str(count), True, black)
    gameDisplay.blit(text,(0,0))
 
def things(thingx, thingy, thingw, thingh, color):
    pygame.draw.rect(gameDisplay, color, [thingx, thingy, thingw, thingh])
 
def car(x,y):
    gameDisplay.blit(carImg,(x,y))
 
def text_objects(text, font):
    textSurface = font.render(text, True, black)
    return textSurface, textSurface.get_rect()
 
 
def crash():
    ####################################
    pygame.mixer.Sound.play(crash_sound)
    pygame.mixer.music.stop()
    ####################################
    largeText = pygame.font.SysFont("comicsansms",115)
    TextSurf, TextRect = text_objects("You Crashed", largeText)
    TextRect.center = ((display_width/2),(display_height/2))
    gameDisplay.blit(TextSurf, TextRect)
    

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
                
        

        button("Play Again",150,450,100,50,green,bright_green,game_loop)
        button("Quit",550,450,100,50,red,bright_red,quitgame)

        pygame.display.update()
        clock.tick(15) 

def button(msg,x,y,w,h,ic,ac,action=None):
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()

    if x+w > mouse[0] > x and y+h > mouse[1] > y:
        pygame.draw.rect(gameDisplay, ac,(x,y,w,h))
        if click[0] == 1 and action != None:
            action()         
    else:
        pygame.draw.rect(gameDisplay, ic,(x,y,w,h))
    smallText = pygame.font.SysFont("comicsansms",20)
    textSurf, textRect = text_objects(msg, smallText)
    textRect.center = ( (x+(w/2)), (y+(h/2)) )
    gameDisplay.blit(textSurf, textRect)
    

def quitgame():
    pygame.quit()
    quit()

def unpause():
    global pause
    pygame.mixer.music.unpause()
    pause = False
    

def paused():
    ############
    pygame.mixer.music.pause()
    #############
    largeText = pygame.font.SysFont("comicsansms",115)
    TextSurf, TextRect = text_objects("Paused", largeText)
    TextRect.center = ((display_width/2),(display_height/2))
    gameDisplay.blit(TextSurf, TextRect)
    

    while pause:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()


        button("Continue",150,450,100,50,green,bright_green,unpause)
        button("Quit",550,450,100,50,red,bright_red,quitgame)

        pygame.display.update()
        clock.tick(15)   


def game_intro():

    intro = True

    while intro:
        for event in pygame.event.get():
            #print(event)
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
                
        gameDisplay.fill(white)
        largeText = pygame.font.SysFont("comicsansms",115)
        TextSurf, TextRect = text_objects("A bit Racey", largeText)
        TextRect.center = ((display_width/2),(display_height/2))
        gameDisplay.blit(TextSurf, TextRect)

        button("GO!",150,450,100,50,green,bright_green,game_loop)
        button("Quit",550,450,100,50,red,bright_red,quitgame)

        pygame.display.update()
        clock.tick(15)
        
        
    
    

    
def game_loop():
    global pause
    ############
    pygame.mixer.music.load('jazz.wav')
    pygame.mixer.music.play(-1)
    ############
    x = (display_width * 0.45)
    y = (display_height * 0.8)
 
    x_change = 0
 
    thing_startx = random.randrange(0, display_width)
    thing_starty = -600
    thing_speed = 4
    thing_width = 100
    thing_height = 100
 
    thingCount = 1
 
    dodged = 0
 
    gameExit = False
 
    while not gameExit:
 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
 
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -5
                if event.key == pygame.K_RIGHT:
                    x_change = 5
                if event.key == pygame.K_p:
                    pause = True
                    paused()
                    
 
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    x_change = 0
 
        x += x_change
        gameDisplay.fill(white)
 
        things(thing_startx, thing_starty, thing_width, thing_height, block_color)
 
 
        
        thing_starty += thing_speed
        car(x,y)
        things_dodged(dodged)
 
        if x > display_width - car_width or x < 0:
            crash()
 
        if thing_starty > display_height:
            thing_starty = 0 - thing_height
            thing_startx = random.randrange(0,display_width)
            dodged += 1
            thing_speed += 1
            thing_width += (dodged * 1.2)
 
        if y < thing_starty+thing_height:
            print('y crossover')
 
            if x > thing_startx and x < thing_startx + thing_width or x+car_width > thing_startx and x + car_width < thing_startx+thing_width:
                print('x crossover')
                crash()
        
        pygame.display.update()
        clock.tick(60)

game_intro()
game_loop()
pygame.quit()
quit()

Có 1 thử thách cho hướng dẫn này. Đăng ký +=1 để truy cập vào những thứ này, tải xuống video và không có quảng cáo.


Có 2 bài kiểm tra/câu hỏi cho hướng dẫn này. Đăng ký +=1 để truy cập vào những thứ này, tải xuống video và không có quảng cáo.

Đó là tất cả cho loạt thông tin cơ bản về PyGame. Bạn có thể chọn chủ đề khác từ Trang chủ


Ngoài ra, bạn có thể xem sê-ri PyOpenGL, sử dụng OpenGL để tạo kết xuất 3D bằng PyGame. Hướng dẫn PyOpenGL

Mô-đun Playsound trong Python là gì?

Mô-đun playound là mô-đun đa nền tảng có thể phát các tệp âm thanh . Điều này không có bất kỳ phụ thuộc nào, chỉ cần cài đặt với pip trong virtualenv của bạn và chạy.

Có một mô-đun âm thanh trong Python không?

playsound là một mô-đun Python cho phép người dùng phát âm thanh trong một dòng mã . Nó là một mô-đun đa nền tảng, là một chức năng duy nhất không có bất kỳ phụ thuộc nào để phát âm thanh và âm thanh. Ví dụ. từ playound nhập playound.