ffmpeg 他の動画の先頭と最後に動画を追加

ffmpeg 他の動画の先頭と最後に動画を追加

それで、次のコマンドを使ってすべての画像を/home/vidsmp4に変換して出力しましたが、/home/vids2/home/vids

ビデオリンクは、で/home/intro/play.mp4すべてのビデオの前後に再生する必要があるビデオです/home/vids。 10秒かどうかを明確にするために、/home/intro/play.mp4「/home/vids」の動画の長さが30秒であれば、それをマージしてから完成した動画の長さは50秒にする必要があります。

find /home/vids -type f -execdir ffmpeg -i '{}' -filter:v drawtext="fontfile=/root/FreeSans.ttf:text='TEXT EXAMPLE':[email protected]:fontsize=24:y=h-line_h-30:x=w/20*mod(t\,60)" -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac -movflags +faststart '/home/vids2/{}.mp4' \;

答え1

ビデオが同じコーデックを使用してエンコードされている場合は、このconcat演算子を使用できます。

コーデックとコーデックパラメータがまったく同じメディアファイルを持っている場合は、「同じコーデックを使用したファイルの関連付け」の説明に従ってそれをリンクできます。メディアに異なるコーデックがある場合は、以下の「別のコーデックを使用したファイルの関連付け」の説明に従って接続できます。

$ cat build_ffmpegs.bash
#!/bin/bash

intro=/home/intro/play.mp4
outro=/home/intro/play.mp4

cd /home/vid

for i in vid*; do
    ffmpeg -f concat -safe 0 \
      -i < <(printf "file '%s'\n" $intro $(readlink -f $i) $outro) \
      -c copy /home/vid2/output_${i}
done

ffmpegこのコマンドを実行すると、次のコマンドが生成されます。

ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid1.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid1.mp4
ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid2.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid2.mp4
ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid3.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid3.mp4
ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid4.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid4.mp4
ffmpeg -f concat -safe 0 -i < <(printf "file '%s'\n" /home/intro/play.mp4 /home/vid/vid5.mp4 /home/intro/play.mp4) -c copy /home/vid2/output_vid5.mp4

ffmpeg必要な他の詳細に合わせてここでコマンドを調整できる必要があります。

引用する

関連情報