admin管理员组

文章数量:1583559

bat脚本处理优势就是处理文件占用空间小(1kb左右)、完全免费、简易、速度也挺快。

下载ffmpeg.exe    ffmpeg.exe下载网址

!所有的前提!(ffmpeg.exe要么将其所在目录添加到环境变量,要么放在新生成的bat文件同一目录下)

一、bat指令实现(ANSI编码格式)

chcp 65001

@echo off
setlocal enabledelayedexpansion

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "year=!dt:~0,4!"
set "month=!dt:~4,2!"
set "day=!dt:~6,2!"

set output_folder=%YEAR%_%MONTH%_%DAY%
if not exist "!output_folder!" mkdir "!output_folder!"

for %%I in (*.m4a) do (
    set "output_file=!output_folder!\%%~nI.mp3"
    ffmpeg -i "%%I" -acodec libmp3lame -q:a 0 "!output_file!"
)

for %%I in (*.flac *.mp4) do (
    set "output_file=!output_folder!\%%~nI.mp3"
    ffmpeg -i "%%I" -q:a 0 -map a "!output_file!"
)

endlocal

可以先新建个txt,复制以上代码,然后左上角另存为bat文件。双击即可转换成功。

参数说明:

  • -i input_file: 指定输入文件。

  • -acodec libmp3lame: 指定音频编解码器为 libmp3lame。

  • -vn: 禁用视频流,仅保留音频流。

  • -aq 0: 设置音频质量,0 表示最好的质量(可根据需要调整,范围一般是0-9,0 最好,9 最差)。觉得文件太大的话建议设置为-aq 2

  • output.mp3: 指定输出文件。

效果图:


二、python结合ffmpeg实现

使用方法(说明在后面):

1.  程序下载:syfMusicConvert1.1.exe 

2. 下载ffmpeg.exe    ffmpeg.exe下载网址

3. 程序使用方法:

1、运行main.exe可执行程序
2、输入待转换音乐所在的文件夹
3、到上面输入的文件夹中双击运行新生成的bat文件
4、你可以在bat文件所在的文件夹中找到mp3目录,里面就是生成的mp3文件了

**当然,如果只想着转换一两首就可以不用大费周章下载,下面是可以直接使用的ffmpeg指令:**

m4a转mp3:ffmpeg -i input.m4a -acodec libmp3lame -q:a 2 output.mp3

flac转mp3:ffmpeg -i input.flac -q:a 0 -map a output.mp3

mp4转mp3:ffmpeg -i input.mp4 -q:a 0 -map a output.mp3

详情:见我的Github网址(方便下载exe可执行文件,无需再编译就可以使用。有具体的README说明) 

YangFengSu/musictool.iohttps://githubfast/YangFengSu/musictool.io当然,使用ffmpeg你还需要下载ffmpeg.exe文件

ffmpeg下载网址:https://jeremylee.sh/bins/

(ffmpeg官网)https://ffmpeg/

源码:

import os


def my_input():
    return input('\n---\nPlease enter the destination path.\n请输入待转换的歌曲文件的路径,直接点一下路径栏,把地址复制过来就可以\n地址示例:E:\\最近常用\\temp\\m4a文件夹')


if __name__ == '__main__':
    path = my_input()
    while 1:
        try:
            last_list = []
            for i in os.listdir(path):
                try:
                    if i.split('.')[-1] == 'm4a':
                        last_list.append('ffmpeg -i {} -acodec libmp3lame -q:a 2 \"mp3\\{}.mp3\"'.format(i, i.split('.')[0]))
                    elif i.split('.')[-1] == 'flac' or i.split('.')[-1] == 'mp4':
                        last_list.append('ffmpeg -i \"{}\" -q:a 0 -map a \"mp3\\{}.mp3\"'.format(i, i.split('.')[0]))
                    else:
                        continue  # 当然可以添加其他文件类型,这里暂时不添加,因为主流就是m4a和flac,补充了mp4
                except IndexError:
                    continue  # 可能不可分,比如文件夹,那么不管它

            if len(last_list) == 0:
                input("There is no song. Enter any key to continue\nfail.\n没有歌曲\n按任意键继续")
                path = my_input()
                continue

            save_file_path = path + '\\{}2mp3.bat'.format('music')
            with open(save_file_path, 'w', encoding='ANSI') as f:
                if not os.path.exists(path + '\\mp3'):
                    os.mkdir(path + '\\mp3')
                for i in last_list:
                    print(i)
                    f.write(i)
                    f.write('\n\n')
                f.close()
            break_num = input("\nsucceed.\tEnter any key (not null) to continue, or press enter to exit\n请到m4a(或者flac)文件夹中运行bat脚本即可!\n输入任意【非空值】继续,直接回车则退出")
            if break_num == '':
                break
            else:
                path = my_input()
                continue

        except FileNotFoundError:
            print('-----\nerror folder.\n系统找不到指定的路径,请检查你输入的路径是否有误\n')
            print('请输入待转换的歌曲文件的路径,直接点一下路径栏,把地址复制过来就可以\n地址示例:E:\\最近常用\\temp\\m4a文件夹')
            path = input()

本文标签: 批处理M4Aflacffmpeg