python实现mp3文件播放的具体实现代码

作者:ApocalypseScarecrow 时间:2023-02-03 13:37:52 

本文使用pygame实现播放mp3,文中用到pygame及mutagen库,安装:

  • pip install pygame

  • pip install mutagen

以下代码实现mp3播放类,包含功能如下:

  • 设置mp3文件

  • mp3长度

  • 暂停播放

  • 继续播放

  • 停止播放

  • 调整播放进度

  • 获取播放进度

一切尽在不言中,以下为具体实现代码

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):
       """
       获取当前播放进度
       :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):
       """
       设置播放进度
       :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():
       """
       继续播放
       :return:
       """
       pygame.mixer.music.unpause()
   @staticmethod
   def stop_mp3():
       """
       停止播放  并 释放MP3文件
       :return:
       """
       pygame.mixer.music.stop()
       pygame.mixer.music.unload()

直接实例化,使用demo如下:

import time
mp3 = MP3Player("光辉岁月.mp3")
print(mp3.length)   # 打印mp3时长
mp3.set_pop(88)   # 设置进度至88秒处
time.sleep(10)
mp3.pause_mp3    # 暂停播放
time.sleep(10)
mp3.unpause_mp3()    # 恢复播放
time.sleep(10)
mp3.stop()    # 停止播放

来源:https://blog.csdn.net/tww124849980/article/details/124891072

标签:python,播放,mp3
0
投稿

猜你喜欢

  • Mysql巧用join优化sql的方法详解

    2024-01-16 01:19:34
  • Python单元测试与测试用例简析

    2021-07-18 10:18:59
  • vuejs实现ready函数加载完之后执行某个函数的方法

    2024-05-29 22:48:43
  • python编写计算器功能

    2022-10-29 14:07:33
  • win7下mysql6.x出现中文乱码的完美解决方法

    2024-01-17 03:36:45
  • SQL Server 置疑、可疑、正在恢复等情况分析

    2012-01-05 18:51:59
  • 利用Python如何实现K-means聚类算法

    2023-09-16 09:17:38
  • vue跳转后不记录历史记录的问题

    2023-07-02 17:03:38
  • 详解用Python为直方图绘制拟合曲线的两种方法

    2021-06-15 23:58:08
  • TensorFlow内存管理bfc算法实例

    2023-09-08 21:42:24
  • 利用keras使用神经网络预测销量操作

    2022-02-25 05:48:31
  • python smtplib发送多个email联系人的实现

    2023-07-24 18:39:43
  • 详解python开发环境搭建

    2023-09-17 21:37:25
  • ASP真正随机不重复查询代码

    2010-01-02 20:40:00
  • Centos5.x下升级python到python2.7版本教程

    2023-04-15 13:50:07
  • php正则过滤html标签、空格、换行符的代码(附说明)

    2023-07-22 07:58:01
  • python数字图像处理之基本图形的绘制

    2021-10-21 05:29:42
  • Python实战使用XPath采集数据示例解析

    2022-02-25 09:00:24
  • 探究MySQL中索引和提交频率对InnoDB表写入速度的影响

    2024-01-26 08:03:22
  • Python基于os.environ从windows获取环境变量

    2022-09-18 01:42:45
  • asp之家 网络编程 m.aspxhome.com