読者です 読者をやめる 読者になる 読者になる

Play Siv3D!

ゲームとメディアアートのための C++ ライブラリ「Siv3D」

動画ファイル

動画ファイル

Siv3D June 2015 v2

動画ファイルを書き出す

# include <Siv3D.hpp>

void Main()
{
	VideoWriter writer(L"test.mp4", 640, 480);

	Image image(640, 480, Palette::White);

	for (int frame = 0; frame < 240; ++frame)
	{
		image.fill(Palette::White);

		for (int i = 0; i < 36; ++i)
		{
			const double radian = Radians(i * 10 + frame);

			const Vec2 pos = Circular(200, radian) + image.size / 2;

			RectF(25).setCenter(pos).rotated(radian).write(image, HSV(i * 10));
		}

		writer.write(image);
	}
}


動画ファイルを読み込む
対応しているフォーマットは AVI 形式のみです。

# include <Siv3D.hpp>

void Main()
{
	VideoWriter writer(L"test.avi", 640, 480, VideoFormat::AVI_Uncompressed, 30);

	Image image(640, 480, Palette::White);

	for (int frame = 0; frame < 240; ++frame)
	{
		image.fill(Palette::White);

		for (int i = 0; i < 36; ++i)
		{
			const double radian = Radians(i * 10 + frame);

			const Vec2 pos = Circular(200, radian) + image.size / 2;

			RectF(25).setCenter(pos).rotated(radian).write(image, HSV(i * 10));
		}

		writer.write(image);
	}

	writer.close();

	VideoReader reader(L"test.avi");

	if (!reader)
	{
		return;
	}

	int frame = 0;

	DynamicTexture texture;

	while (System::Update())
	{
		if (System::FrameCount() % 2)
		{
			reader.read(frame, image);

			texture.fill(image);

			++frame %= reader.length;
		}

		texture.draw();
	}
}