Wie konvertiert man MP3 in das YouTube-erlaubte Videoformat?

Ich habe viele MP3-Dateien auf meiner Website und habe beschlossen, sie auf Youtube hochzuladen, aber leider erlaubt YouTube mir das nicht. Es erfordert nur Videoformat.

Wie kann ich diese MP3s in Videos konvertieren und dem resultierenden Videoformat denselben Satz von Bildern (ein oder mehrere Bilder) hinzufügen?

Ich muss dies in großen Mengen tun, nicht einzeln, ich habe Hunderte von MP3-Dateien.

Es kann entweder eine Windows-oder Linux - basierte Anwendung sein.

Author: Giacomo1968, 2014-01-11

5 answers

Es gibt einige Informationen über die Verwendung von FFmpeg zum Codieren von Audio mit einem Standbild für YouTube, hier und einige Ratschläge für Massenkonvertierungen in Windows, hier.

Was die Codierung betrifft, finde ich, dass dies funktioniert:

ffmpeg -loop 1 -r 1 -i pic.jpg -i audio.mp3 -c:a copy -shortest -c:v libx264 output.mp4

Die Kodierung -c:v libx264 reduziert die Größe der Ausgabedatei erheblich, wie erwähnt unter: https://superuser.com/a/1472572/128124

 15
Author: Mica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-08-22 14:28:26

Sie können auch einen einfachen Bash Oneliner anstelle eines Python-Skripts in Betracht ziehen -

for i in *.mp3; do ffmpeg -v quiet -i "picture.jpg" -i "$i" -shortest -acodec copy "`sed 's/mp3/mp4/g'<<<$i`"; done

Dadurch werden alle MP3-Dateien in Ihrem aktuellen Verzeichnis in MP4-Videos mit Bild konvertiert.jpg.

Zum Konvertieren von flac in MP3 wäre das

for i in *.flac; do ffmpeg -v quiet -i "$i" -ab 320k -ac 2 -ar 48000 "`sed 's/flac/mp3/g'<<<$i`"; done

Mitteilung "-v quiet", schaltet die ffmpeg laut Mund und auch doppelte Anführungszeichen um $i und sed - dies wird sicherstellen, dass Sie nicht scheitern mit Dateinamen, die Leerzeichen enthalten.

Ein Tipp: Das Konvertieren in Video dauert einige Zeit (zumindest für mich). Versuchen Sie es mit - Threads 4 (oder natürlich mit einem anderen Wert. Es wird keinen Sinn auf Single-Core-CPU machen)

Bearbeiten: Ich habe herausgefunden, dass " - loop 1 "(von anderen vorgeschlagen) eine Schleife erstellt (wie überraschend!) was eigentlich unendlich ist. Auf meinem Gentoo bedeutet das, dass es all deine leckeren Bisse essen wird. Ohne "- loop 1 " funktioniert es einwandfrei, daher empfehle ich Ihnen, dies zu tun.

 3
Author: kecer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-07-28 16:06:00

Es gibt einige Lösungen für Ubuntu und andere Linux-Systeme unter http://ubuntuforums.org/showthread.php?t=1686664. Die meisten sind Shell-Befehle oder eine andere schnelle Skriptsprache, die für alle MP3s geloopt werden kann und Videodateien ausgibt. Dann können Sie einfach die Videodateien für den Upload auf YouTube in die Warteschlange stellen. Unter den auf der Seite aufgeführten Lösungen:

  1. FFmpeg, dann Dateien auf YouTube hochladen
    ffmpeg -loop 1 -i picture.jpg -i music.mp3 -shortest -acodec copy video.mp4 Schleife entsprechend für alle MP3-Dateien, dann laden Sie alle resultierende Videodateien.

  2. Python, in MP4 konvertieren und dann Dateien auf YouTube hochladen

    #! /usr/bin/env python

    import sys, os

    inputOne = sys.argv[1] inputTwo = sys.argv[2]

    for i in sys.argv[1:]: if '.mp3' in i: output = i.replace('mp3','mp4')

    cmd = 'ffmpeg -loop_input -i "'+inputOne+'" -i "'+inputTwo+'" -shortest -acodec copy "'+output+'"'

    os.system(cmd)

Es verwendet auch ffmpeg und akzeptiert Musik und Bild als Argumente.

 2
Author: Caleb Xu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-01-12 03:46:13

Rekursiv konvertieren in Unterverzeichnissen

Hier ist eine einfache find Version, die alle .mp3 im aktuellen Verzeichnis und seinen Unterverzeichnissen in mp4 konvertiert:

find . -iname '*.mp3' | sort | while IFS="" read -r f; do
  ffmpeg \
    -nostdin \
    -loop 1 \
    -r 1 \
    -i image.jpg \
    -i "$f" \
    -vcodec libx264 \
    -acodec copy \
    -shortest \
    "$(basename "${f%.*}.mp4")" \
  ;
done

Erhalten Sie einige Testdaten:

wget -O image.jpg https://upload.wikimedia.org/wikipedia/commons/8/83/Lama_Portrait_06072007_01.jpg
wget -O audio.ogg https://upload.wikimedia.org/wikipedia/commons/4/4f/BackUpAndPush.ogg
ffmpeg -i audio.ogg audio.mp3

Hochgeladene Ausgabe: https://www.youtube.com/watch?v=tv3a6kP6BDA

Wenn ffmpeg sich beschwert, dass die Bildgröße kein Vielfaches von 2 ist (erforderlich für libx264), können Sie zuerst die Bildgröße mit Imagemagick:

identify image.jpg

Und dann beide runden breite und Höhe nach unten, um gerade zu sein, zB wenn die Größe 1023x513 wäre, würden wir verwenden:

 convert image.jpg -resize 1024x512! imag2.jpg

Wobei das ! die Verwendung dieser Größe erzwingt: https://unix.stackexchange.com/questions/319504/force-graphicsmagick-to-resize-image-to-specific-width

Das -nostdin ist erforderlich, da ffmpeg sonst Bytes von stdin liest und unser read bricht!!! https://stackoverflow.com/questions/52374260/bash-variable-changes-in-loop-with-ffmpeg

Die -vcodec libx264 drastisch reduziert die endgültige Videogröße viel näher an die des ursprünglichen MP3 zu sein: der Standard-Video-Codec scheint viel schlimmer zu sein. Es könnte möglich sein, die Vergrößerung weiter zu reduzieren, indem weniger Keyframes verwendet werden: https://stackoverflow.com/questions/30979714/how-to-change-keyframe-interval-in-ffmpeg In unseren Beispieldaten hatten wir +3 MB auf einem 3-minütigen 3-MB-MP3 mit einem 1,1-MB-Bild.

Siehe auch: Kombinieren Sie ein Bild + eine Audiodatei, um ein Video mit FFmpeg

Prozedurale Videodarstellung von Audio

Ffmpeg ist sehr featureful, und Sie können mehrere Video-Darstellungen Ihrer Audio mit mit Befehlen der Form erzeugen:

ffmpeg -i audio.mp3 \
  -filter_complex "[0:a]avectorscope=s=1920x1080,format=yuv420p[v]" \
  -map "[v]" -map 0:a avectorscope.mp4

Hier ist avectorscope der spezifische Darstellungstyp.

Hier ist eine praktische Liste solcher Formate: https://gist.github.com/seyoum/4455e9bed74241bfbd640a8083fd38b3 die alle unter: http://ffmpeg.org/ffmpeg-filters.html#Multimedia-Filters

Siehe auch:

Prozedurale Bilddarstellung von audio

Https://stackoverflow.com/questions/4468157/how-can-i-create-a-waveform-image-of-an-mp3-in-linux/63869342#63869342

geben Sie hier die Bildbeschreibung ein

Getestet in Ubuntu 19.04, ffmpeg 4.1.3. Die Dateien wurden ab August 2019 problemlos auf YouTube hochgeladen.

 1
Author: Ciro Santilli TRUMP BAN IS BAD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-12-08 19:57:25

Kopieren Sie Ihre MP3-Dateien (oder was auch immer Sie codieren möchten, ändern Sie Ihr Audioformat entsprechend.) in einen Ordner. Fügen Sie auch eine Instanz von ffmpeg mit einem Titelbild mit dem Titel herringbone.jpg ein.

Dann gehe zu CMD und navigiere zum Ordner.

Kopiere dies:

for %a in (*.mp3) do "ffmpeg" -loop 1 -r 1 -i "Herringbone.jpg" -vcodec mpeg4 -i %a -acodec copy -shortest %a".mp4"

(Zum Einfügen in das CMD-Fenster klicken Sie auf das cmd-Zeilenfenster oben links. Wählen Sie BEARBEITEN / Einfügen.)

Drücken Sie die EINGABETASTE.

Funktioniert mit der neuesten version von ffmpeg encoder (4.1.1)

Ich vorstellen, können Sie ändern die videoformat auch. Wechseln Sie einfach von mp4 zu dem, was Sie wünschen und was ffmpeg unterstützt.

Ich habe dies in einem anderen Forum gefunden, aber es hat nicht funktioniert, bis ich die Stelle des -shortest im Skript gewechselt habe.

 -2
Author: Antti Luode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-03-11 16:39:56