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.com/YangFengSu/musictool.io当然,使用ffmpeg你还需要下载ffmpeg.exe文件
ffmpeg下载网址:https://jeremylee.sh/bins/
(ffmpeg官网)https://ffmpeg.org/
源码:
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()