Как определить состояние поврежденного файла для аудио файла в Python - PullRequest
0 голосов
/ 26 февраля 2019

Я использую ноутбук Python 3.6, Jupyter, подключив его к удаленной машине.У меня есть большой набор файлов mp3.Я использую FFmpeg (версия 2.8.14-0ubuntu0.16.04.1.) Для преобразования mp3 файлов в формат wav.

Мой код, приведенный ниже, перебирает список путей к файлам, и если файл представляет собой mp3, он преобразует его в формат wav и удаляет файл mp3.Код работает, но для нескольких файлов он останавливается и выдает ошибку.Я открыл эти файлы и увидел, что они не имеют длительности, и каждый из них имеет размер 600, глядя на столбец размера папки терминала, но это может быть совпадением.Ошибка file not found for 'temp_name.wav'.

Я вижу, что эти поврежденные файлы не могут быть преобразованы в WAV.Когда я удаляю их вручную и снова запускаю код, это работает.Но у меня большие наборы данных и я не могу знать, какие файлы повреждены заранее.Есть ли способ сделать код (до преобразования файла в wav), если файл поврежден, он удаляет его и переходит к следующему файлу.Я просто не знаю, как определить состояние поврежденного файла или если файл не может быть преобразован в WAV.Заранее спасибо

# npaths is the list of full file paths 
for fpath in npaths:
    if (fpath.endswith(".mp3")):
        cdir=os.path.dirname(fpath)      # extract the directory of file
        os.chdir(cdir)        # change the directory to cdir
        filename=os.path.basename(fpath)   # extract the filename from the path
        os.system("ffmpeg -i {0} temp_name.wav".format(filename))
        ofnamepath=os.path.splitext(fpath)[0]    # filename without extension
        temp_name=os.path.join(cdir, "temp_name.wav")
        new_name = os.path.join(ofnamepath+'.wav')
        os.rename(temp_name,new_name) # use original filename with wav ext
        old_file = os.path.join(ofnamepath+'.mp3')    # find and delete the mp3
        os.remove(old_file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...