Я пытаюсь конвертировать mp3 файлы в m4a. Файлы находятся в разных папках, таких как MainFolder (folder1, folder2, ...)
Это уже работает, но очень медленно, потому что конвертирует файл за файлом.
import os
import sys
path = "/Users/flo/Desktop/test"
for root, dir, files in os.walk(path):
dir.sort()
files.sort()
for file in files:
if file.find('.mp3') != -1:
os.system('ffmpeg -i ' +'"' +root +'/' +file +'" ' +'-c:v copy -c:a libfdk_aac -b:a 300k ' +'"' +root +'/' +file[:-4] +'.m4b' +'"')
Теперь я бы хотел бы реализовать многозадачность.
import os
import sys
import threading
import queue
path = "/Users/flo/Desktop/test"
def convert(file):
if file.find('.mp3') != -1:
os.system('ffmpeg -i ' +'"' +root +'/' +file +'" ' +'-c:v copy -c:a libfdk_aac -b:a 300k ' +'"' +root +'/' +file[:-4] +'.m4b' +'"')
for root, dir, files in os.walk(path):
dir.sort()
files.sort()
q = queue.Queue
threads = [threading.Thread(target=convert(file)) for file in files]
for t in threads:
t.start()
for file in files:
q.put(file)
for file in files:
q.put('stop')
q.join()
for t in threads:
t.join()
Но я получил сообщение об ошибке:
File "/var/folders/r6/z5f_jcf139b8fh2n8m4lznlm0000gn/T/atom_script_tempfiles/30127c90-6b13-11ea-af8a-432a34b059ac", line 31
threads = [threading.Thread(target=convert(file)) for file in files]
^
IndentationError: unexpected indent
[Finished in 0.028s]