Help us understand the problem. What is going on with this article?

ruby + cairo + ffmpeg で砂嵐動画を作成する

More than 1 year has passed since last update.

適当なダミー動画が欲しい時にこれでサクッと作成できます。

out.gif

cairo のインストール

$ gem install cairo

Rubyコード

suna.rb
require "cairo"

format = Cairo::FORMAT_ARGB32
# キャンバスの大きさ
width = 400
height = 300

surface = Cairo::ImageSurface.new format, width, height
context = Cairo::Context.new surface

# 1ピクセルの大きさ
cell_height = 2
cell_width = 2

# 解像度
num_cols = width / cell_width
num_rows = height / cell_height

66.times do |n|
  current_col = 0
  current_row = 0

  num_rows.times do |i|
    num_cols.times do |j|
      # ピクセルの座標
      y = i * cell_height
      x = j * cell_width
      # ランダムな色
      r = rand(100) / 100.0
      g = rand(100) / 100.0
      b = rand(100) / 100.0
      context.set_source_rgb r, g, b
      # ピクセルを描画
      context.rectangle x, y, cell_width, cell_height
      context.fill
    end
  end
  # ファイルに書き込み
  surface.write_to_png "out/suna#{format "%03d", n}.png"
end

連番画像を生成

$ ruby suna.rb

ffmpeg のインストール (Homebrew の場合)

$ brew install ffmpeg

ffmpeg で連番画像から動画を作成

$ ffmpeg -r 15 -i ./out/suna%03d.png -r 15 -an -vcodec libx264 -pix_fmt yuv420p out.mp4 
globis
グロービスは 1992 年の創業以来、社会人を対象とした MBA、人材育成の領域で Ed-Tech サービスを提供し、現在は日本 No.1 の実績があります。これらの資産と、さらに IT や AI を活用することで、アジア No.1 を目指しています。
http://www.globis.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away