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.
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
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.
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:
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.-
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.
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:
- Erstellen Sie eine Videodatei aus einer Audiodatei und fügen Sie Visualisierungen aus Audio hinzu
- https://video.stackexchange.com/questions/17378/ffmpeg-audio-to-visualisation
Prozedurale Bilddarstellung von audio
Getestet in Ubuntu 19.04, ffmpeg 4.1.3. Die Dateien wurden ab August 2019 problemlos auf YouTube hochgeladen.
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.
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