FFMPEG - トリミング時に高速シークを実現する方法

FFMPEG - トリミング時に高速シークを実現する方法

現在のコマンドは次のようになります。

-i Video.mp4 -i Image.png -filter_complex [1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v] -map [v] -ss valueLeft -to valueRight -c:v libx264 -preset ultrafast Output.mp4

画像をもっと速くエクスポートする方法について質問しました。詳細についてはこちらをご覧ください。ここ彼は、高速検索のために-ssbeforeを置くことを提案し、それは完璧に機能しました。-i

次に、次の操作を試して、ビデオをトリミングして同じことを実行してみました。

 -ss valueLeft -i Video.mp4 -i Image.png -to valueRight -filter_complex [1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v] -map [v] -c:v libx264 -preset ultrafast Output.mp4

その後は-to無視されるだけです。


私もこれを試してみました-

-ss valueLeft -i Video.mp4 -to valueRight -i Image.png -filter_complex [1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v] -map [v] -c:v libx264 -preset ultrafast Output.mp4

私のログには次のように表示されています:

Image.png -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.


誰か、これを正しく行う方法を教えてくれませんか?

答え1

この方法-toは実装されていますが、低速シークが実行されている場合やタイムスタンプがコピーされている場合など、限られた状況でのみ使用できます。高速シークでは、最初の入力フレームの出力タイムスタンプが 0 にリセットされるため、-to役に立ちません。

回避策としては、 time - time-tの値を使用することです。-to-ss

関連情報