はじめに
Seleniumでブラウザ操作を自動化していると、その操作内容を動画で記録したくなる場面があります。
本記事では、Java × Selenium × FFmpegを組み合わせて、ブラウザ操作の録画動画を自動生成する方法を解説します。
想定ユースケース
- 操作ログを動画で残したい
- UIテスト結果を映像で保存
- 自動デモやチュートリアル動画の生成
構成概要
要素 | 内容 |
---|---|
ブラウザ操作 | Selenium(Java)で自動実行 |
録画処理 | FFmpegでデスクトップ画面を録画 |
同時実行 | JavaからSeleniumとFFmpegを並列起動 |
1. 前提環境
- Java 8 以降
- Selenium WebDriver
- ChromeDriver(またはEdge/Firefox)
- FFmpeg(パスが通っていること)
2. 録画処理をFFmpegで実行
以下はWindows環境を想定しています。
public class ScreenRecorder {
private Process ffmpegProcess;
public void startRecording(String outputFilePath) {
try {
ProcessBuilder pb = new ProcessBuilder(
"ffmpeg",
"-y",
"-f", "gdigrab",
"-framerate", "15",
"-i", "desktop",
"-video_size", "1280x720",
outputFilePath
);
pb.redirectErrorStream(true);
ffmpegProcess = pb.start();
System.out.println("録画開始: " + outputFilePath);
} catch (IOException e) {
e.printStackTrace();
}
}
public void stopRecording() {
if (ffmpegProcess != null) {
ffmpegProcess.destroy();
System.out.println("録画停止");
}
}
}
macOS/Linuxの場合は
"-f", "x11grab"
に変更してください。
3. Seleniumでブラウザ操作を実行
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class BrowserAutomation {
public void run() {
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
WebDriver driver = new ChromeDriver();
try {
driver.get("https://example.com");
Thread.sleep(5000); // 動作確認用に待機
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
driver.quit();
}
}
}
4. 両者を統合するMainクラス
public class Main {
public static void main(String[] args) {
ScreenRecorder recorder = new ScreenRecorder();
String output = "recording.mp4";
recorder.startRecording(output);
BrowserAutomation automation = new BrowserAutomation();
automation.run();
recorder.stopRecording();
}
}
5. 録画ファイルの確認
プログラム実行後、同じディレクトリに recording.mp4
が出力されていれば成功です。
ファイルを再生してブラウザ操作が記録されていることを確認しましょう。
よくあるエラーと対処
エラー内容 | 原因と対処 |
---|---|
"ffmpeg" は内部コマンドまたは外部コマンドとして認識されていません | FFmpegにパスが通っていない。環境変数を設定してください。 |
画面が真っ黒で録画される | 実行時のウィンドウ最前面が録画対象になります。Chromeの起動位置を調整してください。 |
Permission denied (Linux) | X11録画時、ユーザ権限とDISPLAY設定を確認してください。 |
応用:録画範囲を限定したい場合
画面全体ではなく、特定のウィンドウや範囲のみを録画することも可能です:
例: 画面左上から800x600の範囲
-f gdigrab -framerate 15 -offset_x 0 -offset_y 0 -video_size 800x600 -i desktop
※ FFmpegのオプションは環境により異なるため、詳細は公式ドキュメントを参照ください。
まとめ
JavaでSeleniumによるブラウザ操作を自動化しながら、FFmpegで画面録画も可能です。
主な利点:
- テストや検証手順を動画で保存
- エビデンス作成やレビューが視覚的にわかりやすい
- コードと録画を同時制御できる
今後、録画開始・停止のトリガーを自動化することで、より洗練されたツール構築も可能になります。