golang 将mp3 / flac文件转换为aac,递归读取给定的基本目录,在工作池中使用3个goroutine。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 将mp3 / flac文件转换为aac,递归读取给定的基本目录,在工作池中使用3个goroutine。相关的知识,希望对你有一定的参考价值。

package main

import (
	"bytes"
	"fmt"
	"log"
	"os"
	"os/exec"
	"path/filepath"
	"strings"
)

func main() {
	if len(os.Args) == 1 {
		fmt.Println("Please specify a base directory!")
		os.Exit(1)
	}

	fileList := []string{}
	err := filepath.Walk(os.Args[1], func(path string, f os.FileInfo, err error) error {
		switch filepath.Ext(path) {
		case
			".mp3",
			".flac":
			fileList = append(fileList, path)
		}
		return nil
	})
	if err != nil {
		fmt.Println(err)
	}

	jobLength := len(fileList)

	jobs := make(chan string, jobLength)
	results := make(chan string, jobLength)

	for i := 0; i <= 2; i++ {
		go worker(jobs, results)
	}

	for j := 0; j < jobLength; j++ {
		jobs <- fileList[j]
	}
	close(jobs)

	for k := 0; k < jobLength; k++ {
		<-results
	}
}

func worker(jobs <-chan string, results chan<- string) {
	for j := range jobs {
		results <- convertToAac(j)
	}
}

func convertToAac(filePath string) string {
	fmt.Println("Converting: ", filePath)

	destName := strings.TrimSuffix(filePath, ".flac")
	destName = strings.TrimSuffix(destName, ".mp3")
	destName = destName + ".m4a"

	// no text output
	// always override file
	// no video channel
	// use aac with CBR 256k quality
	cmd := exec.Command("ffmpeg", "-v", "0", "-y", "-i", filePath, "-vn", "-c:a", "aac", "-b:a", "256k", destName)
	var out bytes.Buffer
	cmd.Stdout = &out
	err := cmd.Run()
	if err != nil {
		log.Fatal("ffmpeg command exited: ", err)
	}

	fmt.Println("Done converting: ", filePath)

	return out.String()
}

AudFree Auditior for Mac如何将 M4P 音乐和 AA/AAX 有声读物转换为 MP3 文件?

AudFree Auditior 是一款功能强大的音频转换软件,可以轻松地将音频转换为 MP3、FLAC、AAC 等。那么如何使用AudFree Auditior for Mac将 M4P 音乐和 AA/AAX 有声读物转换为 MP3 文件?这里准备了教程,赶紧看看吧!

AudFree Auditior for Mac(Mac音频转换器)支持m1

第 1 步:在Mac 上启动AudFree Auditior

请确保您已经在Mac 上安装了 AudFree Auditior。安装后,您可以单击软件图标将其打开并自动启动。

注意:对于 Mac 用户,当您启动 AudFree Auditior for Mac 时,会在您使用 macOS 10.15 的同时打开音乐应用程序。

第 2 步:导入 M4P 歌曲或 AA/AAX 有声读物

启动 AudFree Auditior 后,该应用程序将同时加载。之后,您可以在电脑硬盘上找到歌曲、有声读物等音频文件,然后将需要转换的曲目拖到AudFree Auditior for Mac的转换窗口中。如果您愿意,

您还可以使用“添加”按钮导入音频。要添加音频文件,只需单击第一个按钮。否则,您应该单击第二个按钮添加常用音频。由于它支持批量转换,您可以添加多个文件进行一次转换。

注意:如果您尝试转换 M4P 歌曲,请确保您已经使用正确的帐户授权您的计算机,并且音频可以正常播放。否则将无法正常工作。

第 3 步:自定义输出格式和其他首选项

将文件添加到 AudFree Auditior 后,只需单击“编辑”图标或“格式”按钮即可选择您需要将音频转换为的输出格式,包括 MP3、M4A、AAC、FLAC、WAV 和 M4B。您还可以选择定义音频属性,例如编解码器、通道、采样率、比特率等。单击“效果”图标,您将被定向到可以编辑 ID3 标签的窗口音乐以及按章节或固定时间间隔将大型有声读物分成小片段。

提示:如果您正在转换 AA 或 AAX 有声读物,您可以通过选中“保持无损质量”选项以无损质量保存输出音频。

第 4 步:开始转换音乐、有声读物等

现在单击“转换”按钮,让 Mac 版 AudFree Auditior 开始将您的歌曲、有声读物或其他来源转换为您设置之前的 MP3、FLAC、WAV、AAC、M4A 或 M4B。

完成后,您可以从历史文件夹中获取转换后的歌曲或有声读物,以便您可以自由地将它们传输到您喜欢的任何地方。

小编点评

以上就是关于“AudFree Auditior for Mac如何将 M4P 音乐和 AA/AAX 有声读物转换为 MP3 文件?”的全部内容了,希望能对你有所帮助。

以上是关于golang 将mp3 / flac文件转换为aac,递归读取给定的基本目录,在工作池中使用3个goroutine。的主要内容,如果未能解决你的问题,请参考以下文章

将.flac文件转换为.mp3

AudFree Auditior for Mac如何将 M4P 音乐和 AA/AAX 有声读物转换为 MP3 文件?

使用 ffmpeg 将 .flac 转换为 .mp3,保留所有元数据

如何使用 PHP 将 .flac 转换为 .mp3 [关闭]

在MacOS上用ffmpeg批量转换flac为mp3

使用python将任何音频文件转换为mp3