video-stabilization について
video-stabilizationは、each::senseで映像のカメラ揺れを抑えるスキルです。映像制作者向けに、弱・標準・強の補正モードを備え、滑らかさとクロップ量のバランスを調整できます。
主な機能
- 01カメラ揺れと細かな振動の低減
- 02手持ち映像やアクション映像の補正
- 03歩行・ドローン・車載映像への対応
- 04弱・標準・強の補正モード
- 05補正効果とクロップ量の調整
活用シーン
- 01スマートフォンの手持ち映像を滑らかにする
- 02歩行や走行動画の上下動を抑える
- 03ドローンやドライブレコーダー映像を安定させる
- 04揺れを減らしつつドキュメンタリー風の動きを保つ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ eachlabs/ skills --skill video-stabilizationインストール後、Claude Code で/video-stabilizationを入力して読み込まれたか確認します。
同梱ファイルreferences/SSE-EVENTS.md
詳細
動画の手ブレ補正
each::sense を使用して、手ブレのある映像を補正します。このスキルでは、インテリジェントな動き補正を適用してカメラの揺れを除去し、手持ち撮影の映像を滑らかにして、さまざまなソースからプロ品質の安定した動画を作成します。
特徴
- 手ブレ除去:わずかに不安定な映像の基本的なカメラの揺れを補正します
- 手持ち撮影の補正:スマートフォンやカメラで撮影した映像の自然な手の動きを滑らかにします
- アクションカメラ:動きの激しい GoPro やアクションカメラの映像を補正します
- 歩行/走行:撮影中の動きによる上下動や揺れを補正します
- ドローン映像:風や振動の影響を受けた空撮映像を滑らかにします
- 車両の映像:ドライブレコーダーや車内録画の映像を補正します
- 暗所:厳しい照明条件で撮影された手ブレのある映像に対応します
- ショット固定:三脚で撮影したような映像にするため、強力に補正します
- 微調整:揺れを軽減しながら、自然なカメラの動きを維持します
- クロップの最適化:補正の強さとフレームのクロップ量のバランスを取ります
クイックスタート
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this shaky video, remove the camera shake"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/shaky-video.mp4"]
}'
補正モード
| モード | 説明 | 最適な用途 |
|---|---|---|
| 微調整 | 軽い補正で、自然な動きを維持します | ドキュメンタリー、Vlog スタイル |
| 標準 | バランスの取れた手ブレ除去 | 汎用 |
| 強力 | 最大限に補正し、ショットを固定します | プロ品質、三脚撮影のような映像 |
使用例
1. 基本的な手ブレ除去
わずかに不安定な映像の、簡単なカメラの揺れ補正です。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this video and remove the camera shake. Apply standard stabilization."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/shaky-footage.mp4"]
}'
2. 手持ち撮影映像の補正
スマートフォンやカメラで撮影した映像の自然な手の動きを滑らかにします。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "This is handheld smartphone footage. Stabilize it to look smoother while keeping it natural, not too robotic. Remove the jitter from hand movement."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/handheld-phone-video.mp4"]
}'
3. アクションカメラ映像の補正
エクストリームスポーツを撮影した、動きの激しい GoPro やアクションカメラの映像を補正します。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this GoPro action camera footage. It has significant shake from mountain biking. Apply strong stabilization to smooth out the bumps while preserving the sense of motion."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/gopro-mtb-footage.mp4"]
}'
4. 歩行/走行映像の補正
徒歩で移動しながら撮影した映像から、上下動や縦方向の揺れを除去します。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Fix this walking footage. Remove the up and down bounce from each step while keeping the forward motion smooth. The camera was handheld while walking through a market."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/walking-market-footage.mp4"]
}'
5. ドローン映像の平滑化
風や振動、ジンバルの問題の影響を受けた空撮映像を滑らかにします。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this drone footage. There is micro-vibration and some wind shake affecting the shot. Make it smooth and cinematic for a real estate showcase video."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/drone-aerial-footage.mp4"]
}'
6. 車/車両映像の補正
ドライブレコーダー、車内、または車両に取り付けたカメラの映像を補正します。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this dashcam footage from a car driving on rough roads. Remove the vibration and bumps from the road while keeping the driving perspective stable."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/dashcam-rough-road.mp4"]
}'
7. 暗所で撮影した手ブレ映像
厳しい低照度条件で撮影された、手ブレのある映像に対応します。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this low light concert footage. It was shot handheld at night with significant shake. Be careful with the stabilization as low light footage can show more artifacts. Prioritize smooth motion over aggressive correction."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/concert-lowlight-shaky.mp4"]
}'
8. 強力な補正(ショット固定)
三脚で撮影したようにショットを固定する、最大限の補正です。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Apply aggressive stabilization to lock this shot completely. I want it to look like it was shot on a tripod. Remove all camera movement and shake. It is okay to crop more of the frame if needed for maximum stability."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/interview-handheld.mp4"]
}'
9. 微調整(自然な動きを維持)
目立つ揺れだけを軽減し、自然なカメラの動きを維持します。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Apply subtle stabilization to this documentary footage. I want to keep the natural handheld feel and intentional camera movements, but remove only the unwanted micro-shakes and jitter. Do not make it look too smooth or artificial."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/documentary-handheld.mp4"]
}'
10. 補正とクロップの最適化
フレームのクロップを最小限に抑えながら、補正の強さとのバランスを取ります。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this footage but optimize for minimal cropping. The framing is important and I cannot lose too much of the edges. Find the best balance between stabilization quality and preserving the original frame as much as possible."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"video_urls": ["https://example.com/tight-framing-shaky.mp4"]
}'
モードの選択
処理を開始する前に、ユーザーに確認してください。
「処理速度と最高品質のどちらを優先しますか?」
| モード | 最適な用途 | 速度 | 品質 |
|---|---|---|---|
max | 最終納品物、プロ向けプロジェクト | 遅め | 最高 |
eco | クイックプレビュー、ドラフトの確認、大量処理 | 速め | 良好 |
複数ターンでの補正ワークフロー
session_id を使用して、補正設定を繰り返し調整します。
# Initial stabilization
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this shaky video footage"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "stabilize-project-001",
"video_urls": ["https://example.com/shaky-video.mp4"]
}'
# Request adjustment
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "The stabilization is too aggressive, it looks artificial. Can you apply a more subtle stabilization that keeps some natural movement?"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "stabilize-project-001"
}'
# Further refinement
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Good, but now there is too much cropping. Can you reduce the crop while maintaining similar stabilization?"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "stabilize-project-001"
}'
複数動画のバッチ処理
複数の動画を同じ設定で処理します。
# Video 1
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this video with medium strength stabilization"}],
"model": "eachsense/beta",
"stream": true,
"mode": "eco",
"video_urls": ["https://example.com/clip1.mp4"]
}'
# Video 2
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this video with medium strength stabilization"}],
"model": "eachsense/beta",
"stream": true,
"mode": "eco",
"video_urls": ["https://example.com/clip2.mp4"]
}'
# Video 3
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Stabilize this video with medium strength stabilization"}],
"model": "eachsense/beta",
"stream": true,
"mode": "eco",
"video_urls": ["https://example.com/clip3.mp4"]
}'
ベストプラクティス
入力動画の品質
- 解像度:高解像度の映像ほど、補正結果が向上します
- フレームレート:フレームレートが高い映像(60fps 以上)ほど、補正が滑らかになります
- コーデック:高品質のソースファイルを使用し、強く圧縮された入力は避けてください
補正設定
- 微調整から開始:軽めの補正から始め、必要に応じて強めてください
- クロップを考慮:強力に補正するほど、クロップ量が増えます
- スタイルを合わせる:同じプロジェクト内のクリップでは、補正の設定を統一してください
よくあるシナリオ
| シナリオ | 推奨される方法 |
|---|---|
| インタビュー/トーク映像 | 強力な補正/ショット固定 |
| ドキュメンタリー/Vlog | 微調整、自然な仕上がり |
| スポーツ/アクション | 中程度、動きを維持 |
| ドローン/空撮 | 中程度から強め |
| ウォーキングツアー | 中程度、上下動を軽減 |
| 暗所 | 微調整、アーティファクトを回避 |
動画の手ぶれ補正に関するプロンプトのヒント
手ぶれ補正を依頼する際は、次の詳細を含めてください。
- ソースの種類:映像を撮影したカメラやデバイスは何ですか?
- 手ぶれの原因:歩行、乗り物、風、手持ち撮影など
- 希望する仕上がり:固定されたショット、自然な雰囲気、滑らかでありながら躍動感のある仕上がり
- クロップの許容範囲:構図は重要ですか、それとも柔軟に変更できますか?
- 用途:ソーシャルメディア、プロ向け、ドキュメンタリーなど
プロンプトの構成例
"Stabilize this [source type] footage.
The shake is caused by [cause].
I want [desired result] stabilization.
[Cropping preference].
This is for [use case]."
エラー処理
| エラー | 原因 | 解決策 |
|---|---|---|
Failed to create prediction: HTTP 422 | 残高不足 | eachlabs.ai でチャージしてください |
| 動画形式がサポートされていません | 互換性のないコーデック | MP4/H.264 に変換してください |
| タイムアウト | 動画の処理に時間がかかる | クライアントのタイムアウトを最低 10 分に設定してください |
| クロップが過剰 | 手ぶれが大きすぎる | subtle モードを使用するか、クロップ範囲を広げてください |
関連スキル
each-sense- コア API ドキュメントvideo-edit- 一般的な動画編集機能video-generation- AI 動画生成