python實(shí)現(xiàn)mp3文件播放的具體實(shí)現(xiàn)代碼
本文使用pygame實(shí)現(xiàn)播放mp3,文中用到pygame及mutagen庫(kù),安裝:
- pip install pygame
- pip install mutagen
以下代碼實(shí)現(xiàn)mp3播放類,包含功能如下:
- 設(shè)置mp3文件
- mp3長(zhǎng)度
- 暫停播放
- 繼續(xù)播放
- 停止播放
- 調(diào)整播放進(jìn)度
- 獲取播放進(jìn)度
一切盡在不言中,以下為具體實(shí)現(xiàn)代碼
import pygame import os class MP3Player(object): def __init__(self, file): self.file = file from mutagen.mp3 import MP3 self.length = MP3(self.file).info.length self.begin = 0.0 self.play_mp3(self.file) def get_pos(self): """ 獲取當(dāng)前播放進(jìn)度 :return: """ game_pos = pygame.mixer.music.get_pos() if game_pos == -1: return -1 return self.begin + game_pos / 1000 def set_pos(self, value): """ 設(shè)置播放進(jìn)度 :param value: 秒 :return: """ if value >= self.length: dst = self.length else: dst = value self.play_mp3(self.file, dst) def play_mp3(self, mp3_file, pos=0.0): """ 播放mp3 :param mp3_file: :param pos: :return: """ if os.path.exists(mp3_file): pygame.mixer.init() pygame.mixer.music.load(mp3_file) pygame.mixer.music.play(start=pos) self.begin = pos @staticmethod def pause_mp3(): """ 暫停播放 :return: """ pygame.mixer.music.pause() @staticmethod def unpause_mp3(): """ 繼續(xù)播放 :return: """ pygame.mixer.music.unpause() @staticmethod def stop_mp3(): """ 停止播放 并 釋放MP3文件 :return: """ pygame.mixer.music.stop() pygame.mixer.music.unload()
直接實(shí)例化,使用demo如下:
import time mp3 = MP3Player("光輝歲月.mp3") print(mp3.length) # 打印mp3時(shí)長(zhǎng) mp3.set_pop(88) # 設(shè)置進(jìn)度至88秒處 time.sleep(10) mp3.pause_mp3 # 暫停播放 time.sleep(10) mp3.unpause_mp3() # 恢復(fù)播放 time.sleep(10) mp3.stop() # 停止播放
總結(jié)
到此這篇關(guān)于python實(shí)現(xiàn)mp3文件播放的文章就介紹到這了,更多相關(guān)python實(shí)現(xiàn)mp3文件播放內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
django認(rèn)證系統(tǒng)實(shí)現(xiàn)自定義權(quán)限管理的方法
今天小編就為大家分享一篇django認(rèn)證系統(tǒng)實(shí)現(xiàn)自定義權(quán)限管理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08python過(guò)濾字符串中不屬于指定集合中字符的類實(shí)例
這篇文章主要介紹了python過(guò)濾字符串中不屬于指定集合中字符的類,涉及Python針對(duì)字符串與集合的相關(guān)操作技巧,需要的朋友可以參考下2015-06-06python對(duì)RabbitMQ的簡(jiǎn)單入門使用教程
RabbitMq是實(shí)現(xiàn)了高級(jí)消息隊(duì)列協(xié)議(AMQP)的開源消息代理中間件,下面這篇文章主要給大家介紹了關(guān)于python對(duì)RabbitMQ的簡(jiǎn)單入門使用,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06Python中定時(shí)任務(wù)框架APScheduler的快速入門指南
APScheduler是基于Quartz的一個(gè)Python定時(shí)任務(wù)框架,實(shí)現(xiàn)了Quartz的所有功能,使用起來(lái)十分方便。下面這篇文章主要跟大家介紹了Python中定時(shí)任務(wù)框架APScheduler的快速入門指南,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07Python&Matlab實(shí)現(xiàn)伏羲八卦圖的繪制
八卦最先由伏羲根據(jù)燧人氏造設(shè)的兩幅星圖歷法《河圖洛書》創(chuàng)設(shè)。本文將通過(guò)Python和Matlab分別繪制伏羲八卦圖,感興趣的小伙伴可以了解一下2022-03-03Django如何配置mysql數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了Django配置mysql數(shù)據(jù)庫(kù)的詳細(xì)步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Python的Flask框架中配置多個(gè)子域名的方法講解
Fask中可以通過(guò)通配符子域的方式來(lái)部署多個(gè)子域名,這里我們就來(lái)作一個(gè)Python的Flask框架中配置多個(gè)子域名的方法講解,需要的朋友可以參考下2016-06-06淺析Python打包時(shí)包含靜態(tài)文件處理方法
這篇文章主要介紹了Python打包時(shí)包含靜態(tài)文件處理方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01node.js獲取參數(shù)的常用方法(總結(jié))
下面小編就為大家?guī)?lái)一篇node.js獲取參數(shù)的常用方法(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05