期間の異なるビデオがいくつかあります。すべてのビデオの最後の5秒間をカット(削除)したいのですが、「ffmpeg」をループで使用してビデオをトリミングできますか?.
これにより、ファイルの長さが数秒で取得できます。
let A=$(avprobe input.webm 2>&1 | grep "^ *Duration: " | sed "s/^ *Duration: \\([0-9:]*\\).*/(((\\1)/" | sed "s/0\\([0-9]\\)/\\1/g" | sed "s/:/)*60+/g")
avprobe
は秒の小数部を返しますが、bashは小数部を処理しません。だから私はただ1秒未満のすべてをドロップしています。
その後、次のようなことを簡単に行うことができます。
let A=$A-5
avconv -i input.webm -t $A -c:v copy -c:a copy output.webm
ffmpeg
を使用しないでごめんなさい。しばらく前にavconv
に切り替えましたが、オプションは同じである必要があると信じています。そうでない場合は、必要に応じてそれらを書き換えるのは簡単です。
この後の質問は、forループで全体をラップし、すべてのファイルを一度に実行することだけです。