PojavLauncher_iOS 源码编译打包实战:3 个 Makefile 变量决定产物形态
2026/10/20 13:34:30
如果你的python版本不高可以用 ->之前的
ffmpeg 还是要去官网下载下来装一下
那个pydub 不用管了。
下载这个
pipinstallffmpeg-python代码正文:
1.music_main.py
frommusic_changeimportmusic_changedefmain():# 配置路径# mp3_source: FLAC文件输出目录# mp4_source: MP4视频文件所在目录mp3_source="C:/Users/pc/Desktop/新建文件夹/music/"mp4_source="C:/Users/pc/Desktop/新建文件夹/"# 确保路径以斜杠结尾ifnotmp3_source.endswith('/'):mp3_source+='/'ifnotmp4_source.endswith('/'):mp4_source+='/'print(f"输出目录:{mp3_source}")print(f"输入目录:{mp4_source}")print("-"*50)# 执行转换music_change(mp3_source,mp4_source)print("-"*50)print("所有转换任务完成!")if__name__=="__main__":main()2.music_change.py
importosimportsubprocessdefmusic_change(mp3_source,mp4_source):"""批量将MP4文件转换为FLAC音频文件"""# 确保输出目录存在ifnotos.path.exists(mp3_source):os.makedirs(mp3_source)print(f"创建输出目录:{mp3_source}")# 获取所有MP4文件file_names=list_files_in_directory(mp4_source)ifnotfile_names:print("未找到任何MP4文件")returnprint(f"找到{len(file_names)}个文件待处理")print("-"*50)success_count=0fail_count=0forfile_path_nameinfile_names:base_name=os.path.basename(file_path_name)file_name,file_ext=os.path.splitext(base_name)# 只处理MP4文件iffile_ext.lower()!='.mp4':print(f"跳过非MP4文件:{base_name}")continueprint(f"正在处理:{base_name}")ifmusic(file_name,mp3_source,file_path_name):success_count+=1else:fail_count+=1print("-"*50)print(f"转换完成!成功:{success_count}个,失败:{fail_count}个")defmusic(name,mp3_source,mp4_file):"""将单个MP4文件转换为FLAC音频文件"""flac_name=name+".flac"flac_file=os.path.join(mp3_source,flac_name)# 检查输入文件是否存在ifnotos.path.exists(mp4_file):print(f"✗ 错误:输入文件不存在 -{mp4_file}")returnFalse# 使用ffmpeg直接转换MP4到FLACcmd=['ffmpeg','-i',mp4_file,# 输入文件'-vn',# 不处理视频流'-acodec','flac',# 使用FLAC编码'-y',# 覆盖已存在的文件'-loglevel','error',# 只显示错误信息flac_file# 输出文件]try:# 执行ffmpeg命令,不捕获输出避免编码问题# 使用 DEVNULL 丢弃输出withopen(os.devnull,'wb')asdevnull:result=subprocess.run(cmd,stdout=devnull,stderr=devnull,timeout=300# 5分钟超时)ifresult.returncode==0:print(f"✓ 转换成功:{flac_name}")returnTrueelse:print(f"✗ 转换失败:{flac_name}(错误代码:{result.returncode})")returnFalseexceptsubprocess.TimeoutExpired:print(f"✗ 转换超时:{flac_name}")returnFalseexceptFileNotFoundError:print("✗ 错误:未找到ffmpeg,请先安装ffmpeg并添加到系统PATH")print("下载地址: https://ffmpeg.org/download.html")returnFalseexceptExceptionase:print(f"✗ 转换出错:{str(e)}")returnFalsedeflist_files_in_directory(directory_path):"""列出指定目录下的所有MP4文件"""ifnotos.path.isdir(directory_path):print(f"错误:'{directory_path}'不是一个有效的目录。")return[]file_names=[]try:entries=os.listdir(directory_path)forentryinentries:full_path=os.path.join(directory_path,entry)ifos.path.isfile(full_path)andentry.lower().endswith('.mp4'):file_names.append(full_path)exceptExceptionase:print(f"读取目录出错:{str(e)}")returnfile_names