Mit Python ein neues CMD Fenster mit darin enthaltenen Befehlen starten (ffmpeg)?
Ich habe ein Python Programm geschrieben, das eigentlich ein Video herunterladen sollte. Mit "ffmpeg" sollte das ganze heruntergeladen werden. Um eine neues "CMD" Fenster zu öffnen nutze ich "subprocess.Popen".
Das Problem ist das ich im neuen CMD Fenster, das geöffnet wird diese Fehlermeldung: "No such file or directory" bekomme. Davor steht noch der Link des Videos.
z.B. https//.... "No such file or directory"
Hier ist der Code:
import os
import subprocess
name = input('Name: ')
name = name.replace(' ', '-')
path = os.path.join('Videos', name)
path_to_ffmpeg = os.path.join('C:' + '/', 'ffmpeg', 'ffmpeg.exe')
if not os.path.exists(path):
os.makedirs(path)
def download(link):
cmd = f'{path_to_ffmpeg} -i "{link}" -c copy -bsf:a aac_adtstoasc "{name}.mp4"'
subprocess.Popen(['cmd.exe', '/k', f'cd {path} && {cmd}'], creationflags=subprocess.CREATE_NEW_CONSOLE)
link = input("Link: ")
download(link)
Wenn ich den String "cmd" mit print() ausgebe und manuell den darin enthaltenen Befehl kopiere und das ganze in "CMD" ausführe, dann funktioniert alles. Darum weiß ich nicht wo der Fehler liegt.
1 Antwort
join('C:' + '/',
Cmd.exe kann bis heute nicht mit '/' als Trenner umgehen. Als Ausgabe kommt aber C:\/\ffmpeg\ffmpeg.exe ...
Das dürfte auch mit manuellem Kopieren nicht funktionieren.
Wieso startest Du ffmpeg nicht direkt? Dann sparst Du Dir den Ärger mit 40 Jahre alter Software.
Fehlt da nicht ein Doppelpunkt? https://...
Allerdings bezweifle ich, dass ffmpeg das https-Protokoll überhaupt versteht. Es ist ja ein Audio-Konvertierer und kein Webcrawler. Die Manpage redet von „regular files, pipes, network streams, grabbing devices, etc.“.
Wenn Du eine Datei aus dem Internet verarbeiten willst, musst Du sie zuerst herunterladen (wget {link} -O - | ffmpeg ... müsste tun)
Danke, für deine Hilfe. Ich habe das Problem jetzt gelöst.
Als Ausgabe kommt bei mir "C:/ffmpeg\ffmpeg.exe"
Ich habe auch versucht mit ffmpeg direkt zu starten. Der Fehler bleibt aber immer derselbe (https//.... No such file or directory).