Files
go-mp4tag/README.md
2023-12-16 22:36:48 +00:00

1.3 KiB

go-mp4tag

MP4 tag library written in Go.

Setup

go get github.com/Sorrow446/go-mp4tag

Usage Examples

import "github.com/Sorrow446/go-mp4tag"

Opening is omitted from the examples.

mp4, err := mp4tag.Open("1.m4a")
if err != nil {
	panic(err)
}
defer mp4.Close()

Read album title:

tags, err := mp4.Read()
if err != nil {
	panic(err)
}
fmt.Println(tags.Album)

Extract all covers:

tags, err := mp4.Read()
if err != nil {
	panic(err)
}

for idx, pic := range tags.Pictures {
	fname := fmt.Sprintf("out_%03d.jpg", idx+1)
	err = os.WriteFile(fname, pic.Data, 0666)
	if err != nil {
		panic(err)
	}
}

Write two covers:

picOneData, err := os.ReadFile("1.jpg")
if err != nil {
	panic(err)
}

picTwoData, err := os.ReadFile("2.jpg")
if err != nil {
	panic(err)
}

picOne := &mp4tag.MP4Picture{Data: picOneData}
picTwo := &mp4tag.MP4Picture{Data: picTwoData}

tags := &mp4tag.MP4Tags{
	Pictures: []*mp4tag.MP4Picture{picOne, picTwo},
}

err = mp4.Write(tags, []string{})
if err != nil {
	panic(err)
}

Write track number and total:

tags := &mp4tag.MP4Tags{
	TrackNumber: 1,
	TrackTotal: 10,
}

err = mp4.Write(tags, []string{})
if err != nil {
	panic(err)
}

Delete comment:

err = mp4.Write(&mp4tag.MP4Tags{}, []string{"comment"})
if err != nil {
	panic(err)
}