Ich habe ein Problem. Ich habe meine Videos separat aufgenommen und dann vertont. Manchmal dauert der Ton im Vergleich zur Videodauer länger oder kürzer. Normalerweise ist der Ton länger, manchmal um die 20 Sekunden. Wenn ich auf meinem PC über flv oder einen Windows Media Player laufe, ist das für mich kein Problem, da nach dem Ende des Videos die letzte Aufnahme des Videos angezeigt bleibt (wie ein Bild) und der Ton weiterhin ausgeführt wird und das Video nach dem Ton endet ist vorbei. Auf meinem PC ist also alles in Ordnung, wenn es als .flv- oder .mp4-Datei ausgeführt wird. Aber wenn ich das auf Google Drive oder an einen anderen Ort im Web hochlade (das heißt, wenn ich es in meinem Browser zum Anzeigen nach dem Hochladen ausführe), sehe ich, dass mein Video auf die Länge der Videodauer gekürzt ist (also mein Ton ist geschnitten). Ich verstehe, dass dies an unterschiedlichen Dauergrößen von Ton und Video liegt.
Jetzt brauche ich einen Befehl mit ffmpeg, mit dem mein Video auf meine Tondauer verlängert werden kann. Ich möchte meine Videos nicht noch einmal mit Ton neu codieren (in dem Sinne, dass ich meine mp3-Datei in den ffmpeg-Befehl einfügen müsste), wenn ich es nicht brauche (da ich viele Videos habe und Ton bereits darin eingefügt ist), aber nur um das Video mit einem ffmpeg-Befehl neu zu codieren, um die Videolänge auf die Tonlänge zu verlängern.
Ich habe mir das angesehen (im Moment nicht sicher, ob mir das überhaupt helfen würde): https://superuser.com/questions/801547/ffmpeg-add-audio-but-keep-video-length-the-same-not- kürzeste
Bei diesem Ansatz müssen Sie jedoch zuerst das Video mit der Tondatei (mp3 oder ähnliches) neu codieren.
Kann es getan werden, und was wäre ein Befehl oder Befehle dafür? (Und wenn die einzige Möglichkeit darin besteht, es mit einer MP3-Datei neu zu codieren, was wäre der Befehl dafür?)
Bearbeiten: Ich möchte meinen Ton nicht schneiden, ich muss den letzten Frame halten, bis mein Ton vorbei ist. Derzeit wird das letzte Bild nur beim Ansehen auf meinem PC gehalten, wenn ich das hochlade, wird der Clip sofort geschnitten, wenn das Video stoppt.
Sie können dies mit mp4fpsmod hacken (direkter Link zur Win-Binärdatei; C++-Quelle unter https://github.com/nu774/mp4fpsmod ).
Der erste Schritt besteht darin, die Zeitstempel des vorhandenen Videos zu extrahieren
mp4fpsmod -p vid_tc.txt vid.mp4
Dadurch wird eine Textdatei wie diese erstellt
# timecode format v2
0
40
80
120
...
4880
4920
4960
Jede Zeile enthält den Zeitstempel von Frame #N in Millisekunden.
In diesem Beispiel ist jeder Frame 40 Millisekunden lang und der letzte Frame wird bei 4960 ms gezeigt und somit ist der Videostream 5 Sekunden lang.
Angenommen, Ihr Audio ist 11,34 Sekunden == 11340 ms lang. Bearbeiten Sie den letzten Timecode auf etwas knapp darunter 11340
, wie 11320
.
# timecode format v2
0
40
80
120
...
4880
4920
11320
und dann laufen
mp4fpsmod -x -T keep -t vid_tc.txt -o vid_new.mp4 vid.mp4
Dadurch wird eine neue Datei erstellt vid_new.mp4
, die Sie hochladen können. Die in Desktop-Playern oder Tools angezeigte Dauer kann falsch sein, aber die Wiedergabe sollte wie gewünscht erfolgen, außer dass das letzte Bild zusammen mit dem Ende des Audios angezeigt wird. Dies überspringt die Neucodierung und ist schnell. Sie können hinzufügen -i
und überspringen -o vid_new.mp4
, wenn Sie den Timecode direkt in einer vorhandenen Datei bearbeiten möchten, z
mp4fpsmod -x -T keep -t vid_tc.txt -i vid.mp4
aber ich empfehle es nicht.
9000
funktioniert es nicht für einen Audiostream von 11,34 Sekunden.
stib
DarioBB
stib
Gyan
DarioBB