admin のすべての投稿

新配信(β)で4:3映像に余白をつけて800×450配信にする

元映像が4:3なら丁度よい解像度にリサイズし余白をつけて推奨解像度の800×450にする。余白の色の既定値は黒で適宜指定できる。配信映像がドット絵なら neighbor を指定し、それ以外は lanczosbicubic(無指定ならこれ) を指定する。
scale=576:432:flags=neighbor,fifo,pad=800:450:112:9:black

余白の色の指定方法
FFmpeg Utilities Documentation : Color

Windows の ffmpeg で生放送する方法 : scale
Windows の ffmpeg で生放送する方法 : pad

生放送をNLEなどの外部ツールで高画質配信する | ニコニコヘルプ

ffmpeg で先頭と後ろを一度にカットする

Cut video with ffmpeg. – Stack Overflow より、再エンコードなしに1行のコマンドで先頭と後ろをカットする方法。

開始10秒と後ろ10秒をカットしてその間をコピー出力する
ffmpeg -ss 10 -i video.mp4 -ss 20 -i video.mp4 -c copy -map 1:0 -map 0 -shortest -f nut - | ffmpeg -f nut -i - -map 0 -map -0:0 -c copy out.mp4

  • このコマンドの挙動の理解には shortest, map, nut を知る必要がある
  • -shortest は2入力以上に対応していないので、1入力のトラックの中から一番短いファイル時間でカットされる
  • 1番目の -ss で動画の先頭時間の指定、2番目の -ss と1番目の -ss の差し引きが後ろをカットする時間になる
  • -map 1:0 -map 0 を使ってそれらを1入力扱いにして、そのトラックに中から -shortest で一番時間の短いところで出力時間が決まる
  • なぜ -map 1:0 を先にするかというと、この映像はカットするための時間を決める動画で最終出力には不要になりかつ、トラックを除外しやすい -map 0:0 でパイプ入力するため
  • -f nut はいろいろなコーデックをパイプ入出力できるので便利
  • パイプ入力で -map 0 しているのは映像と音声、または字幕などのすべてのデータを元に -shortest で後ろをカットするから
  • -map 0:0 で不要なトラックを除外して出力している

ドラクエの戦闘シーンチェンジエフェクトを作る

ニコニコ動画に投稿された「DQエンカウント風AviUtlシーンチェンジ用素材 sm30578410」を元に ffmpeg でも同じことを実装する。配布されたファイルは 8bit PNG なのでそれを使い、グラデーションマスクを作成し2入力を合わせる方法をとる。サンプルコマンドの出力コーデックは適宜変える。input1.mp4 と input2.mp4 は 640×360 30000/1001 fps の動画である。それに伴って。color ソースもそれに統一する。シーンチェンジは input1.mp4 から input2.mp4 の順番に切り替わるのがドラクエの戦闘シーンチェンジエフェクトになる。
続きを読む ドラクエの戦闘シーンチェンジエフェクトを作る

白と黒を使ったフェード効果

白や黒にフェードインする効果と、白や黒から入力した映像にフェードアウトする効果の解説。入力した映像が YUV、または RGB で処理が異なる。効果は2秒から4秒に掛けての2秒間で行う。適宜効果の時間は設定を変える。

関連記事
数式で線や円、模様が描ける geq
特定の区間だけフィルタを当てるタイムライン編集について
続きを読む 白と黒を使ったフェード効果

数式で線や円、模様が描ける geq

ffmpeg のフィルタの中でおそらく最も使い方が難解な geq(generic equation) フィルタの使い方。YUV と RGB、A のそれぞれを設定により色を変えたり、回転・反転させたり、グラデーションや線、円や矩形も描ける。さらにマスクも作れるのでトランジションへの応用もできるが処理速度はかなり遅い。その書き方はすべて縦横の座標とその値を 評価式 で計算する。
続きを読む 数式で線や円、模様が描ける geq

モノクロで点滅する効果を作る

YUV の映像なら彩度を 0 にするか、UV を 128 にする方法で、RGB の映像なら RGB 各値をそれぞれ一定倍率を掛け合わせる方法をとり、点滅するフレーム間隔を指定するのにタイムライン編集を行う。

特定の区間だけフィルタを当てるタイムライン編集について
続きを読む モノクロで点滅する効果を作る

時間でフィルタに強弱をつける

アルファチャンネルの濃さを調整することで時間で強弱をつけるフィルタができあがる。

基本コマンド

3秒から4秒に掛けて gblur フィルタを当てる
ffplay -i input -vf split[0],gblur=4:enable='between(t,3,4)',format=yuva420p,fade=t=in:st=3:d=0.5:alpha=1,fade=t=out:st=3.5:d=0.5:alpha=1,[0]overlay=enable='between(t,3,4)'
続きを読む 時間でフィルタに強弱をつける