12
音声でビデオを自動的に分割する必要があるため、すべての単語が別々のビデオファイルです。あなたはこれを行う方法を知っていますか?ビデオや音声を無音部分で分割する方法
私の計画は、無音部分を検出し、単語区切り記号として使用することでした。しかし、私はこれを行うためのツールを見つけることができませんでしたffmpegはそのための適切なツールではないように見えます。
音声でビデオを自動的に分割する必要があるため、すべての単語が別々のビデオファイルです。あなたはこれを行う方法を知っていますか?ビデオや音声を無音部分で分割する方法
私の計画は、無音部分を検出し、単語区切り記号として使用することでした。しかし、私はこれを行うためのツールを見つけることができませんでしたffmpegはそのための適切なツールではないように見えます。
あなたが最初にこれは、このように見えるの測定値とのコンソール出力を生成します。この
ffmpeg -i "input.mov" -af silencedetect=noise=-30dB:d=0.5 -f null - 2> vol.txt
のように、沈黙の間隔を検出するためのffmpegを使用することができます。
[silencedetect @ 00000000004b02c0] silence_start: -0.0306667
[silencedetect @ 00000000004b02c0] silence_end: 1.42767 | silence_duration: 1.45833
[silencedetect @ 00000000004b02c0] silence_start: 2.21583
[silencedetect @ 00000000004b02c0] silence_end: 2.7585 | silence_duration: 0.542667
[silencedetect @ 00000000004b02c0] silence_start: 3.1315
[silencedetect @ 00000000004b02c0] silence_end: 5.21833 | silence_duration: 2.08683
[silencedetect @ 00000000004b02c0] silence_start: 5.3895
[silencedetect @ 00000000004b02c0] silence_end: 7.84883 | silence_duration: 2.45933
[silencedetect @ 00000000004b02c0] silence_start: 8.05117
[silencedetect @ 00000000004b02c0] silence_end: 10.0953 | silence_duration: 2.04417
[silencedetect @ 00000000004b02c0] silence_start: 10.4798
[silencedetect @ 00000000004b02c0] silence_end: 12.4387 | silence_duration: 1.95883
[silencedetect @ 00000000004b02c0] silence_start: 12.6837
[silencedetect @ 00000000004b02c0] silence_end: 14.5572 | silence_duration: 1.8735
[silencedetect @ 00000000004b02c0] silence_start: 14.9843
[silencedetect @ 00000000004b02c0] silence_end: 16.5165 | silence_duration: 1.53217
あなたは、その後から分割するコマンドを生成します各沈黙は次の沈黙の始まりに終わる。おそらく
ffmpeg -ss <silence_end - 0.25> -t <next_silence_start - silence_end + 0.25> -i input.mov word-N.mov
は、コンソールログをこすりするスクリプトを作成することをお勧めします
(私は、オーディオ/ビデオのパラメータを指定してスキップした)ので、
、250ミリ秒、たとえば、いくつかのハンドルを追加することになるでしょうタイムコードを持つ構造化ファイル(多分CSVファイル)を生成します - 各行に1組:silence_endと次のsilence_start。そして、それぞれの数字の組でコマンドを生成する別のスクリプト。
オンライナーとして:「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警告' perl -ne 'INIT {$ ss = 0; $ se = 0; } if(/ silence_start:(\ S +)/){$ ss = $ 1; $ ctr + = 1; 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' –
この1つのライナーはMacでは動作しません。 -bash:予期しないトークン '& 'の構文エラー@ –
@JohnSmith、Macはデフォルトで古い(pre-4)bashを持っています。 '|&'を '2>&1 |'に置き換えてください。 –