Basierend auf diesem Artikel scheint es möglich zu sein FFMPEG zu verwenden, um Szenenwechsel in Videos zu erkennen: Ссылка
Jetzt habe ich ein Video, das einen Buchtext anzeigt und wenn der Text (Wort oder Satz) gesprochen wird, wird er hervorgehoben. So etwas wie dieses Hörbuch: Ссылка
Ich muss den Zeitstempel wissen, wenn der Text hervorgehoben wird (daher Szenenwechsel). Dadurch kann ich Timestamp-Tags auf meinem Youtube-Video hinzufügen, so dass die Hörer leichter durch das Hörbuch navigieren können.
Was ist die magische Befehlszeile, die dies tun würde?
Vielen Dank!
Kombiniert den Filter mit der Szene (um Szenenänderungen zu erkennen) und den showinfo Filter sollte erreichen, was Sie wollen:
%Vor% Dieser Befehl extrahiert alle Frames, die sich vom vorherigen Frame um mehr als ( gt
) 0.4
(auf einer Skala von 0
bis 1
) unterscheiden. Für diese Frames werden Informationen wie folgt ausgedruckt ( showinfo
)
Jetzt müssen Sie nur den Zeitstempel extrahieren. Ich denke du bist an pts_time
interessiert. Du könntest es so machen:
Damit erhalten Sie die Liste aller Zeitstempel:
%Vor% Damit dieser Ansatz funktioniert, benötigen Sie eine Version von FFmpeg, die die Szenenerkennung implementiert. Außerdem müssen Sie einen geeigneten Wert für den Schwellenwert auswählen ( 0.4
im ersten Befehl). Sie können versuchen, einen optimalen Schwellenwert zu finden, indem Sie Frames für verschiedene Schwellenwerte extrahieren (und anschließend die Rahmen manuell untersuchen) wie folgt
Nur zur Verdeutlichung: grep [0-9.]*
schließt Ganzzahlen nicht aus, wie in einer anderen Antwort behauptet. Es entspricht einer beliebigen Zeichenfolge aus Ziffern und Punkten, aber es würde auch Nicht-Zahlen wie '4.4.4' entsprechen. Ffmpeg sollte jedoch solche schlecht geformten Zeitstempel nicht ausgeben.
Ich habe nicht den Rep, um einen Kommentar zu der obigen Antwort zu posten, aber ich wollte darauf hinweisen, dass der von @ckehn und @keypulsations gepostete Grep nur Timestamps packt, die Gleitkommazahlen sind. Um sowohl Fließkomma- als auch Ganzzahl-Zeitstempel zu erfassen, verwenden Sie den folgenden Regex
%Vor%