2017-02-18 4 views
1

mp4ビデオの特定の部分を切り取り、それらの部分をマージして単一のビデオファイルを作成したいとします。これは、ビデオのアニメーションプレビューを作成することです。FFMPEG:ビデオの特定部分を切り取り、1つのファイルにマージする

具体:

  • パート1: ビデオのこれらの部分を切り取り、カット=合計時間の20%の時間を開始します。 の終了時間=合計時間の20%+ 3秒、
  • パート2:合計時間の40%。 40%nof合計時間+ 3秒
  • パート3:合計時間の60%。合計時間の60%+ 3秒
  • パート4:合計時間の80%合計時間の80%は、+ 3秒

(ビデオは3分以上の長さであるので、部品の任意の重複があってはならない)

次に新しいMP4ビデオファイル内の4つの部分をマージ。あなたはFFMPEGでそれをどうやってやっていますか?私はFFMPEGでこれらの質問に対して、「スーパーユーザー」と「Stackexchange」に関する質問への答えを見つけ

: 取得する - どのように映像期間

編集:私はこの質問のためになったように、これは限りあります開始/終了位置にビデオファイルからの秒 カットの部分で -Concatenate MP4ファイル

ので:動画の合計時間を取得します。

$ ffprobe -v error -show_entries format=duration \ 
    -of default=noprint_wrappers=1:nokey=1 -sexagesimal inputvideo.mp4 

-sexagesimalを使用すると、後で使用するのに適切な時刻形式を取得する必要があります。 どう合計時間で操作を行うには(その後、20%、40%... 20%3秒、40:

は、右ここで私は知っていないビデオ

ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy /path/videopart[number].mp4 

の一部を切り取り%3秒...) 適切にコード行に

それを実装する方法は、ファイル名を持つファイルvideoparts.txtを作成します。

$ cat videoparts.txt 
file '/path/videopart1.mp4' 
file '/path/videopart2.mp4' 
file '/path/videopart3.mp4' 
file '/path/videopart4.mp4' 

その後、これはマージする必要があり

$ ffmpeg -f concat -i videoparts.txt -c copy outputvideo.mp4 
+0

これまでに何か試しましたか? – tyb

答えて

1

ffmpegのドキュメンテーションSeekingTime Durationによると「シークタイム」を指定する唯一の方法は、正確な時間を与えることである:1つのファイルにそれら。

ffprobeでビデオの合計時間を抽出し、開始点を計算し、その開始点でffmpegを呼び出すシェルスクリプトを書くことができます。

関連する問題