【Vegas】選択した区間の全フレームをJPG画像で出力するスクリプト
数年ぶりにGIF作ろうかなと思って動画からフレームごとの画像を書き出そう(Motion JPEGとか)と思っていたら、Vegasでは画像で書き出しができないらしい。なんだと。
スクリプトだったら行けるようなので作りました。
ソースコード
全文載せておきます。
GPTがめちゃくちゃ嘘つきすぎて逆に時間がかかってしまった。
using System;
using System.IO;
using System.Windows.Forms;
using ScriptPortal.Vegas;
namespace ExportJpeg
{
public class EntryPoint
{
public void FromVegas(Vegas vegas)
{
// 範囲を必ず選択してください
if (vegas.SelectionLength.FrameCount == 0)
{
MessageBox.Show("範囲を選択してください。処理を終了します");
return;
}
// 画像出力用のフォルダを作成する
string SubDirectoryNamge = "Image";
var directoryPath = Path.Combine(vegas.Project.DefaultRenderPath, SubDirectoryNamge);
try
{
Directory.CreateDirectory(directoryPath);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
var endFrameCount = vegas.Transport.SelectionStart.FrameCount + Math.Abs(vegas.Transport.SelectionLength.FrameCount);
while (vegas.Transport.CursorPosition.FrameCount < endFrameCount)
{
// JPGでエクスポートする
var filepath = Path.Combine(directoryPath, vegas.Transport.CursorPosition.FrameCount.ToString() + ".jpg");
vegas.SaveSnapshot(filepath, ImageFileFormat.JPEG, vegas.Cursor);
// 次のフレームへ
vegas.Transport.CursorPosition++;
}
MessageBox.Show($"完了しました。\n{directoryPath}");
// フォルダを開く
System.Diagnostics.Process.Start(directoryPath);
}
}
}
言語:.NET Framework 4.8。
Visual Studio: 新規プロジェクトで「クラス ライブラリ(.NET Framework)」を選択。
[参照]で[ScriptPortal.Vegas.dll]と[System.Windows.Forms]を追加。
使い方
1.まず、タイムライン上で範囲をせんたくしてください。選択がないとエクスポートできません。
2.メインメニューの[ツール]→[スクリプトの作成]に「ExportJpeg」という項目が増えていますので、選択。
3.完了するとメッセージボックスが出ます。その次に画像を出力したフォルダが表示されます。
出力先フォルダのルール:
・[名前を付けてレンダリング]の際の保存先フォルダに、「Image」というサブフォルダを作成して、そのなかにJPG画像を出力します。
