ffmpegを使用して、指定されていない長さのビデオの先頭からX秒を切り捨てることは可能ですか?


20

さまざまな、指定されていない長さの一連のFLV録音の最初の1秒または2秒だけをトリミングする必要があります。動画から指定された期間を抽出するためのリソース(30秒のクリップなど)をたくさん見つけましたが、動画の最後まで続けるためのリソースは見つかりませんでした。

これらの試みはどちらも、ビデオのコピーバージョンを生成するだけで、トリミングは必要ありません。

ffmpeg -ss 2 -vcodec copy -acodec copy -i input.flv output.flv

ffmpeg -ss 2 -t 120 -vcodec copy -acodec copy -i input.flv output.flv

2番目の考えは、おそらく、可能な長さを超えた長さを指定した場合、最後まで進むだけでした。サイコロなし。

以下が魅力的なので、コーデックやタイムコードの代わりに秒を使用しても問題ではないことはわかっています。

ffmpeg -ss 2 -t 5 -vcodec copy -acodec copy -i input.flv output.flv

他のアイデアはありますか?他の(Windowsベースの)コマンドラインツールを使用することもできますが、ffmpegはサムネイルの作成に既に使用しており、使い慣れているため、ffmpegを強く支持しています。

うまくいけば、私のビデオはすべて2分未満になります。

更新:

ffmpegは追加のハッカーなしではこれを達成できないように見えるため、Mencoder(http://www.mplayerhq.hu/)の使用に切り替えました。

私がやろうとしたことを達成するためのメンコーダー構文は次のとおりです。

mencoder.exe -ss 2 -oac copy -ovc copy input.flv -o output.flv

あなたはどちらを好みますか?上記のmencoder例; またはffmpeg例、以下?

回答:


16

試してください:

ffmpeg -i input.flv -ss 2 -vcodec copy -acodec copy output.flv

入力パラメータが最初になるはずだと思います。


回答ありがとうございます。上記で使用したパラメーターの順序付けでも同じ結果が得られるため、その順序ではないと思います。ffmpegをあきらめた後、キーフレーム間隔が他のツールで問題を引き起こしていました。ちょうど今これを再検討した後、それは結局キーフレーム間隔でした。5秒前に設定されていましたが、それ以来1秒に設定しました。5秒で、コマンドと上で試したコマンドの両方が最初に黒いスペースを生成しました(当然、3秒の価値があります)。1秒で、期待どおりに機能します。
11

これはmp3でも機能します
ジオセオ

4
FFmpegシークで説明したように、-iコピー中に-ssを入力パラメーターとして(前に)使用したり、古いバージョンのFFmpegでトランスコードしたりする場合は、キーフレームシークを使用します。これははるかに高速ですが、精度が犠牲になります。出力パラメーターとして使用する場合、プロセスは潜在的にはるかに遅くなります(破棄された部分でも入力はフレームごとにデコードされます)が、正確です。質問は古いですが、これは受け入れられた答えだと思います。
ジョナサンY.

23

予想どおり、このコマンド 2秒からビデオトリミングします。

ffmpeg -i input.flv -ss 2 -vcodec copy -acodec copy output.flv

この問題は、input.flvのキーフレーム間隔にありました。5秒に設定され、ビデオの開始時に3秒に相当する黒いフレームが生成されました(5-2 = 3)。私はキーフレーム間隔を1秒に変更しましたが、おそらく2秒でも私の場合は望ましい結果が得られます。

更新: Daveの回答ごとに順序-i-ssパラメーターを更新しましたが、クレジットとして受け入れました。


2
私もこの問題を抱えていました。この投稿は私のためにそれをしました。私は弾丸を噛み、-vcodec copy -acodec copyすべての編集コマンドに使用しようとするのをやめました。再エンコード私のビデオかどうか(第2の差正しい場所での切断の開始から黒フレームを防止することなく再符号化は、ビデオのほぼ5秒差に変換しました)。だから、私は結局に置き換えられまし-vcodec copy-vcodec libx264 -crf 0
ヘンディ

2
私はこれと同じものに出会いました。-vcodec copyスライスがキーフレームで始まらないという理由だけでできないことを発見しました。次のキーフレームまでN秒間静止画像または黒画像を取得していました。コピーするのではなく、実際に再エンコードすると、期待どおりに機能します。そのため、入力と出力は両方ともH264ですが、再エンコードする必要がありました(-vcodec libx264代わりにを使用-vcodec copy)。
カールウィルバー

Davesの答えは、ffmpegの最新バージョンの時点で正しいものです。の-i前に来る必要があり-ssます。
アレテ


0

この回答を更新すると、2019年の時点でコマンドは次のようになりました。

ffmpeg -i input.flv -ss 2 -c copy output.flv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.