Hallo Leute,
habe heute mithilfe von chatGPT ein Programm geschrieben mit dem ich M4A Dateien in MP3 Dateien konvertieren kann.
Jedoch habe ich das Problem das mein Python nicht mein ffmpeg nicht findet obwohl es in meinem Systempfad ist.
C:\Users\Armin\PycharmProjects\Test\venv\Lib\site-packages\pydub\utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Traceback (most recent call last):
File "C:\Users\Armin\PycharmProjects\Test\App.py", line 8, in <module>
subprocess.call([ffmpeg_path, '-version'])
File "C:\Users\Armin\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 389, in call
with Popen(*popenargs, **kwargs) as p:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Armin\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 1026, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\Armin\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 1538, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [WinError 5] Zugriff verweigert
dies wäre der genaue Fehlercode den ich bekomme.
Der Ordner in dem das ffmpeg ist hat vollzugriff und ich starte das Programm als Admin ich hoffe man kann mir hier helfen weil ChatGPT konnte es nicht.
Ich habe übrigens keinen Programmierhintergrund und keine Vorkenntnisse, dies ist das erste mal das ich etwas programmiere.
Vielen Dank für die Hilfe
Probleme mit ffmpeg
Hier wäre der Code falls jemand Fragt
Code: Alles auswählen
import os
from PyQt5.QtWidgets import QMainWindow, QLabel, QPushButton, QFileDialog, QListWidget, QProgressBar, QVBoxLayout, QWidget, QApplication
from PyQt5.QtCore import QThread, pyqtSignal
from pydub import AudioSegment
import subprocess
ffmpeg_path = r"C:\Users\Armin\Desktop\Neuer Ordner\ffmpeg-6.0-essentials_build\bin"
subprocess.call([ffmpeg_path, '-version'])
class ConverterThread(QThread):
update_signal = pyqtSignal(str)
def __init__(self, input_files, output_folder):
super().__init__()
self.input_files = input_files
self.output_folder = output_folder
def run(self):
for input_file in self.input_files:
try:
audio = AudioSegment.from_file(input_file, format="m4a")
output_file = os.path.join(self.output_folder, os.path.basename(os.path.splitext(input_file)[0] + '.mp3'))
audio.export(output_file, format="mp3")
self.update_signal.emit(f"Erfolgreich von {input_file} zu {output_file} konvertiert.")
except Exception as e:
self.update_signal.emit(f"Fehler bei der Konvertierung: {e}")
class M4AtoMP3Converter(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("M4A to MP3 Converter")
self.setGeometry(100, 100, 400, 400)
self.central_widget = QWidget(self)
self.setCentralWidget(self.central_widget)
self.layout = QVBoxLayout()
self.central_widget.setLayout(self.layout)
self.label = QLabel("Wählen Sie M4A-Dateien aus, um sie in MP3 zu konvertieren.")
self.layout.addWidget(self.label)
self.progress_bar = QProgressBar()
self.layout.addWidget(self.progress_bar)
self.browse_button = QPushButton("Durchsuchen")
self.layout.addWidget(self.browse_button)
self.browse_button.clicked.connect(self.browse_files)
self.output_folder = ""
self.output_folder_button = QPushButton("Zielordner auswählen")
self.layout.addWidget(self.output_folder_button)
self.output_folder_button.clicked.connect(self.select_output_folder)
self.output_folder_label = QLabel("Zielordner:")
self.layout.addWidget(self.output_folder_label)
self.file_list = QListWidget()
self.layout.addWidget(self.file_list)
self.convert_button = QPushButton("Konvertieren")
self.layout.addWidget(self.convert_button)
self.convert_button.clicked.connect(self.start_conversion)
self.setAcceptDrops(True)
self.input_files = []
self.converter_thread = None
def browse_files(self):
file_dialog = QFileDialog()
file_dialog.setFileMode(QFileDialog.ExistingFiles)
file_dialog.setNameFilter("M4A-Dateien (*.m4a)")
if file_dialog.exec_():
self.input_files = file_dialog.selectedFiles()
self.update_file_list()
def select_output_folder(self):
folder_dialog = QFileDialog()
folder_dialog.setFileMode(QFileDialog.Directory)
folder_dialog.setOption(QFileDialog.ShowDirsOnly)
if folder_dialog.exec_():
self.output_folder = folder_dialog.selectedFiles()[0]
self.output_folder_label.setText(f"Zielordner: {self.output_folder}")
def update_file_list(self):
self.file_list.clear()
for file in self.input_files:
self.file_list.addItem(file)
def start_conversion(self):
if not self.input_files or not self.output_folder:
return
self.convert_button.setDisabled(True) # Deaktivieren Sie den Konvertieren-Button während der Konvertierung.
self.converter_thread = ConverterThread(self.input_files, self.output_folder)
self.converter_thread.update_signal.connect(self.update_progress)
self.converter_thread.finished.connect(self.enable_convert_button)
self.converter_thread.start()
def update_progress(self, message):
self.label.setText(message)
def enable_convert_button(self):
self.convert_button.setDisabled(False) # Aktivieren Sie den Konvertieren-Button nach Abschluss der Konvertierung.
if __name__ == "__main__":
app = QApplication([])
window = M4AtoMP3Converter()
window.show()
app.exec_()
Der Pfad ist ja auch Quatsch. Das ist der Pfad in dem die ffmpeg.exe drin liegt. Den kann man nicht aufrufen. Man kann den bestenfalls zum Systempfad hinzufügen, dann sollte die Warnung weggehen. Und der subprocess Aufruf (wofür auch immer der gut sein soll) muss das ffmpeg.exe beinhalten.
Der Rest ist auch kaputt, es wird ein Signal aus einem Hintergrund-Thread zur Veränderung eine GUI genutzt. Das kracht ebenfalls, GUI-Elemente dürfen nur aus dem Main-Thread verändert werden. Und da schlummern sicher noch mehr Probleme.
Das ganze ist also - wie üblich bei ChatGPT - Murks, den man mit Kenntnissen hinbiegen kann. Wenn du die nicht hast, wird’s schwer.
Der Rest ist auch kaputt, es wird ein Signal aus einem Hintergrund-Thread zur Veränderung eine GUI genutzt. Das kracht ebenfalls, GUI-Elemente dürfen nur aus dem Main-Thread verändert werden. Und da schlummern sicher noch mehr Probleme.
Das ganze ist also - wie üblich bei ChatGPT - Murks, den man mit Kenntnissen hinbiegen kann. Wenn du die nicht hast, wird’s schwer.
Vielen dank fürs Feedback.
Habe eben die exe in den Pfad mit reingeschrieben und nochmals versucht das Programm zu starten und siehe einer an es funktioniert.
Nehme an das es an dem Neustart liegt, dass das ffmpeg jetzt auch von Python im Systempfad erkannt wird.
Ich weiß das ChatGPT nur murks schriebt und man das besser schreiben kann aber es tut was es tun muss.
Entschuldigung für die Unannehmlichkeiten die eure Augen bei dem schrecklichen code ertragen musste aber geht halt nicht anders ohne eigene Kenntnisse.
Vielen Dank nochmal.
Habe eben die exe in den Pfad mit reingeschrieben und nochmals versucht das Programm zu starten und siehe einer an es funktioniert.
Nehme an das es an dem Neustart liegt, dass das ffmpeg jetzt auch von Python im Systempfad erkannt wird.
Ich weiß das ChatGPT nur murks schriebt und man das besser schreiben kann aber es tut was es tun muss.
Entschuldigung für die Unannehmlichkeiten die eure Augen bei dem schrecklichen code ertragen musste aber geht halt nicht anders ohne eigene Kenntnisse.
Vielen Dank nochmal.
- DeaD_EyE
- User
- Beiträge: 1240
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Mir sind die Leute lieber, die kein ChatGPT nutzen und ganz normal Fragen stellen. ChatGPT nimmt einem nicht das Lesen der Dokumentation ab.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server