30分のビデオファイルがありますが、00:09:23〜00:25:33の間にビデオを抽出したいと思います。
開始位置を-ss
で定義できますが、終了位置の開始位置が見つかりませんでした。何か助けてください?
ffmpeg
の最新版をダウンロードするようにしてください。そしてあなたのディストリビューションに付属するもの(例えばUbuntu)を使わないでください。さまざまなディストリビューションのパッケージ版は古くなっていることが多く、期待通りに動作しません。
または 自分でコンパイルしてください 。
[start]
のために[duration]
からビデオをカットするためにこれを使います:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4
ここで、オプションは次のことを意味します。
-ss
は開始時間を指定します。 00:01:23.000
または83
(秒単位)-t
はクリップの長さを指定します(同じ形式)。ffmpeg
には、終了時刻を -to
で指定するフラグもあります。-c copy
は、最初のビデオ、オーディオ、字幕のビットストリームを再エンコードせずに入力から出力ファイルにコピーします。これによって品質が損なわれることはなく、コマンドは数秒で実行されます。-c copy
オプションを省略した場合、ffmpeg
は選択したフォーマットに従って自動的に出力ビデオとオーディオを再エンコードします。高品質のビデオとオーディオの場合は、 x264エンコーディングガイド と AACエンコーディングガイド をそれぞれ読んでください。
例えば:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4
私はあなたが今次のコマンドを使うことができると思います。
ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile
ffmpeg Doc 、または このwikiページ もご覧ください。
これは、誰もがtrim
フィルタ を提案しなかったことは奇妙です。
入力の2分目以外のすべてを削除します。
ffmpeg -i INPUT -vf trim=60:120
最初の1秒だけを続けます。
ffmpeg -i INPUT -vf trim=duration=1
秒13から秒58までを除くすべてを削除します。
ffmpeg -i INPUT -vf trim=13:58 OUTPUT
あなたはこれらの WindowsとLinuxで動作する2つの方法を使うことができます。
Ffmpegでビデオファイルを分割する方法は2つあります。最初のものはそれ自体が優れています。それよりも高速ですが、特定の欠陥がある出力ファイルを作成することがあります。そのため、ビデオファイルを分割する2つ目の方法があります。出力ファイルは大きくなりますが、処理速度はかなり遅くなりますが、入力ファイルと同じ品質レベルであるようです。
方法1:
ffmpeg -ss <start> -i in1.avi -t <duration> -c copy out1.avi
方法2:
ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
<start>
- ビデオffmpegの一部の始まりは切り取ることです。フォーマット:00:00:00.0000
、時:分:秒:ミリ秒。
<duration>
- ビデオの一部の期間は切り取られます。上記と同じ形式です。例:
ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 -c copy out1.avi ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 out1.avi
ffmpegは1時間19分0秒からビデオファイルの一部を切り取ります。切り出したビデオシーケンスの長さは5分0秒です。