ffmpeg - -copyts を使用して実際のタイムコードを保持することは可能ですか?

ffmpeg - -copyts を使用して実際のタイムコードを保持することは可能ですか?

これは簡単な作業です。ビデオの変換されたクリップを、-copyts実際のタイムコードを使用して作成したいと思います。たとえば、このコマンドの変換されたクリップは次のようになります。

ffmpeg -hide_banner -ss 57:41.76 -i input.mp4 -copyts -fs 4085Ki -vf scale=1280:-1 -c:v libvpx -crf 10 -b:v 1000K -maxrate:v 1600K -bufsize 800Ki -threads 4 -quality good -cpu-used 5 -c:a libvorbis -b:a 64Ki -maxrate:a 128Ki input.webm

持続時間は 31 秒ですが、次のようになります。

frame=  938 fps=7.7 q=0.0 Lsize=    4089kB time=00:58:13.15 bitrate=   9.6kbits/s speed=28.8x

58:13.15分だそうです。

-copytsコマンド コードから を削除することで通常の継続時間を実現できますが、これを使用する主な理由は、 58:13.15 に設定して開始-copytsできるため、毎回次のセグメントを計算する必要がなくなるためです。-ss

質問ですが、変換されたファイルの持続時間を変更する方法はありますか?それなし再変換しますか? メタデータを変更するなどですか?

私はWindows 7を使用しています。

答え1

どうしてもやらなければならなかった-c copy。それを忘れていた。

新しいクリップをすべて新しいフォルダ(提案としてはwebm)に入れて、そのフォルダ内に別のフォルダを作成しnew、これを実行します。

ffmpeg -i input.webm -c copy new\output.webm

自動化されたプロセスの場合は、次の操作を実行します。

for %i in ("*.webm") do ffmpeg -i %i -c copy new\%~ni.webm

-c copyこれにより、変換したすべてのクリップに対してコマンドが繰り返されます。

関連情報