Wie Sie split video-oder audio durch Stille teilen
Muss ich automatisch split-video von einer Rede durch Worte, so dass jedes Wort eine separate video-Datei. Kennst du irgendwelche Möglichkeiten, dies zu tun?
Mein plan war, zu erkennen, silent Teile und verwenden Sie Sie als Worte-Separatoren. Aber ich finde nicht jedes Werkzeug, dies zu tun und sieht aus wie ffmpeg ist nicht das richtige Werkzeug dafür.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie zuerst verwenden Sie ffmpeg zu erkennen, die Intervalle der Stille, wie diese
Dadurch wird die Ausgabe in der Konsole mit Lesungen, die wie folgt Aussehen:
Anschließend erstellen Sie Befehle zum aufteilen von jedem der Stille Ende der nächsten Stille beginnen. Sie werden wahrscheinlich möchten Sie einige Griffe von, sagen wir, 250 ms, so dass die audio eine Dauer von 250 ms * 2 mehr.
(Habe ich übersprungen Angabe audio - /video-Parameter)
Du wirst ein Skript schreiben wollen, zu kratzen, die Konsole und erzeugen Sie ein strukturiertes (vielleicht CSV) - Datei mit den Zeitcodes - ein paar pro Zeile: silence_end und die nächsten silence_start. Und dann noch ein Skript zum erzeugen der Befehle, die mit jedem paar von zahlen.
ffmpeg -i input.mkv -filter_complex "[0:a]silencedetect=n=-90dB:d=0.3[outa]" -map [outa] -f s16le -y /dev/null |& F='-aq 70 -v warning' perl -ne 'INIT { $ss=0; $se=0; } if (/silence_start: (\S+)/) { $ss=$1; $ctr+=1; printf "ffmpeg -nostdin -i input.mkv -ss %f -t %f $ENV{F} -y %03d.mkv\n", $se, ($ss-$se), $ctr; } if (/silence_end: (\S+)/) { $se=$1; } END { printf "ffmpeg -nostdin -i input.mkv -ss %f $ENV{F} -y %03d.mkv\n", $se, $ctr+1; }' | bash -x
|&
mit2>&1 |
.-c copy
auf die Letzte ffmpeg Befehlszeile. Andere Effekte, die erfordern komplizierte Skripts. Vielleicht werde ich es implementieren und post als eine Antwort, eines Tages...noise=-30dB:d=0.5
? Ich habe versucht, verschiedene Werte, aber ich bin nicht immersilent_start
undsilent_end
Paare, dass ist manchmal, dass einer fehlt.