Ich möchte, dass meine Website es Benutzern ermöglicht, ihre eigenen Clips aus einem von mir bereitgestellten Quellvideo genau zu erstellen.
Ich habe eine Quellvideodatei, die ich zuerst in eine für eine Website geeignete konvertieren möchte:
Input #0, matroska,webm, from 'source.mkv':
Duration: 00:28:18.57, start: 0.000000, bitrate: 10183 kb/s
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 48 tbc (default)
Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s (default)
Ich benutze ffmpeg, um es so zu konvertieren:
ffmpeg -i source.mkv -c:v libx264 -c:a aac -strict experimental -vf scale="960:-1" source.mp4
Wenn ich mir dieses Video wieder ansehe, ist es qualitativ gut genug und klein genug für meine Bedürfnisse und lädt / spielt auf meiner Website.
Ich habe eine Webseite, auf der Benutzer einen Start- und Endpunkt für dieses Video auswählen und einen Clip erstellen können. Hier ist ein Beispiel für den Befehl ffmpeg, den ich dafür verwende:
-ss 577.920 -i source.mp4 -t 011.980 -codec:v copy -codec:a copy -vf scale="960:-1" clip1.mp4
Das Problem ist, dass der Clip nicht immer zeitgenau genug ist. Normalerweise ist das Audio genau genug, aber das Video stoppt eine halbe Sekunde früher oder so.
Gibt es eine Möglichkeit, dies genau und synchron zu machen, um beispielsweise 0,2 Sekunden zu sagen?
EDIT: Hinzufügen -force_key_frames 00:00:00.2
hat nicht geholfen.
BEARBEITEN: Ich habe den Ausschnitt so geändert, dass er -c:v libx264 -c:a aac -strict experimental
nicht -codec:v copy -codec:a copy
mit guten (ish) Ergebnissen verwendet wird.
Die Datei kann ohne Probleme extern wiedergegeben werden. Wenn ich sie jedoch in mein HTML5-Videoelement lade und wiedergebe, friert der letzte Teil des Videos (Audio ist in Ordnung) ein. Der letzte Teil, der einfriert, ist weniger als eine Sekunde lang.
Soll ich es mit einem anderen Video-Encoder versuchen? Was ist die beste Alternative für libx264? In Anbetracht dessen werde ich wahrscheinlich wollen, dass dies auf einer öffentlichen Website ist.
Aber Moment mal, deutet die Tatsache, dass es ohne Probleme mit einem Player wie MPC oder Windows Media Player genau wiedergegeben wird, nicht darauf hin, dass es sich um ein Problem mit Google Chrome oder dem HTML-Videoelement handelt? Oder verwende ich eine nicht unterstützte Codierung oder so?