import subprocess,os
from multiprocessing import Process
#colocar os MP3 em uma pasta exclusiva mp3, senao ele add qq arquivo
MP3 = os.listdir("/home/govinda/Desktop/musicas/mp3") #lista de MP3
os.chdir("/home/govinda/Desktop/musicas/mp3") #diretorio onde estao as MP3
def ConverteMusica(origem,destino):
input_file_fmt = origem
output_file_fmt = destino
subprocess.call(['ffmpeg',
'-i',
input_file_fmt,
'-acodec',
'libmp3lame',
'-ac',
'2',
'-ab',
'16k',
'-ar',
'44100',
output_file_fmt])
if __name__ == '__main__': #deve usar isso com o multiprocessing!
for title in MP3:
MeuConversor = Process(target=ConverteMusica,args=(title,title.split(".")[0] + "_" + ".mp3",))
MeuConversor.start()
MeuConversor.join()
Se eu tentar rodar o programa acima no IDLE, fica em looping.
Ao rodar pela linha de comando do Ubuntu, usando python3 subprocessosComMultiprocessing.py, recebo:
TypeError: ConverteMusica() takes 1 positional argument but 7 were given
Agora, fiquei perdido!