Audio Player Demo & Source Code – Fyne Golang Gui tutorial 67
Audio Player & Demo Source Code – Fyne Golang Gui tutorial 67
#Source Code#
<div>
<div>package main</div>
<div>import (</div>
<div> "fmt"</div>
<div> "os"</div>
<div> "time"</div>
<div> "fyne.io/fyne/v2"</div>
<div> "fyne.io/fyne/v2/app"</div>
<div> "fyne.io/fyne/v2/canvas"</div>
<div> "fyne.io/fyne/v2/container"</div>
<div> "fyne.io/fyne/v2/dialog"</div>
<div> "fyne.io/fyne/v2/storage"</div>
<div> "fyne.io/fyne/v2/theme"</div>
<div> "fyne.io/fyne/v2/widget"</div>
<div> "github.com/faiface/beep"</div>
<div> "github.com/faiface/beep/mp3"</div>
<div> "github.com/faiface/beep/speaker"</div>
<div>)</div>
<div>var f *os.File</div>
<div>var format beep.Format</div>
<div>var streamer beep.StreamSeekCloser</div>
<div>var pause bool = false</div>
<div>func main() {</div>
<div> go func(msg string) {</div>
<div> fmt.Println(msg)</div>
<div> if streamer == nil {</div>
<div> } else {</div>
<div> //slider.Value = float64(streamer.Position())</div>
<div> fmt.Println(fmt.Sprint(streamer.Len()))</div>
<div> }</div>
<div> }("going")</div>
<div> time.Sleep(time.Second)</div>
<div> a := app.New()</div>
<div> w := a.NewWindow("audio player...")</div>
<div> w.Resize(fyne.NewSize(400, 400))</div>
<div> logo := canvas.NewImageFromFile("logo.png")</div>
<div> logo.FillMode = canvas.ImageFillOriginal</div>
<div> toolbar := widget.NewToolbar(</div>
<div> widget.NewToolbarSpacer(),</div>
<div> widget.NewToolbarAction(theme.MediaPlayIcon(), func() {</div>
<div> // f, _ = os.Open("hen.mp3")</div>
<div> speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))</div>
<div> speaker.Play(streamer)</div>
<div> }),</div>
<div> widget.NewToolbarAction(theme.MediaPauseIcon(), func() {</div>
<div> if !pause {</div>
<div> pause = true</div>
<div> speaker.Lock()</div>
<div> } else if pause {</div>
<div> pause = false</div>
<div> speaker.Unlock()</div>
<div> }</div>
<div> }),</div>
<div> widget.NewToolbarAction(theme.MediaStopIcon(), func() {</div>
<div> speaker.Clear()</div>
<div> // speaker.Close()</div>
<div> }),</div>
<div> widget.NewToolbarSpacer(),</div>
<div> )</div>
<div> label := widget.NewLabel("Audio MP3..")</div>
<div> label.Alignment = fyne.TextAlignCenter</div>
<div> label2 := widget.NewLabel("Play MP3..")</div>
<div> label2.Alignment = fyne.TextAlignCenter</div>
<div> browse_files := widget.NewButton("Browse...", func() {</div>
<div> fd := dialog.NewFileOpen(func(uc fyne.URIReadCloser, _ error) {</div>
<div> streamer, format, _ = mp3.Decode(uc)</div>
<div> label2.Text = uc.URI().Name()</div>
<div> label2.Refresh()</div>
<div> }, w)</div>
<div> fd.Show()</div>
<div> fd.SetFilter(storage.NewExtensionFileFilter([]string{".mp3"}))</div>
<div> })</div>
<div> // slider := widget.NewSlider(0, 100)</div>
<div> c := container.NewVBox(label, browse_files, label2, toolbar)</div>
<div> w.SetContent(</div>
<div> container.NewBorder(logo, nil, nil, nil, c),</div>
<div> )</div>
<div> w.ShowAndRun()</div>
<div>}</div>
</div>
[easy_media_download url=”http://blogvali.com/wp-content/uploads/fyne-golang-downloads/main67.go” text=”Download Code” color=”red_darker”]
Fyne Golang GUI Course
Improved fyne documentation with videos.
Fyne Audio Player DEMO & Source is another addition in our fyne examples series.
fyne widgets taught with the help of interactive videos.