python实现媒体播放器功能

本文实例为大家分享了python实现媒体播放器功能的具体代码,供大家参考,具体内容如下

playMP3.py

# -*- coding: utf-8 -*-
import wx;
import wx.media;
import os;
import SPrint;
import mediaStateBar;
import mediaList;
import SaveLog;
import MediaItem;
woldcart = "media files|*.*|avi|*.avi|rmvb|*.rmvb|rm|*.rm|wma|*.wma|mp3|*.mp3";
class MediaFrame(wx.Frame):
  def __init__(self):
    wx.Frame.__init__(self,None,wx.NewId(),u"媒体播放器",pos=wx.DefaultPosition,size=(500,500));
    self.media = '';
    try:
      self.media = wx.media.MediaCtrl(self,style=wx.SIMPLE_BORDER,
                       #szBackend=wx.media.MEDIABACKEND_DIRECTSHOW
                       #szBackend=wx.media.MEDIABACKEND_QUICKTIME
                       #szBackend=wx.media.MEDIABACKEND_WMP10
                       );
      self.media.Bind(wx.media.EVT_MEDIA_LOADED,self.mediaLoaded);
      self.media.Bind(wx.media.EVT_MEDIA_STATECHANGED,self.mediaStateChange)
    except NotImplementedError:
      self.Destroy()
      raise;
    self.listView = '';
    self.item = MediaItem.MediaItem();
    self.sb = mediaStateBar.MediaStateBar(self);
    self.SetStatusBar(self.sb);
    self.log = SaveLog.SaveLog();
    #self.log.test();
    self.menu = wx.Menu()
    self.openMenu = self.menu.Append(wx.NewId(),u"打开文件");
    self.Bind(wx.EVT_MENU,self._openFile,self.openMenu);
    self.quitMenu = self.menu.Append(wx.NewId(),u"退出");
    self.Bind(wx.EVT_MENU,self.quit,self.quitMenu);
    self.viewMenu = wx.Menu();
    self.listMenu = self.viewMenu.Append(wx.NewId(),u"打开播放列表");
    self.Bind(wx.EVT_MENU,self.openList,self.listMenu);
    self.loadListMenu = self.viewMenu.Append(wx.NewId(),u"加载播放列表");
    self.Bind(wx.EVT_MENU,self.loadMediaList,self.loadListMenu);
    self.saveListMenu = self.viewMenu.Append(wx.NewId(),u"保存播放列表")
    self.Bind(wx.EVT_MENU,self.saveMediaList,self.saveListMenu);
    menuBar = wx.MenuBar();
    menuBar.Append(self.menu,u"文件")
    menuBar.Append(self.viewMenu,u"播放列表")
    self.SetMenuBar(menuBar);
    self.slider = wx.Slider(self,wx.NewId(), 0,0,100);
    self.Bind(wx.EVT_SLIDER,self.onSeek,self.slider);
    self.btnGroupSizer = wx.BoxSizer(wx.HORIZONTAL);
    self.btnGroupSizer.Add((5,5),0)
    self.playBtn = self.createButton("./pic/play.png",self.playMp3,u"播放");
    self.playBtn.Disable()
    self.btnGroupSizer.Add(self.playBtn);
    self.btnGroupSizer.Add((5,5),0)
    self.pauseBtn = self.createButton("./pic/pause.png",self.pauseMp3,u"暂停");
    self.pauseBtn.Disable()
    self.btnGroupSizer.Add(self.pauseBtn);
    self.btnGroupSizer.Add((5,5),0)
    self.stopBtn = self.createButton("./pic/stop.png",self.stopMp3,u"停止");
    self.stopBtn.Disable()
    self.btnGroupSizer.Add(self.stopBtn);
    self.btnGroupSizer.Add((5,5),0)
    self.preBtn = self.createButton("./pic/pre.png",self.preMp3,u"前一个");
    self.preBtn.Disable()
    self.btnGroupSizer.Add(self.preBtn);
    self.btnGroupSizer.Add((5,5),0)
    self.nextBtn = self.createButton("./pic/next.png",self.nextMp3,u"下一个");
    self.nextBtn.Disable()
    self.btnGroupSizer.Add(self.nextBtn);
    self.btnGroupSizer.Add((5,5),0)
    self.openBtn = self.createButton("./pic/media.png",self._openFile,u"打开文件");
    #self.openBtn.Disable()
    self.btnGroupSizer.Add(self.openBtn);
    self.btnGroupSizer.Add((5,5),0)
    self.listBtn = self.createButton("./pic/list.png",self.openList,u"打开列表");
    #self.listBtn.Disable()
    self.btnGroupSizer.Add(self.listBtn)
    self.btnGroupSizer.Add((5,5),0)
    self.volSlider = wx.Slider(self,wx.NewId(), 0,0,100);
    self.Bind(wx.EVT_SLIDER,self.volumeSeek,self.volSlider);
    self.btnGroupSizer.Add(self.volSlider)
    self.btnGroupSizer.Add((5,5),0)
    self.volTxt = wx.StaticText(self,wx.NewId(),"")
    self.btnGroupSizer.Add(self.volTxt)
    self.btnGroupSizer.Add((5,5),0)
    mainSizer = wx.BoxSizer(wx.VERTICAL);
    mainSizer.Add(self.media,1,wx.EXPAND|wx.ALL,5);
    #mainSizer.Add((5,5),0)
    mainSizer.Add(self.slider,0,wx.EXPAND|wx.ALL,5);
    #mainSizer.Add((2,2),0)
    mainSizer.Add(self.btnGroupSizer,0,wx.EXPAND|wx.ALL,5);
    #mainSizer.Add((2,2),0)
    self.SetSizer(mainSizer);
    self.Layout();
    self.timer = wx.Timer(self)
    self.Bind(wx.EVT_TIMER,self.onTimer);
    self.timer.Start(200);
  def createButton(self,img,clickFun,tip=""):
    bmp = wx.Bitmap(img, wx.BITMAP_TYPE_PNG);
    btn = wx.BitmapButton(self,wx.NewId(),bmp);
    if tip != '' : btn.SetToolTipString(tip);
    btn.Bind(wx.EVT_BUTTON,clickFun);
    return btn;
  def quit(self,event):
    self.Destroy();
  def playMp3(self,e):
    if self.item != '':
      self.media.Play()
    # self.media.SetInitialSize()
  def pauseMp3(self,e=''):
    self.media.Pause()
  def stopMp3(self,e=''):
    self.media.Stop()
  def preMp3(self,e):
    if self.item!='':
      self.item = self.log.getPreItem(self.item.index)
      if self.item != '':
        self.playMedia(self.item.url,self.item.fileName);
  def nextMp3(self,e):
    if self.item!='':
      self.item = self.log.getNextItem(self.item.index)
      if self.item != '':
        self.playMedia(self.item.url,self.item.fileName);
  def onSeek(self,event):
    self.media.Seek(self.slider.GetValue())
  def callAfterPlayMedia(self,url):
    #self.media.SetInitialSize();
    self.media.Play();
  def playMedia(self,url,filename):
    #print SPrint.encodeFromSystem( u"播放文件: " ) , SPrint.encodeFromSystem(url) ;
    if self.media.Load(url) != True:
      return ;
    self.item = MediaItem.MediaItem();
    self.item.fileName = filename;
    self.item.url = url;
    self.SetTitle(filename)
    self.SetStatusText(filename,1)
    #wx.FutureCall(2000,self.callAfterPlayMedia,url);
  def _openFile(self,event):
    dialog = wx.FileDialog(self,u"打开文件",'F://movie//',"",woldcart,style=wx.OPEN|wx.CHANGE_DIR)
    if dialog.ShowModal() == wx.ID_OK:
      self.playMedia(dialog.GetPath(),dialog.GetFilename())
    dialog.Destroy();
  def cellRemove(self,url,all=False):
    if all == True:
      self.stopMp3()
      self.item = '';
      return ;
    if self.item.url == url:
      self.stopMp3();
      self.item = '';
  def volumeSeek(self,evt):
    #print float(self.volSlider.GetValue()/100);
    self.media.SetVolume(self.volSlider.GetValue()/100.0)
    self.volTxt.SetLabel(str(self.volSlider.GetValue())+'%')
  def mediaLoaded(self,e):
    print "media loaded!"
    self.media.Play();
    self.slider.SetRange(0,self.media.Length());
    self.item.length = self.getAccurateTime(self.media.Length()/1000);
    if self.log.addItem(self.item):
      if self.listView != '':
        self.listView.reflash(self.log);
    if self.log.haveNextItem(self.item.index):
      self.nextBtn.Enable();
    else:
      self.nextBtn.Disable()
    if self.log.havePreItem(self.item.index):
      self.preBtn.Enable()
    else:
      self.preBtn.Disable();
    self.volSlider.SetValue(self.media.GetVolume()*100);
    self.volTxt.SetLabel(str(self.volSlider.GetValue())+'%')
  def mediaStateChange(self,evt):
    if self.media.GetState() == wx.media.MEDIASTATE_PAUSED:
      self.playBtn.Enable()
      self.pauseBtn.Disable()
      self.stopBtn.Enable();
      self.SetStatusText(u"暂停")
    elif self.media.GetState() == wx.media.MEDIASTATE_PLAYING:
      self.playBtn.Disable()
      self.pauseBtn.Enable()
      self.stopBtn.Enable();
      self.SetStatusText(u"播放")
    elif self.media.GetState() == wx.media.MEDIASTATE_STOPPED:
      self.playBtn.Enable()
      self.pauseBtn.Enable()
      self.stopBtn.Disable();
      self.SetStatusText(u"停止")
  def onTimer(self,evt):
    self.slider.SetValue(self.media.Tell());
    self.SetStatusText(self.creatTimeStatusTEXT(),1)
  def creatTimeStatusTEXT(self):
    current = self.getAccurateTime(self.media.Tell()/1000);
    total = self.getAccurateTime(self.media.Length()/1000);
    return ' ' + current + '/' + total;
  def openList(self,evt):
    if self.listView == '':
      self.listView = mediaList.MediaListView(self,self.log);
      self.listView.CenterOnParent(wx.BOTH);
      self.listView.Show();
      self.listView.Bind(wx.EVT_CLOSE,self.closeOpenList);
    else:
      self.closeOpenList(evt);
  def closeOpenList(self,evt):
    self.listView.Destroy();
    self.listView = '';
  def loadMediaList(self,evt):
    woldcart1 = "txt|*.txt";
    dialog = wx.FileDialog(self,u"加载播放列表",'C:',"",woldcart1,style=wx.OPEN|wx.CHANGE_DIR)
    if dialog.ShowModal() == wx.ID_OK:
      self._loadMediaList(dialog.GetPath())
    dialog.Destroy();
  def _loadMediaList(self,url):
    f = file(url)
    lines = f.readlines()
    for line in lines:
      if line:
        self.log.loadLog(line);
  def saveMediaList(self,evt):
    woldcart1 = "txt|*.txt";
    dialog = wx.FileDialog(self,u"保存播放列表",'C:',"",woldcart1,style=wx.SAVE|wx.CHANGE_DIR)
    if dialog.ShowModal() == wx.ID_OK:
      self._saveMediaList(dialog.GetPath())
    dialog.Destroy();
  def _saveMediaList(self,url):
    f = file(url,"w+")
    f.writelines(self.log.createLog());
    f.close();
    self.showMessage(u"保存成功!");
  def showMessage(self,str):
    dlg = wx.MessageDialog(self, str,u"消息", wx.OK | wx.ICON_INFORMATION)
    dlg.ShowModal()
    dlg.Destroy()
  def getAccurateTime(self,s):
   h = 0
   m = 0
   if s/60 !=0:
     m = s/60
     s = s%60
   if m/60 !=0:
     h = m/60
     m = m%60
   return str(h)+':'+str(m)+':'+str(s) 

if __name__ == "__main__":
  app = wx.PySimpleApp()
  frame = MediaFrame();
  bmp = wx.Icon("./pic/media.png",wx.BITMAP_TYPE_PNG)
  frame.SetIcon(bmp)
  frame.Show();
  app.MainLoop();  

mediaList.py

# -*- coding: utf-8 -*-
import wx;
import sys;
import os;
import SaveLog;
import subprocess;
class MediaListView(wx.MiniFrame):
  def __init__(self,parent,log):
    wx.MiniFrame.__init__(self,parent,wx.NewId(),u"文件列表",style=wx.DEFAULT_FRAME_STYLE);
    self.SetAutoLayout(True)
    self.mediaMain = parent;
    self.menu = '';
    self.selectIndex = -1
    self.listDataLog = SaveLog.SaveLog();
    self.listDataLog = log;
    self.listct = wx.ListCtrl(self,wx.NewId(),style=wx.LC_REPORT|
                             wx.LC_VRULES|
                             wx.LC_SORT_ASCENDING);
    self.listct.InsertColumn(0,u"编号")
    self.listct.SetColumnWidth(0,38)
    self.listct.InsertColumn(1,u"名字")
    self.listct.SetColumnWidth(1,235)
    self.listct.InsertColumn(2,u"时间");
    self.listct.SetColumnWidth(2,105)
    frSizer = wx.BoxSizer(wx.VERTICAL)
    frSizer.Add(self.listct,1,wx.EXPAND|wx.ALL,5)
    self.listct.Bind(wx.EVT_CONTEXT_MENU,self.onRightClick)
    self.listct.Bind(wx.EVT_LEFT_DCLICK,self.doubleClick)
    self.listct.Bind(wx.EVT_LIST_ITEM_SELECTED,self.itemSelected)
    self.SetSizer(frSizer)
    self.Layout();
    wx.CallAfter(self.reflash,self.listDataLog)
  def reflash(self,log=''):
    self.listct.DeleteAllItems();
    if log != '':
      self.listDataLog = log;
    i = 0;
    ls = log.getList();
    for it in ls:
      if it:
        index = self.listct.InsertStringItem(i,str(it.index));
        self.listct.SetStringItem(index,0,str(it.index))
        self.listct.SetStringItem(index,1,it.fileName)
        self.listct.SetStringItem(index,2,it.length)
        i = i+1;
  def onRightClick(self,evt):
    self.menu = wx.Menu();
    self.playMenu = self.menu.Append(wx.NewId(),u"播放")
    self.Bind(wx.EVT_MENU,self.cellPlay,self.playMenu)
    self.delMenu = self.menu.Append(wx.NewId(),u"删除")
    self.Bind(wx.EVT_MENU,self.cellRomve,self.delMenu);
    self.dirMenu = self.menu.Append(wx.NewId(),u"打开文件目录")
    self.Bind(wx.EVT_MENU,self.openDir,self.dirMenu);
    self.delAllMenu = self.menu.Append(wx.NewId(),u"清除播放列表")
    self.Bind(wx.EVT_MENU,self.clearAll,self.delAllMenu);
    self.PopupMenu(self.menu);
    self.menu.Destroy();
  def cellPlay(self,evt):
    self.selectIndex = self.listct.GetFirstSelected();
    item = self.listDataLog.getItemByIndex(self.selectIndex);
    self.mediaMain.playMedia(item.url,item.fileName);
  def cellRomve(self,evt):
    #self.selectIndex = self.listct.GetFirstSelected();
    url = self.listDataLog.delItemByIndex(self.listct.GetFirstSelected());
    self.listDataLog.reflashDataByIndex();
    self.reflash(self.listDataLog);
    self.mediaMain.cellRemove(url)
  def doubleClick(self,evt):
    item = self.listDataLog.getItemByIndex(self.selectIndex);
    self.mediaMain.playMedia(item.url,item.fileName);
    evt.Skip();
  def itemSelected(self,evt):
    self.selectIndex = evt.GetIndex();
    evt.Skip();
  def openDir(self,evt):
    self.selectIndex = self.listct.GetFirstSelected();
    item = self.listDataLog.getItemByIndex(self.selectIndex);
    subprocess.Popen("explorer " + os.path.split(item.url)[0]);
  def clearAll(self,evt):
    self.listDataLog.clearAll();
    self.reflash(self.listDataLog);
    self.mediaMain.cellRemove('',True) 

SaveLog.py

import MediaItem;
class SaveLog():
  list = [];
  def addItem(self,it=MediaItem.MediaItem):
    if self.getItemByURL(it.url) == '' :
      it.index = len(self.list) + 1;
      self.list.append(it);
      return True;
    return False;
  def clearAll(self):
    self.list = [];
  def getItemByURL(self,url):
    for it in self.list:
      if it and it.url == url:
        return it;
    return '';
  def getItemByIndex(self,ind):
    return self.list[ind];
  def delItemByIndex(self,ind):
    it = self.getItemByIndex(ind);
    if it :
      url = it.url;
      self.list.remove(it);
      return url;
    return '';
  def reflashDataByIndex(self):
    i = 1;
    for it in self.list:
      if it:
        it.index = i;
        i = i+ 1;
  def havePreItem(self,ind):
    if ind-1>0:
      return True;
    return False;
  def haveNextItem(self,ind):
    if ind < len(self.list)-1:
      return True;
    return False;
  def getPreItem(self,ind):
    if ind>0:
      ind = ind -1;
      return self.list[ind];
    return '';
  def getNextItem(self,ind):
    if ind < len(self.list)-1:
      ind = ind + 1;
      return self.list[ind];
    return '';
  def getList(self):
    return self.list;
  def createLog(self):
    out = [];
    for it in self.list:
      if it:
        out.append(it.createLog())
    return out;
  def loadLog(self,s=''):
    ls = s.split("|");
    item = MediaItem.MediaItem();
    item.index = ls[0]
    item.fileName = ls[1]
    item.url = ls[2]
    item.length = ls[3];
    self.addItem(item); 

  def test(self):
    item = MediaItem.MediaItem();
    item.index = 0;
    item.fileName = '123'
    item.length = '123'
    item.url = '123'
    self.list.append(item)
    item2 = MediaItem.MediaItem();
    item2.index = 1;
    item2.fileName = '1234'
    item2.length = '1234'
    item2.url = '1234'
    self.list.append(item2)
    item3 = MediaItem.MediaItem();
    item3.index = 2;
    item3.fileName = '12345'
    item3.length = '12345'
    item3.url = '12345'
    self.list.append(item3)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Python实现的视频播放器功能完整示例
  • python使用Tkinter实现在线音乐播放器
  • python实现简易云音乐播放器
  • Python实现在线音乐播放器
  • python开发简易版在线音乐播放器
  • Python应用03 使用PyQT制作视频播放器实例
  • python3音乐播放器简单实现代码
(0)

相关推荐

  • python3音乐播放器简单实现代码

    本文实例为大家分享了python3音乐播放器的关键代码,供大家参考,具体内容如下 from tkinter import * from traceback import * from win32com.client import Dispatch import time,eyed3,threading name = [] def openfile(index = [1]): global total,name filenames = filedialog.askopenfilenames(tit

  • Python实现的视频播放器功能完整示例

    本文实例讲述了Python实现的视频播放器功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 # ---------------------------------------------------------------------------- # pyglet # Copyright (c) 2006-2008 Alex Holkner # All rights reserved. # # Redistribution and us

  • python使用Tkinter实现在线音乐播放器

    本文实例使用Tkinter实现在线音乐播放器的具体代码,供大家参考,具体内容如下 1.先使用Tkinter库写界面 2.写点击按钮触发的事件 (1).使用网易音乐的api,返回数据包装成json格式数据,解析数据 (2)涉及到多线程的问题未解决,一个软件默认打开一个线程,当播放歌曲时,显示界面就会卡掉,导致python停止工作 代码: #coding=utf-8 from Tkinter import * import tkMessageBox import urllib import json

  • Python实现在线音乐播放器

    最近这几天,学习了一下python,对于爬虫比较感兴趣,就做了一个简单的爬虫项目,使用Python的库Tkinsert做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过requests模块,get请求将数据获得,使用Json模块进行数据的解析,最终使用python的mp3play库进行对音乐的在线播放,以下是该程序的源码. #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2016-12-28 21

  • Python应用03 使用PyQT制作视频播放器实例

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放器,并借此来说明PyQT的基本用法.  视频播放器 先把已经完成的代码放出来.代码基于Python 3.5: import time import sys from PyQt4 import QtGui, QtCore from PyQt4.phonon import Phonon class Po

  • python开发简易版在线音乐播放器

    在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数据的解析,最后使用mp3play库对音乐进行在线播放,也可以同时下载mp3,开发环境:python2.7 , 附上源代码如下: # _*_ coding:utf-8 _*_ from Tkinter import * import tkMessageBox import urllib import

  • python实现简易云音乐播放器

    本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上找到. #coding=utf-8 from Tkinter import * import tkMessageBox import urllib import json import mp3play import time import threading from pinyin import PinYin i

  • python实现媒体播放器功能

    本文实例为大家分享了python实现媒体播放器功能的具体代码,供大家参考,具体内容如下 playMP3.py # -*- coding: utf-8 -*- import wx; import wx.media; import os; import SPrint; import mediaStateBar; import mediaList; import SaveLog; import MediaItem; woldcart = "media files|*.*|avi|*.avi|rmvb|

  • Android开发实现的简单媒体播放器功能示例

    本文实例讲述了Android开发实现的简单媒体播放器功能.分享给大家供大家参考,具体如下: 一.概述: 因为播放视频需要很大的内存,所以必须使用surfaceview , surfaceview 里实现了双缓冲的功能, 二.全部代码: /** * @描述 使用surfaceview 创建视频 * @项目名称 App_Basic * @包名 com.example.basic.media * @类名 MediaPlayerActivity * @author chenlin * @date 201

  • Python使用PyQt5/PySide2编写一个极简的音乐播放器功能

    疫情肆虐,憋在家实在无聊,索性写点东西,于是就有了这个极极极极极简的音乐播放器. 这个极极极简的音乐播放器类似于"阅后即焚"的软件,播放器可以随机播放歌曲,获取下一首歌曲,不能重新播放上一首歌曲,不能获取歌曲的名称和演唱者.听过的歌曲,就像过眼云烟,放完即散. 下面来看看如何用Python实现这个音乐播放器软件吧! 一.创建UI界面 首先,我们来创建这个播放器的UI界面.这个播放器一共有6个控件: 左上角的程序关闭按钮: 左侧的播放状态标签: 顶部的slogan; 播放/暂停按钮: 下

  • 使用Python的音乐播放器GUI的实现

    音乐播放器可让您快速轻松地管理和收听所有音乐文件.在本文中,我将带您了解如何使用 Python 创建音乐播放器 GUI. 如何使用 Python 创建音乐播放器 GUI? 第一步是选择一个 Python GUI 框架,这里我将使用两个主要的 GUI 库来使用 Python 创建音乐播放器: Pygame Tkinter Pygame 是一个用于创建视频游戏的 Python 库.要使用 Python 创建音乐播放器,我们将使用 Pygame 声音组件. Tkinter 是一个用于创建 GUI 应用

  • 基于Python实现音乐播放器的实现示例代码

    目录 一.环境设置 二.播放功能 三.停止功能 四.暂停与恢复 五.关闭 六.完整代码 七.改进 一.环境设置 第一步引入必须的各类包 import os import tkinter import tkinter.filedialog import random import time import threading import pygame 特别是pygame需要手动安装 pip install pygame 二.播放功能 首先选择音乐目录,然后创建播放现成,播放音乐. # 播放按钮 d

  • JavaScript实现自定义媒体播放器方法介绍

    使用<audio>和<video>元素的play()和pause()方法,可以手工控制媒体文件的播放.组合使用属性.事件和这两个方法,很容易创建一个自定义的媒体播放器,如下面的例子所示. <div class="mediaplayer"> <div class="video"> <video id="player" src="movie.mov" poster="

  • Android仿音乐播放器功能

    本文实例为大家分享了Android仿音乐播放器功能的具体代码,供大家参考,具体内容如下 读取本地音乐文件 源代码: import android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.

  • 基于vue-element组件实现音乐播放器功能

    最近在写一个基于 github-page 和 gist 的博客, 想加个音乐播放器, 做了一个早上, 发出来分享一下 演示地址 https://github-laziji.github.io 效果 使用到的组件 element组件 布局 Layout 按钮 Button 滑块 Slider 进度条 Progress 弹出框 Popover html5组件 audio 实现代码 更详细的实现可以看 https://github.com/GitHub-Laziji/vblog <template>

  • Java实现的简单音乐播放器功能示例

    本文实例讲述了Java实现的简单音乐播放器功能.分享给大家供大家参考,具体如下: 应用名称:Java简单的音乐播放器 用到的知识:Java GUI编程,线程,IO 开发环境:win8+eclipse+jdk1.8 功能说明:可以选择内置的音乐文件播放,循环播放,停止.PS:这个播放器只能播放.au .aiff .wav .midi .rfm格式的音频. 效果图: 源代码: import java.applet.AudioClip; import java.awt.*; import java.n

随机推荐