[PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

  • Hallo zusammen, :)

    nun ich habe mich hier nicht nur aus Jux und Dollerei registriert, sondern auch weil ich ein Projekt am laufen habe, dass ich mit Hilfe von AutoIt und der Unterstützung hier realisieren möchte.
    Bisher habe ich versucht das Ganze mittels cmd umzusetzen bin dabei aber kurz vor dem Ziel an gewisse Grenzen gestoßen. :(

    Wie ich schon in meinem Vorstellungsthread erwähnt habe, ist mir nicht wichtig fertige Lösungen zu bekommen, den ich möchte verstehen was ich tue. Und wenn doch, dann hoffe ich dass es OK ist wenn ich dementsprechend nachfrage.

    Hoffentlich ist das OK, wenn ich als Neue hier einfach so loslege?

    Zum Projekt:

    Es handelt sich dabei um ein Programm mit dem von zwei Servern mehrere Audiodaten geladen und anschließend zusammengefügt werden sollen.
    Dabei sind jedoch einige Punkte zu berücksichtigen.

    • Server 1: (eigener Server)
      Jeder User hat zu diesem Server einen eigenen Ftp-Zugang, dort liegen zum einen diverse Audiofiles (Opener und Closer zu unterschiedlichen Beiträgen), als auch eine Datei die die Zugangsdaten zum Server 2 beinhaltet.
    • Server2: (fremd Server)
      von hier kommen diverse Audiobeiträge die sich inhaltlich uterscheiden und zu unterschiedlichen Wochentagen und Tageszeiten aktualisiert werden. Die Zugangsdaten sind fest vorgegeben und es gibt nur einen FTP-User


    Das Programm verbindet sich auf Abruf und nach berücksichtigung von Wochentag und Uhrzeit mit Server 1, holt sich dort zwei Audiodateien und die Zugangsdaten für Server2. Verbindet sich dann mit Server 2 und holt sich dort die letzte Audiodatei.
    Anschließend werden alle geladenen Audiodateien auf ein vorher angegebenes lokales Level normalisiert und zu einem File zusammen geführt. nach dem noch der ID3-Tag angepasst wurde wird das fertige File in ein vorgegebenes Verzeichnis kopiert und die vorhandene Datei überschrieben.

    Um der Frage vorweg zueilen; "Warum werden die Zugangsdaten so kompliziert vom Server1 geladen und nicht gleich im Programm verwaltet?" - Der Grund ist folgender, Es kann immer wieder sein, dass ein User wegfällt und dieser soll dann natürlich auch auf keinen Server mehr Zugriff haben. Bei dem eigenen Server ist das kein Problem, da wird der Zugang gelöscht und gut ist es.
    Bei dem Fremdserver ist das jedoch so nicht möglich, hier muß man jedesmal den Zugang ändern lassen und dann müßte man jedesmal allen Usern die neuen Zugangsdaten zukommen lassen. Das ist zum einen sehr aufwendig und zum anderen birgt das viele potentielle Fehler. Idealerweise kann man das Passwort auf Server 1 so verschlüsseln, dass man es nach Ausscheiden eines Users garnicht ändern müßte.

    Die Daten sollen in einer config.ini abgelegt werden. Über ein Menü kann man die Einstellungen aufrufen und eventuelle Anpassungen vornehmen (Zugangsdaten, Gain-Level usw.)

    Ich hoffe es ist einigermaßen verständlich was ich vor habe?

    Gruß
    Anna

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Klingt interessant. Darf man fragen wie du darauf gekommen bist, welchen Nutzen es hat? Sieht nach einer Lösung im Bereich Audiobearbeitung aus :)

    Soweit finde ich die Beschreibung gut. Meine erste Frage wäre, soll das Skript dauerhaft laufen, oder pro Start einen Durchlauf tätigen. Zweite Frage wäre, kannst du alle benötigten Einstellungsmöglichkeiten genauer definieren? Zugangsdaten für den FTP ist klar, Gain-Level kenne ich auch nur aus dem Audiobearbeitungsbereich.

    Ansonsten würde ich erstmal keine Probleme sehen. Schau dir an wie man mit AutoIt und FTP-Servern arbeitet, da dies deine Grundlage sein wird, und sonst scheint es mir zumindest gut realisierbar :)

    Grüße Yaerox

    Grüne Hölle

  • Ich möchte hier auch mal eine Frage loswerden:
    Wird dieses Programm dann jeden zum Download angeboten?
    Denn es gibt ja da dieses Problem mit Zugangsdaten bei Autoit und Decompilierern.
    Ansonsten kann man es auch mit php erledigen, dann kann man selber bestimmen welche bedinungen erfüllt werden müssen das man zugriff auf dem Server hat.

    Wenn ich mich nicht irre kann man die Zusammsätzung der Audiofiles mit der Bass UDF erledigen.

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Also das Programm soll seine Anwendung dann im Bereich eines Webradios finden, ob es auch für andere Radios einsetzbar wird hängt davon ab wie allgemeingültig ich es programmieren kann. Für den Anfang denke ich wird es wohl nur für das eine Radio funktonal sein, aber es gbit ja auch die gute Weiterentwicklung :)

    Zur weiteren Erläuterung:
    Bei den fertigen Audiofiles handelt es sich um Nachrichten, Wetter, Kinonews, Horroskop, Sportnews usw.... Diese werden von einem Anbieter (Server 2) neutral gestellt, durch das Einbetten von zum Beispiel den Nachrichten zwischen Opener und Closer wird der Beitrag dann individualisiert und an den Sender angepasst.
    Der User (Moderator) hat während einer Live-Sendung gut zu tun und das Downloaden, Normalisieren und Zusammenführen ist sehr aufwendig und birgt in der Eile auch gern viele Fehler. Das Programm soll eigentlich nur wärend der Sendung laufen, kann aber natürlich auch zur Vorbereitung zu jeder Zeit betrieben werden. Die neuen Nachrichten werden zum Beispiel spätestens 10 Minuten zur vollen Stunde zur Verfügung gestellt. Der Moderator klikt dann in dieser Zeit auf einen Button "Nachrichten aktualisieren" und während er sich weiter um seine Sendung kümmert wird im Hintergrund das Audiofile ausgetauscht. Das heißt das Script arbeitet on Demand.

    Grundsätzlich möchte ich das Programm so gestalten, dass soviel als möglich der Daten aus eine config-Datei gelesen werden, die wiederum über einen "Extras/Optionen"-Bereich eingestellt werden können.
    Da wären Punkte wie:

    • URL Server1
    • URL Server2
    • Zugangsdaten Server1
    • normalisierungs Level
    • Speicherort für das fertige Audiofile
    • Namen der Opener und Closer
    • später vieleicht auch einiges mehr...

    Das Programm wird fürs erste nur senderintern zur Verfügung stehen, da es für einen allgemeinen Einsatz wohl erstmal viel zu individuell ist. Aber ja, es ist duchaus gewünscht das später auch anderen zugänglich zu machen. PHP ist keine Lösung, da das Ganze dann doch wieder viel zu aufwendig für den Moderator wird.

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Für mich hört sich das definitiv lösbar und sehr genial an!

    Heißt das eigentlich dass du mehrer Buttons möchtest zum Aktualisieren des jeweiligen Thema?

    Soweit würde ich mir an deiner Stelle dann erstmal einen GUI machen mit ein paar Knöpfen. Zum entwickeln vll. 2 mehr FTP Server 1 Testen und für den 2ten natürlich auch. Dann schaust du dir an wie man FTP-Verbindungen aufbaut und Daten bezieht. Wenn diese Funktionen soweit klar sind würd ich dann alles ein wenig spezialisieren mit den Optionsmöglichkeiten und zum schluss das zusammenfügen von Audiodateien. Wobei ich dies vll. in einem seperatenSkript erstmal ausprobieren würde.

    Grüße Yaerox

    Grüne Hölle

  • Hi

    Ich hab vor einigen Jahren fast genau das gleiche gemacht.
    Allerdings lagen die Opener und Closer schon auf dem lokalen Rechner und nur die Sendung musste von einem FTP-Server geladen werden.

    Ich nehme an, dass es sich bei den Audiodateien um MP3 handelt!?


    Variante 1:
    Normaler Download der Audiodateien.
    Fernsteuerung diverser Commandline-Tools (sox, ffmpeg, mp3directcut, replaygain usw...) um die Audios zu normalisieren und zusammenzusetzen.

    Vorteil: Die MP3 werden nicht decodiert und es entsteht somit kein Qualitätsverlust. (Natürlich nur, wenn alle Schritte non destructive sind)

    Nachteil: Beim Zusammensetzen kann man nur harte Schnitte bzw. keine Crossfades machen. Manchmal sind diese Übergänge auch zu hören.
    Weiters müssen bzw. sollten alle MP3´s dieselben Attribute wie Bitrate oder Stereomode haben - hängt vom Player ab, ob dieser mit unterschiedlichen Bitraten in einer Datei zurecht kommt. Nondestructives Normalisieren geht nur in 1.5dB Schritten und auch der Player muss das unterstützen. Weiters normalisieren alle? MP3-Tools auf Peaks und nicht auf Loudness.

    Ich muss zugeben, dass ich seit einigen Jahren nichts mehr auf diesem Gebiet gemacht hab - evtl. gibt es mittlerweile besser Tools...


    Variante 2:
    Normaler Download der Audiodateien.

    Normalisieren und zusammensetzen via Bass.dll (Im Forum in "Projekte" zu finden)

    Vorteil: Man kann auf Loudness normalisieren und Crossfades zwischen den Audiodateien realisieren.

    Nachteil: Erfordert fortgeschrittene Kenntnisse mit Bass.dll
    Falls man wieder als MP3 abspeichert, kommt es zu einem Qualitätsverlust (Kommt auf den Codec an, ob dieser Verlust hörbar wird...)
    Man kann jedoch die fertige Sendung als Wav abspeichern.


    Variante 3:
    Normalisieren und mischen via Bass.dll
    Jedoch kein Download der Dateien, sondern direkter Stream vom Server in die fertige Audiodatei.
    Dies erfordert allerdings noch bessere Kenntnisse mit Bass.dll


    Variante 4:
    Kein Zusammensetzen der Audiodateien, sondern einen Player programmieren, welcher die Audiodateien quasi live mischt ^^


    Man kann Bass.dll jedoch auch benutzen um die Normalisierungsrate auf Loudness auszurechnen und die Werte dann in Variante 1 verwenden.
    Weiters kann man mit Variante 1 ohne Qualitätsverlust arbeiten, wenn man die MP3´s zunächst dekodiert, aber dann immer als Wav bearbeitet bzw. abspeichert.

    Allzu tragisch ist der Qualitätsverlust zwar nicht, aber beim Streamen der Sendung wird ja wahrscheinlich wieder erneut codiert.

    E

  • In diesem Zusammenhang würde mich interessieren, ob es möglich ist die Dateien mit AutoIt runter zu laden, an z.B. VirtualDJ weiterzuleiten, dass diese somit dort direkt eingespielt werden und der Moderator die kleinen Teilschnitte selber On Air via Mischpult zusammen mischt :)

    Würden die in der richtigen Reihenfolge auf den Decks liegen, wäre das ja dann kein Akt mehr einen Übergang zu mischen. Zumindest nicht für einen echten DJ ^^

    Grüße Yaerox

    Grüne Hölle

  • Was die Button usw. betrifft bin ich mir nicht sicher was am Ende eine praktikable Lösung ist.

    Im Moment tendiere ich dazu das wie im Anhang zu lösen, denn es soll immer nur ein Download ausführbar sein.

    Wie gesagt, es soll die Moderatoren als weit möglich entlasten, da sie sich eh schon nebenbei um alles andere kümmen müssen.(eingehende Anrufe, Musikwünsche, redaktionelles, Musikredaktion usw...)
    Zu dem ermöglicht ein solches Programm ein einheitliches Klangbild bei allen Moderatoren.

  • eukalyptus ich kann mir garnet vorstellen, dass die so viel zu tun haben :P Ich dachte immer Moderatoren sind wie Politiker, bissle quatschen und dafür Geld kriegen :P Spaß ^^

    Ja man hat da eigentlich keine Grenzen gesetzt bei den Funktionen. Man könnte das aufs extremste ausbauen.

    Darf man eigentlich fragen für welchen Sender du das schreibst?

    Praktikable Lösung ... ich muss auf der arbeit alle Programme so lösen, dass sie schnell und einfach klickbar sind, und wenn man sie nicht klicken dürfen soll dann schalte ich sie solange aus. Daher würd ich für jedes Thema einen Button machen und solange ein Download gestartet ist alle anderen immer ausblenden, oder einfach immer eine Abfrage machen ob ein Download grad im gange ist und dann Irgendwo ein Control hin das zeigt hey da ist ein download grad aktiv daher passiert nun nichts.

    Grüße Yaerox

    Grüne Hölle

  • Nun fürs erste sind erstmal die Basics wichtig und dass ich ein paar Dinge begreife :)

    Zum Beispiel find eich in der AutoIt Help überall die "include"-Befehle, verstehe aber nicht ganz was es damti auf sich hat.

    Über das "include" kann ich doch andere Script usw. dem Programm zu eigen machen?
    Werden diese Dinge dann später mit compiliert oder muß das dann extra abgearbeitet und installiert werden?
    Sind das dann Basics von AutoIt?
    und woher weiß ich wann ich welches für was brauche?
    Reicht es wenn ich all die benötigten am Anfang des Programms aufliste?

    Fragen über Fragen :)

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Nun fürs erste sind erstmal die Basics wichtig und dass ich ein paar Dinge begreife :)

    Zum Beispiel find eich in der AutoIt Help überall die "include"-Befehle, verstehe aber nicht ganz was es damti auf sich hat.

    Über das "include" kann ich doch andere Script usw. dem Programm zu eigen machen?
    Werden diese Dinge dann später mit compiliert oder muß das dann extra abgearbeitet und installiert werden?
    Fragen über Fragen :)


    Dafür haben wir eine deutsche Hilfe-Übersetzung: Schlüsselwort #include ;)

    Um es mal kurz zu erklären:
    Damit kannst du andere AutoIt-Skripte in dein eigentliches einbinden, so kannst du z.B. zur Übersicht Funktionen in andere Dateien auslagern und nur die Hauptschleife etc. im Hauptskript lassen.

    Ich würde dir empfehlen mal Pee's Buch über AutoIt mal zu lesen. ;)
    Und links in der "Wichtige Links" - Box sind auch Link zum Download der deutschen Hilfe-Übersetzung, damit man es z.B. in SciTE integrieren kann.
    Und es gibt eine auch eine Online-Hilfe. :)

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Klasse - Genau sowas hab ich gesucht :)

    Das hilftmir weiter erstmal zu verstehen was ich tue.

    Damit werde ich mich die nächsten Tage dann wohl ausgiebig beschäftigen. Das Buch ist extrem verständlich geschrieben ...

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Ich hatte bevor ich mit AutoIt angefangen habe zwar schon ein wenig Programmierdenken, aber AutoIt war so leicht, und hat mich so in die Gedankengänge einbezogen, weil hat auch der Code logisch verständlich ist, mittlerweile ist kaum eine Sprache noch ein großes erstaunen.

    Besonders die AutoIt Hilfe hat mich damals begeistert, man kann einfach durch das klicken und eingeben von Stichpunkten sehr schnell jede Lösung finden.

    Grüße Yaerox

    Grüne Hölle

  • So, nachdem ich mich mal in Ruhe durch einen großen Teil durch geackert habe, habe ich festgestellt, dass ich mich doch schon mit vielem auskenne. Ich kenne die Theorie, aber in der Praxis sind eben doch einige Kleinigekeiten anders. Ein Komma hier und eine Klammer da und schon funktioniert nichts mehr :)

    Aber jetzt habe ich eine andere Frage. Es gibt dieses Zusatzprogramm "Koda" womit ich anscheinend sehr gut klar komme, jedenfalls ist es mir gelungen sehr schnell eine, für den ersten Versuch, brauchbare Oberfläche zu generieren. Allerdings habe ich den Code über die Zwischenablage in den AutoIt-Editor übernommen. nun kann manaber laut Tutorial das Programm auch direkt in AutoIt integrieren, jedoch findet das blinde Huhn nicht heraus wie?

    Vieleicht weiß ja jemand wo ich da nachsehen kann?

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Du startest Koda doch über SciTE, oder?
    Dann kannst du in Koda unter Tools auf Generate Form Code klicken um das Fenster mit dem Skript zu öffnen. Dort müsste unten ein Button sein auf dem Insert into Scite steht, oder bei dem man das zumindest auswählen kann.

  • Nein, bisher habe ich Koda direkt gestartet. Da hakt es eben schon, dass ich das mit AutoIt garnicht in Verbindung bekomme.

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Mir wurde zu beginn hier immer ins Gewissen gesprochen, dass ich den "Mehraufwand" zum erstellen der Oberflächen in kauf nehmen soll, dafür den Code aber selber schreibe. Also ich würde es so jedem anderen auch nun ans Herz legen. Wenn man es auch einige male gemacht hat, geht es von Hand ziemlich genau so fix finde ich :)

    Zum einbinden kann ich nichts sagen, ich hab den Koda noch nie genutzt ^^

    Grüße Yaerox

    Grüne Hölle