動画から特定の小さなセクションを切り取るアプリケーションを作成しようとしています。より正確に言うと、字幕のタイムスタンプに従って、人が話している内容を切り取ります。次のコマンドで切り取ります。
ffmpeg -ss 346 -i input.avi -t 5 -c copy -y output.mp4
非常に高速で正確ですが、MP4 が実行する「偽装」によりメモリ効率が良いかどうかはわかりません。次のコマンドでカットも試しました。
ffmpeg -i input.avi -ss 346 -t 5 -c copy output.mp4
この場合、ffmpeg はキーフレーム以外でカットする可能性があるため、ビデオが最初に適切に再生されないことが多く、これは私にとっては重大な問題です。
アプリケーションは一度に複数のビデオを処理する必要があるため、デコードとエンコードを避けようとしていましたが、この方法では遅すぎる可能性があります。ffmpeg に必要なセクションの先頭にキーフレームを作成してから最初のコマンドを使用するように強制することをすでに考えましたが、それが高速になるかどうかはわかりません。私にとって、キーフレームの作成は簡単な操作ではありません。そして、私の最優先事項は時間効率と相対的な精度です。そのため、これらのオプションのどれが私のケースに最適かわかりません。助けていただければ幸いです。
答え1
出発するまで少し時間があるので、簡単に説明します (必要に応じて後で編集します)。
私は、このアプローチ、つまり私の「哲学」を採用します。与えられた問題に対して、まず望ましい結果をもたらす解決策を探します。それは最も効率的またはクリーンな解決策ではないかもしれませんが、望ましい結果をもたらすのであれば、定義上、それは良い解決策です。
そして、あなたはほとんど自分の質問に答えました。あなたの言葉を引用させてください。
私の最優先事項は時間効率と相対的な正確さです。
優先事項がわかってよかったです。では、これらの優先事項を満たすためにファイル サイズを少し犠牲にしても構わないと思いますか? そうであれば、最初の例を採用してください。おっしゃるとおり、非常に高速で、十分に正確で、コストはファイル サイズが少し大きくなることだけです。
これが役に立つことを願っています:-) M