Open1
【メモ】Insta360で3D Gaussian Splattingを作成

Insta360 INSV から PostShot へのワークフロー
.insv
ファイルから mp4 への変換
1. 変換方法の選択
- Insta360 公式アプリケーションを使用
- ffmpeg を使用(以下のコマンド例)
ffmpeg による変換コマンド
基本変換コマンド
単一ファイル変換(4K以下の録画用)- 8K出力
ffmpeg -i input.insv -vf "v360=dfisheye:equirect:ih_fov=190:iv_fov=190:w=7680:h=3840:interp=lanczos" \
-c:v libx264 -preset slow -crf 18 -pix_fmt yuv420p output_8k.mp4
5.7K録画用(デュアルファイル結合)- 8K出力
*00*
と*10*
ファイルを結合して8K出力
ffmpeg -i video_00.insv -i video_10.insv -filter_complex \
"[0:v][1:v]hstack=inputs=2[dual]; \
[dual]v360=dfisheye:equirect:ih_fov=190:iv_fov=190:w=7680:h=3840:interp=lanczos[out]" \
-map "[out]" -c:v libx264 -preset slow -crf 18 -pix_fmt yuv420p output_8k.mp4
解像度別変換コマンド
4K (3840×1920)
ffmpeg -i input.insv -vf "v360=dfisheye:equirect:ih_fov=190:iv_fov=190:w=3840:h=1920:interp=lanczos" \
-c:v libx264 -preset slow -crf 18 -pix_fmt yuv420p output_4k.mp4
2K (2048×1024)
ffmpeg -i input.insv -vf "v360=dfisheye:equirect:ih_fov=190:iv_fov=190:w=2048:h=1024:interp=lanczos" \
-c:v libx264 -preset slow -crf 18 -pix_fmt yuv420p output_2k.mp4
Full HD (1920×1080) - 16:9用にクロップ
ffmpeg -i input.insv -vf "v360=dfisheye:equirect:ih_fov=190:iv_fov=190:w=1920:h=1080:interp=cubic" \
-c:v libx264 -preset slow -crf 18 -pix_fmt yuv420p output_fhd.mp4
品質別設定(8K出力)
最高品質(処理時間長)
ffmpeg -i input.insv -vf "v360=dfisheye:equirect:ih_fov=190:iv_fov=190:w=7680:h=3840:interp=lanczos" \
-c:v libx264 -preset veryslow -crf 15 -b:v 100M -pix_fmt yuv420p \
-movflags +faststart output_8k_best.mp4
バランス品質(推奨)
ffmpeg -i input.insv -vf "v360=dfisheye:equirect:ih_fov=190:iv_fov=190:w=7680:h=3840:interp=lanczos" \
-c:v libx264 -preset slow -crf 18 -b:v 50M -pix_fmt yuv420p output_8k_balanced.mp4
高速処理(品質低下)
ffmpeg -i input.insv -vf "v360=dfisheye:equirect:ih_fov=190:iv_fov=190:w=7680:h=3840:interp=linear" \
-c:v libx264 -preset fast -crf 23 -pix_fmt yuv420p output_8k_fast.mp4
2. mp4(エクイレクタングラー形式)からフレーム画像の生成
ffmpeg による全方位フレーム抽出
推奨設定(高重複率)
INPUT_VIDEO="input_equirect.mp4"
MAX_JOBS=4
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
OUTPUT_DIR="frames_recommended_high_overlap_${TIMESTAMP}"
mkdir -p "$OUTPUT_DIR"
echo "✅ Output directory: $OUTPUT_DIR"
job_count=0
for pitch in -45 0 45 90 -90; do
for yaw in $(seq 0 20 340); do
while [ $job_count -ge $MAX_JOBS ]; do
wait -n 2>/dev/null || { job_count=0; break; }
job_count=$((job_count-1))
done
ffmpeg -hide_banner -loglevel error -stats -i "$INPUT_VIDEO" \
-vf "v360=e:rectilinear:yaw=$yaw:pitch=$pitch:h_fov=90:v_fov=90:w=3072:h=3072:interp=lanczos,fps=1" \
-q:v 1 -pix_fmt yuv420p "${OUTPUT_DIR}/pitch$(printf "%+03d" $pitch)_yaw$(printf "%03d" $yaw)_%04d.jpg" &
job_count=$((job_count+1))
echo " [${job_count}/${MAX_JOBS}] Processing: pitch=$pitch, yaw=$yaw"
done
done
wait
echo "✅ All processes completed."
軽量版(水平一周のみ)
INPUT_VIDEO="input_equirect.mp4"
MAX_JOBS=8
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
OUTPUT_DIR="frames_lightweight_test_${TIMESTAMP}"
mkdir -p "$OUTPUT_DIR"
echo "✅ Output directory: $OUTPUT_DIR"
job_count=0
for pitch in 0; do
for yaw in $(seq 0 30 330); do
while [ $job_count -ge $MAX_JOBS ]; do
wait -n 2>/dev/null || { job_count=0; break; }
job_count=$((job_count-1))
done
ffmpeg -hide_banner -loglevel error -stats -i "$INPUT_VIDEO" \
-vf "v360=e:rectilinear:yaw=$yaw:pitch=$pitch:h_fov=90:v_fov=90:w=1536:h=1536:interp=lanczos,fps=1" \
-q:v 2 -pix_fmt yuv420p "${OUTPUT_DIR}/pitch$(printf "%+03d" $pitch)_yaw$(printf "%03d" $yaw)_%04d.jpg" &
job_count=$((job_count+1))
echo " [${job_count}/${MAX_JOBS}] Processing: pitch=$pitch, yaw=$yaw"
done
done
wait
echo "✅ All processes completed."
軽量版高画質(水平一周のみ・高解像度)
INPUT_VIDEO="input_equirect.mp4"
MAX_JOBS=12
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
OUTPUT_DIR="frames_lightweight_test_${TIMESTAMP}"
mkdir -p "$OUTPUT_DIR"
echo "✅ Output directory: $OUTPUT_DIR"
job_count=0
for pitch in 0; do
for yaw in $(seq 0 30 330); do
while [ $job_count -ge $MAX_JOBS ]; do
wait -n 2>/dev/null || { job_count=0; break; }
job_count=$((job_count-1))
done
ffmpeg -hide_banner -loglevel error -stats -i "$INPUT_VIDEO" \
-vf "v360=e:rectilinear:yaw=$yaw:pitch=$pitch:h_fov=90:v_fov=90:w=3072:h=3072,fps=1" \
-q:v 2 -pix_fmt yuv420p "${OUTPUT_DIR}/pitch$(printf "%+03d" $pitch)_yaw$(printf "%03d" $yaw)_%04d.jpg" &
job_count=$((job_count+1))
echo " [${job_count}/${MAX_JOBS}] Processing: pitch=$pitch, yaw=$yaw"
done
done
wait
echo "✅ All processes completed."
3. RealityCapture 2.0 での処理
-
画像の読み込み
- 生成したフレーム画像を読み込む
-
Alignment の作成
- カメラポジションの推定と調整
-
Point Cloud のエクスポート
- 点群データの出力
-
設定ファイルのエクスポート
- プロジェクト設定の保存
-
ファイルの配置
- PLYファイル
- CSVファイル
- 画像ファイル
- 上記を同じディレクトリに配置
4. PostShot での読み込み
- 準備したファイルをドラッグアンドドロップで読み込む
補足情報
- エクイレクタングラー(Equirectangular): 正距円筒図法による360度パノラマ形式
- パラメータ調整: 用途に応じて解像度、品質、処理速度のバランスを調整
-
並列処理:
MAX_JOBS
パラメータで同時実行数を制御(CPUコア数に応じて調整)