xxjwxc / gomp3

mp3 decode mp3编解码器 golang版本 (pcm wav mp3)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gomp3

Go Reference Builder Decode mp3 base on https://github.com/xxjwxc/gomp3

Installation

  1. The first need Go installed (version 1.15+ is required), then you can use the below Go command to install gomp3.
$ go get -u github.com/xxjwxc/gomp3
  1. Import it in your code:
import "github.com/xxjwxc/gomp3"

Examples are here

Decode the whole mp3 and play.
package main

import (
	"io/ioutil"
	"log"

	"github.com/hajimehoshi/oto"
	"github.com/xxjwxc/gomp3"
	"github.com/xxjwxc/public/mylog"
)

func main() {
	var err error
	var file []byte
	if file, err = ioutil.ReadFile("./song.mp3"); err != nil {
		mylog.Error(err)
	}
	dec, err := gomp3.NewMp3(file)
	if err != nil {
		mylog.Error(err)
	}
	ioutil.WriteFile("song.pcm", dec.PcmData, 0644) // topcm

	data, _ := dec.ToWav(1)
	ioutil.WriteFile("song.wav", data, 0644) // towav

	// play
	var context *oto.Context
	if context, err = oto.NewContext(dec.SampleRate, dec.Channels, 2, 1024); err != nil {
		log.Fatal(err)
	}

	var player = context.NewPlayer()
	player.Write(dec.PcmData)

	if err = player.Close(); err != nil {
		log.Fatal(err)
	}

	// pcm to mp3
	var err error
	var file []byte
	if file, err = ioutil.ReadFile("./song.pcm"); err != nil {
		t.Error(err)
	}

	out, _ := PcmToMp3(file, 1, 16000, 9)
	ioutil.WriteFile("out.mp3", out, 0644)
}

About

mp3 decode mp3编解码器 golang版本 (pcm wav mp3)


Languages

Language:C 75.5%Language:Go 24.5%Language:Makefile 0.1%