Beiträge von Lars-Marcel

    HeyHo,

    hab hier noch 3 kleine vServer die ich nicht mehr benötige, die laufen noch bis zum 24. bzw. 29.12.17
    Also falls jemand einen braucht, schickt mir eine PN.

    46.105.82.X
    1 core @ Intel i7-4790K, 4.00GHz
    512 MB RAM
    5 GB SSD
    ~ 200 Mbit/s, 34.7 TB Traffic
    29.12.2017

    79.137.106.X
    1 core @ Intel i7-6700K, 4.00GHz
    512 MB RAM
    5 GB SSD
    ~ 100 Mbit/s, 36.4 TB Traffic
    24.12.2017

    137.74.151.X
    1 core @ Intel i7-4790K, 4.00GHz
    512 MB RAM
    5 GB SSD
    ~ 250 Mbit/s, 34.5 TB Traffic
    29.12.2017

    Verfügbare Systeme: CentOS 5-7, Debian 6-8, Fedora 20-23, Ubuntu 14-15


    Gruß
    Lars

    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

    Hast du es auch mal mit opus statt wav versucht?
    Bei wav, mp3 etc. brauchste noch zusätzliche programme & libraries um das zu konvertieren.

    Änder den codec mal wieder zu opus und klammer Zeile 22 (unlink($ID.".opus");) aus.
    Dann aufrufen und schau dann mal ob danach im order ne opus datei liegt - und ob du sie mit vlc oder whatever abspielen kannst.


    @INCepted:

    Edit:// @Lars-Marcel mit einem direkten header auf die file geht es im Browser. Habs mal
    jetzt im Game (GarrysMod) mal probiert, bekomme jedoch dann einen Bass Error: BASS_ERROR_UNKNOWN

    Wird die datei beschädigt o.Ä. ?

    Funktioniert es im Game, wenn Du statt der PHP-Datei direkt das zuvor erstellte opus file abspielen lässt?
    Evtl. spielt GarrysMod keine opus files ab, das musste mal probieren.

    Erstell mal ne PHP-Datei mit folgendem Inhalt


    Gib der CHMOD 777, rufe sie auf und poste dann hier was da kommt.

    @INCepted
    Mit youtube-dl kannst Du das easy über z.b. über PHP (exec) machen.
    Wenn Du es für MTA brauchst, kannst du mit youtube-dl das video laden, und daraus eine opus audio file extrahieren ohne extra das video zu mp3 converten zu müssen, spart halt Zeit und CPU.


    @DKong
    Erst vor ein paar tagen probiert, geht leider nicht :D


    Wer sowas evtl. brauch, hab sowas erst vor wenigen tagen gemacht, siehe hier.


    Gruß
    Lars