• HeyHo,

    ich hatte erst kürzlich im Thread von INCepted ein kleines PHP-Script gepostet, welches YouTube Videos in Audio-Dateien konvertiert - Da mich mittlerweile einige Leute per PN oder Skype danach gefragt haben, hier nochmal genau erklärt:


    Vorraussetzungen

    • Webserver mit PHP auf einer Linux-Distribution
      Bei Webhostern wird das ganze höchstwahrscheinlich nicht funktionieren, da diese die exec() Funktionen deaktiviert und weder Avconv noch FFMPEG installiert haben könnten.
    • Avconv und FFMPEG
    • Google-Account

    Vorbereitung

    • Überprüfe ob FFMPEG und Avconv installiert sind:
      1. Verbinde dich per SSH auf deinen Server und führe folgenden Command aus:
      2. Unter Debian / Ubuntu: apt-get install ffmpeg avconv
    • Lade dir dieses ZIP-Archiv herunter und entpacke es, öffne die ytdl.php mit einem Editor.
    • Besorg dir wie folgt einen YouTube API-Zugang:
      1. Erstell unter der folgenden Adresse ein neues Projekt: https://console.cloud.google.com/projectcreate
      2. Im Dashboard klickst Du auf "Auswählen" und wählst dein soeben erstelltes Projekt aus.
      3. Klick links im Menü auf "API & Dienste" und dann auf "Bibliothek".
      4. Gib "youtube" in das Suchfeld ein und wähle "YouTube Data API v3" aus und klick auf "Aktivieren".
      5. Klick links im Menü auf "Zugangsdaten" dann "Anmeldedaten erstellen" und dann "API-Schlüssel" auswählen.
    • Füge den in #3 erstellten API-Key in der ytdl.php in Zeile 7 bei "API_KEY" ein. Passe auch evtl. die Werte in Zeile 7-8 (MAX_LENGTH und CACHE_TIME) an.
    • Lade die Dateien auf deinen Webserver, und gib allen Dateien und Ordnern CHMOD 755 (in FileZilla: Dateien auswählen, Rechtsklick, Dateiberechtigungen, 755 eingeben, Unterverzeichnisse einbeziehen, OK).
    • Rufe das Script wie folgt in deinem Browser auf: http://deine.domina/pfad/ytdl.php?f=mp3&v=HCjNJDNzw8Y
    • Wenn das ganze funktioniert hat, sollte die Ausgabe etwa wie folgt aussehen aussehen, wenn nicht siehe Fehlercodes unten

      Code
      {
          "state": true,
          "code": "SUCCESS",
          "title": "Camila Cabello - Havana (Audio) ft. Young Thug",
          "image": "https://i.ytimg.com/vi/HCjNJDNzw8Y/mqdefault.jpg",
          "length": 219,
          "dl": "http://deine.domain/pfad/tmp/HCjNJDNzw8Y-mp3.mp3"
      }

    Benutzung:

    Aufgerufen wird das Script wie folgt:
    ytdl.php?f=FORMAT&v=VIDEO_ID

    Im Hintergrund wird das Video dann heruntergeladen und Konvertiert.

    Mögliche Formate: aac, flac, mp3, m4a, opus, vorbis, wav
    Flac und WAV sind nicht zu empfehlen, die Dateien werden riesig.
    Am besten geeignet ist Opus, denn hierbei muss die Audiodatei nicht konvertiert werden, da YouTube im Webm Video-Format auch einen Opus Codec nutzt - Das spart Zeit und CPU.
    Zum vergleich, nachfolgend die Laufzeiten für ein 3:40 Minuten Musikvideo:

    Code
    opus:	2800ms
    mp3:	9100ms
    vorbis:	9100ms
    aac:	14200ms
    m4a:	14200ms


    http://www.youtube.com/watch?v=HCjNJDNzw8Y
    Die VIDEO_ID entspricht hierbei HCjNJDNzw8Y

    Der Aufruf müsste also z.B. wie folgt aussehen: ytdl.php?f=opus&v=HCjNJDNzw8Y


    Das Script returnt die Rückgabe werte in JSON, kann also mit fromJSON in eine Table gepackt werden.
    Rückgabe werte siehe oben bei Vorbereitung #7.
    Ein beispielhaftes serverseitiges LUA-Script befindet sich mit im Archiv.


    Fehlercodes:

    TMPDIR = Ordner "tmp" existiert nicht.
    CHMOD = Dateiberechtigungen nicht (richtig) gesetzt, siehe Vorbereitung #5.
    ARGERR = Falsche Argumente, siehe oben bei Benutzung.
    NOTFOUND = YouTube Video existiert nicht.
    NOLIVE = Live-Videos können nicht konvertiert werden.
    TOLONG = Video ist zu lang, einstellbar in ytdl.php, Zeile 8 bei MAX_LENGTH.
    DLERROR = YouTube-DL konnte nicht ausgeführt werden / Video kann nicht heruntergeladen werden / Video kann nicht konvertiert werden


    Sollte DLERROR auftreten, navigiere per SSH zum Verzeichnis wo die ytdl.php liegt und führe folgendes aus (FORMAT und VIDEO_ID anpassen, wie beim Aufruf des PHP-Scripts) und poste den Output einfach hier im Thread:

    Code
    ./youtube-dl --add-metadata --rm-cache-dir --no-check-certificate --extract-audio --audio-format FORMAT "https://www.youtube.com/watch?v=VIDEO_ID" -o "test.%(ext)s" --verbose


    Gruß
    Lars

  • Dieses Thema enthält 2 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!