音乐播放 pygame mp3play 和获取音乐信息的 库from mutagen.mp3 import MP3

网易云外链:
import mp3play
def mp3play_music(url):
    """
    #说一下亮点,就是支持播放在线的歌曲,也支持本地
    1.歌曲路径不可以有中文
    2.定义的这个mp3对象必须设置为全局变量,否则直接函数结束,不会播放歌曲
      设置为全局变量,程序结束,他也得把这首歌唱完(只会唱一遍)
    3.可以获取歌曲有多长  单位m和ms
    4.可以停止,也可以播放
    5.声音参数0-100
    6.play(0,4000)  播放的片段   单位是ms
    7.pause()暂停  
    8.unpause 解除暂停
    9.他判断是否播放跟是否暂停好像不对。建议不要用。
    """
    import mp3play
    global mp3
    mp3 = mp3play.load(url)
    mp3.volume(100)
    mp3.play()
    print(mp3.ispaused(),mp3.isplaying())
    time.sleep(2)
    mp3.pause()
    print(mp3.ispaused(),mp3.isplaying())
    time.sleep(2)
    mp3.unpause()
    print(mp3.ispaused(),mp3.isplaying())
    
    
def pygame_music(url):
    """
    不喜欢他是因为他,只支持本地歌曲,不可以在线播放
    优点:可以循环播放歌曲哦
    支持中文路径
    
    但是你如果不能播放,那就是你下载歌曲的时候格式错误
    """
    import os
    import time
    import pygame
    pygame.mixer.init()
    pygame.mixer.music.load(url)
    pygame.mixer.music.set_volume(0.5) 
    pygame.mixer.music.play(-1)
    
    pygame.mixer.music.fadeout(1)

url_loc="F://最美的伤口DJ小鱼儿.mp3"
url_onl="http://m701.music.126.net/20200727185101/76794d0c48b82ba158b2d139f2cc6661/jdymusic/obj/w5zDlMODwrDDiGjCn8Ky/2180586519/98b2/4d51/b6d3/c8c65de6a0bf053a2cd94d1f9473d069.mp3"

url="E://python/music/a.mp3"
s="F://吴森.mp3"
k=s.encode("utf-8").decode("gbk")
print(k)
#mp3play_music("F://c.mp3")

pygame_music("F://a.mp3")



"""
http://www.pygame.org/docs/ref/music.html
pygame.mixer.music
pygame模块,用于控制流音频
pygame.mixer.music.load
加载音乐文件进行播放
pygame.mixer.music.unload
卸载当前加载的音乐以释放资源
pygame.mixer.music.play
开始播放音乐流
pygame.mixer.music.rewind
重新开始音乐
pygame.mixer.music.stop
停止音乐播放
pygame.mixer.music.pause
暂时停止音乐播放
pygame.mixer.music.unpause
恢复暂停的音乐
pygame.mixer.music.fadeout
淡出后停止音乐播放
pygame.mixer.music.set_volume
设定音乐音量
pygame.mixer.music.get_volume
取得音乐音量
pygame.mixer.music.get_busy
检查音乐流是否正在播放
pygame.mixer.music.set_pos
设定位置
pygame.mixer.music.get_pos
获取音乐播放时间
pygame.mixer.music.queue
将声音文件排队以跟随当前声音
pygame.mixer.music.set_endevent
播放停止时让音乐发送事件
pygame.mixer.music.get_endevent
获取播放停止时频道发送的事件
音乐模块与 pygame.mixerpygame模块,用于加载和播放声音。使用音乐模块控制混音器中音乐的播放。

音乐播放和常规声音播放之间的区别在于,音乐是流式传输的,永远不会一次全部加载。混音器系统一次仅支持单个音乐流。

请注意,MP3支持有限。在某些系统上,不支持的格式可能会使程序崩溃e.g。Debian Linux。考虑OGG改为使用。

pygame.mixer.music.load()
加载音乐文件进行播放
加载(文件名)->无
负载(对象)->无
这将加载音乐文件名/文件对象并准备播放。如果音乐流已经在播放,它将停止。这不会开始播放音乐。

pygame.mixer.music.unload()
卸载当前加载的音乐以释放资源
unload()->无
这将关闭诸如文件之类的资源,以加载任何音乐。

pygame 2.0.0的新功能。

pygame.mixer.music.play()
开始播放音乐流
播放(循环= 0,开始= 0.0,渐变_毫秒= 0)->无
这将播放加载的音乐流。如果音乐已经在播放,它将重新启动。

参数:    
循环(int)-(可选)重复播放音乐多少次。设置为5将播放五次音乐。设置为-1可使音乐无限重复。
start(float)-(可选)音乐开始播放的位置。起始位置取决于播放音乐的格式。 MP3并将OGG位置作为时间(以秒为单位)。对于MOD 音乐,它是样式订单号。如果无法设置起始位置,则传递起始位置将引发NotImplementedError。
fade_ms(int)-(可选)使音乐以0音量开始播放,并在给定时间内逐渐变到最大音量。样本可以在淡入完成之前结束。在pygame 2.0中添加。
pygame.mixer.music.rewind()
重新开始音乐
rewind()->无
将当前音乐的播放重设为开头。

pygame.mixer.music.stop()
停止音乐播放
stop()->无
如果正在播放音乐,则停止播放。它不会卸载音乐。

pygame.mixer.music.pause()
暂时停止音乐播放
pause()->无
暂时停止播放音乐流。可以使用该pygame.mixer.music.unpause()功能恢复 。

pygame.mixer.music.unpause()
恢复暂停的音乐
unpause()->无
暂停后,它将恢复音乐流的播放。

pygame.mixer.music.fadeout()
淡出后停止音乐播放
淡出(时间)->无
淡出并停止当前正在播放的音乐。

参数:    time(int)-音乐音量在停止之前逐渐消失的时间(以毫秒为单位)。
请注意,此功能将在音乐淡出之前一直阻塞。致电fadeout()和
set_volume()在这段时间内将无效。如果使用设置了事件set_endevent(),则音乐消失后将调用该事件 。
pygame.mixer.music.set_volume()
设定音乐音量
set_volume(volume)->无
设置音乐播放的音量。

参数:    volume(float)-value参数应在0.0到1.0之间。加载新音乐后,音量将重设为全音量。
pygame.mixer.music.get_volume()
取得音乐音量
get_volume()->值
返回调音台的当前音量。该值将在0.0到1.0之间。

pygame.mixer.music.get_busy()
检查音乐流是否正在播放
get_busy()->布尔
当音乐流正在播放时,返回True。音乐空闲时,它返回False。即使音乐暂停,它也会返回True。

pygame.mixer.music.set_pos()
设定位置
set_pos(pos)->无
这将在音乐文件中设置开始播放的位置。浮点数(或可以转换为浮点数的数字)“ pos”的含义取决于音乐格式。

对于MOD文件,pos是模块中的整数模式编号。因为OGG它是从声音开始的绝对位置(以秒为单位)。对于MP3文件,它是距当前位置的相对位置(以秒为单位)。要在MP3 文件中进行绝对定位,请先调用rewind()。

不支持其他文件格式。与早期版本相比,新版本的SDL_mixer具有更好的定位支持。如果特定格式不支持定位,则会引发SDLError。

set_pos()强调SDL_mixer函数的函数调用 Mix_SetMusicPosition。

pygame 1.9.2的新功能。

pygame.mixer.music.get_pos()
获取音乐播放时间
get_pos()->时间
这将获取音乐已播放的毫秒数。返回的时间仅表示音乐播放了多长时间;它不考虑任何起始位置偏移。

pygame.mixer.music.queue()
将声音文件排队以跟随当前声音
队列(文件名)->无
这将加载声音文件并将其排队。当前声音自然结束后,将开始排队声音文件。一次只能排队一个声音。在另一个声音排队时排队一个新声音将导致该新声音成为排队声音。另外,如果当前声音停止或更改,则排队的声音将丢失。

以下示例将播放巴赫音乐六次,然后播放莫扎特音乐一次:

pygame.mixer.music.load('bach.ogg')
pygame.mixer.music.play(5)        # Plays six times, not five!
pygame.mixer.music.queue('mozart.ogg')
pygame.mixer.music.set_endevent()
播放停止时让音乐发送事件
set_endevent()->无
set_endevent(type)->无
当音乐播放完毕时,这会使pygame发出信号(通过事件队列)。该参数确定将排队的事件的类型。

每当音乐结束时(不仅是第一次),事件都会排队。若要停止事件排队,请不带任何参数调用此方法。

pygame.mixer.music.get_endevent()
获取播放停止时频道发送的事件
get_endevent()->类型
返回每次音乐完成播放时将发送的事件类型。如果没有结束事件,函数将返回pygame.NOEVENT。
"""



#发现了一个 获取音乐时长的库
"""
1.音乐 ,电影,都可以获取信息
"""
from mutagen.mp3 import MP3
audio=MP3("F://a.mp3")
print(audio.info.length)
print(audio.filename)
print(audio.info.pprint())
View Code

 

新加一个模块playsound
from playsound import playsound
#只有播放功能
#音质非常好
#不可以有中文路径
#本地在线都支持
url = "E://python/music/dongmian.mp3"
url = "http://m10.music.126.net/20200815213352/d4b242f153001d2f63dc00302323539d/ymusic/e33e/ce89/f6b0/03021c4140edc953808280ac78bd35be.mp3"
playsound(url)
View Code

 

posted @ 2020-07-27 23:04    阅读(338)  评论(0编辑  收藏  举报