[ PC系セットアップ覚書 Top]

PC系セットアップ覚書

2011年まで「俺的な非 UN*X 環境をめざして」という題でしたが、 「UNIX系」と「非UNIX系」の区別がだんだん難しくなってきましたので、 あれこれ区別しないことにしました(^_^;


[前] SSH/SCPをWin10で! 2020/10a

[FFmpeg覚書] 動画に動画を埋め込む 2020/09c

[Table of Contents]

はじめに

[ [memo] FFmpeg 自分用覚書 ] のページ、ときどき 追記してるんですけど。その結果、ちょっと分量が多くなりすぎたかなー、と感じましたので、 一部内容を切り出して別ページにしました。それが本ページです。

[Table of Contents]

動画の中に動画を埋め込む(基本編)

ffmpeg -i in.mp4 -i box.mp4 -filter_complex "overlay=x=0:y=0" -preset ultrafast   merged.mp4
これで in.mp4 の動画の中に、小さい動画 box.mp4 が埋め込まれます。これは面白い!

ただ何回もこれ繰り返してると、徐々に画質が落ちていく気がするんだよな‥と、 それが気になるときには出力する動画の画質を指定する -crf nn オプションを 指定するといいのかな? 指定しないときは -crf 21 で、ここで指定する数字の 値が小さくなるほど画質は良くなります。

ffmpeg -i in.mp4 -i box.mp4 -filter_complex "overlay=x=0:y=0" -preset ultrafast -crf 18   merged.mp4
‥でも、あんまり変わらないかなー。気休め程度??

ところで、動画の音声を埋め込む方(小さいほう)にしたいときは "-map 1:a:0" オプションを 付ければいい‥のかな? (私の理解では、"-map 1:a:0" というのは(数字は0から始まるのを前提として)「1番目の入力ファイルのa(udio)を0番目の出力ファイルのa(udio)として割り当てる」という意味になるはずです)

[Table of Contents]

動画の中に動画を埋め込む(応用編:クロマキー合成)

ffmpeg -i in.mp4 -i box.mp4 -filter_complex "[1:0]colorkey=black:0.01:1[colorkey];[0:0][colorkey]overlay=x=0:y=0" -preset ultrafast combine.mp4
これも面白い! ただ black:0.01 のところ、できれば black は完全に消した 0 になればいいのに‥と 思ったりしたんですけど、black:0 だと「ゼロはダメだ!」とエラーが出ますね。んー。

んで。たとえば、四角い動画を埋め込むんじゃなくて、角をとった丸い感じ、 もしくは四隅を斜めに落とした八角形の動画を埋め込みたい、なんてときは埋め込み動画を ちょっと加工するといいのかな? 具体的には、まず右図右のような画像ファイル mask.png を用意する。 これはWindows標準装備の「ペイント」アプリで作ってみたものである。 mask.png は縦横のドット数が埋め込み動画(右図左)と同じであり、 埋め込み動画の中では使われていないはずの色(ここでは赤)で外枠を作ってある。

まずこの PNG ファイルの白部分を透過加工する。オレ的にいちばん楽なのは ImageMagick の convert コマンドを使う方法。 こんな感じ:

convert -transparent white mask.png maskt.png

これで元画像の白部分が透過となった maskt.png というファイル(右図左)が作成されるので、これを使って元動画 in.mp4 から枠付きの動画を作成する。こんな感じ:

ffmpeg -i in.mp4 -i maskt.png -filter_complex "overlay=x=0:y=0" -preset ultrafast box-src.mp4
この結果、枠付きの動画 box-src.mp4 (右図右)ができる。

ここでは動画をいろいろ用意するのが面倒なので in.mp4 に box-src.mp4 を埋め込むことにしたいんだけど、 そのために box-src.mp4 の縦横ドット数を半分にした埋め込み用の動画 box-small.mp4 を臨時に作成する。こんな感じ:

ffmpeg -i box-src.mp4 -vf scale=160:-1 box-small.mp4

こうして用意した in.mp4 と、赤枠付きの小さい動画 box-small.mp4 (右図左)は 以下のようにして合成可能。この結果、内容は同じで解像度だけが異なる2つの動画が 合成された動画 out.mp4 (右図右)が生成される。 合成した場所にうっすらと赤が残ってますけど、とりあえずそれは気にしない方向で‥

ffmpeg -i in.mp4 -i box-small.mp4 -filter_complex "[1:0]colorkey=red:0.01:1[colorkey];[0:0][colorkey]overlay=x=0:y=0" -preset ultrafast out.mp4



[次] [memo] FFmpeg 自分用覚書 2020/09b