YouTube 2 MP3

    • YouTube 2 MP3

      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
      1. Ü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
      2. Lade dir dieses ZIP-Archiv herunter und entpacke es, öffne die ytdl.php mit einem Editor.
      3. Besorg dir wie folgt einen YouTube API-Zugang:
        1. Erstell unter der folgenden Adresse ein neues Projekt: 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.
      4. 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.
      5. 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).
      6. Rufe das Script wie folgt in deinem Browser auf: deine.domina/pfad/ytdl.php?f=mp3&v=HCjNJDNzw8Y
      7. Wenn das ganze funktioniert hat, sollte die Ausgabe etwa wie folgt aussehen aussehen, wenn nicht siehe Fehlercodes unten

        Quellcode

        1. {
        2. "state": true,
        3. "code": "SUCCESS",
        4. "title": "Camila Cabello - Havana (Audio) ft. Young Thug",
        5. "image": "https://i.ytimg.com/vi/HCjNJDNzw8Y/mqdefault.jpg",
        6. "length": 219,
        7. "dl": "http://deine.domain/pfad/tmp/HCjNJDNzw8Y-mp3.mp3"
        8. }
      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:

      Quellcode

      1. opus: 2800ms
      2. mp3: 9100ms
      3. vorbis: 9100ms
      4. aac: 14200ms
      5. m4a: 14200ms

      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:

      Quellcode

      1. ./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

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Lars-Marcel ()