使用 python ffmpeg 批量检查 音频文件 是否损坏或不完整
批量测试音频文件是否损坏
·
自用工具,检查下载的音乐是否有损坏 或 下载不完整
使用方法,把 in_dir = r’D:\158首无损珍藏版’ 改成你自己的音乐文件夹路径
如果发现文件有损坏,则会在命令行打印错误文件的路径
注意,要求 ffmpeg 命令可以直接在命令行调用
实现原理,使用 ffmpeg 解码时,会在 stderr 打印错误信息的特性,检测 stderr 里面是否有失败相关的关键字,从而判断媒体文件是否损坏
import os
from glob import glob
import subprocess
import locale
in_dir = r'D:\158首无损珍藏版'
audio_exts = ('.wav', '.flac', '.mp3', '.wma', '.ogg', '.m4a', '.ape', '.opus', '.aac', '.mka')
def is_bad_file(file):
p = subprocess.Popen(f'ffmpeg -i "{file}" -v error -f null -', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
err_text = p.stderr.read().decode(locale.getpreferredencoding()).lower()
is_bad = False
for bad_text in ['error', 'failed', 'illegal']:
if bad_text in err_text:
is_bad = True
return is_bad
for file in glob(f'{in_dir}/**/*.*', recursive=True):
ext = os.path.splitext(file)[1].lower()
if ext not in audio_exts:
continue
if is_bad_file(file):
print(f'Found bad audio. {file}')
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)