▶轉出來長這樣
下面這張 360 全景是從轉好的 .insv 拼出來的:兩顆鏡頭的畫面接得起來、地平線是平的、 建築物是直的。在 Insta360 Studio 裡會看到同樣的結果,而且可以用 Studio 的重新取景、 FlowState 防震、儀表板等所有功能。
🌐線上版:不用安裝,在瀏覽器裡轉
用 Chrome 或 Edge 打開 線上版 →,用 Google 帳號登入後,選本機的 .OSV 檔與輸出資料夾,按下轉換就好。 轉換全部在瀏覽器裡執行,檔案不會上傳;邏輯與下載版相同,兩者對同一支檔案產生的防震與曝光資料逐位元組一致。 Safari、Firefox 不支援直接寫本機檔案,請用下載版。
1這工具做了什麼
Osmo 360 的 .OSV 其實是標準 MP4 容器:裡面放了兩條 3840×3840 的 HEVC 魚眼影像(前後鏡頭各一條)、 一條 AAC 音訊,加上 DJI 自己的資料軌(鏡頭校正參數、每秒約 1000 筆的姿態、曝光)。 Insta360 的 .insv 也是 MP4,只是檔尾多了一段 Insta360 專屬的資料,Studio 靠它才知道怎麼拼接、怎麼防震。
這個工具做三件事:
兩條 HEVC 影像與音訊直接複製進新檔案,不解碼、不重壓,所以快、而且畫質不變。
把 DJI 原廠的魚眼校正參數換算成 Insta360 的鏡頭模型,誤差不到 1 像素,接縫才對得起來。
DJI 存的是融合後的姿態,Insta360 要的是原始角速度與重力方向;工具把它反推回去並對齊時間,FlowState 才能正確防震。
檔尾資料照 Insta360 X5 的格式寫,Studio 把它當成一支 X5 拍的 8K 檔來處理。
2需要準備什麼
| 項目 | 說明 |
|---|---|
| Python 3.9 以上 | macOS 內建就有;Windows 到 python.org 下載,安裝時勾選 Add Python to PATH。 |
| numpy | 在終端機執行 pip install numpy(macOS 用 pip3)。 |
| ffmpeg + ffprobe | macOS:brew install ffmpeg;Windows:winget install Gyan.FFmpeg,裝完重開終端機。 |
| Insta360 Studio | 實測版本 6.0.6(macOS)。從 Insta360 官網免費下載,不需要有 Insta360 相機。 |
| 硬碟空間 | 輸出檔跟來源差不多大(約少 3%),轉之前確認有足夠空間。 |
3快速開始
下載並解壓縮後,在終端機(macOS)或命令提示字元 / PowerShell(Windows)執行:
# macOS / Linux
cd osv2insv
python3 osv2insv.py /path/to/CAM_20261004101816_0011_D.OSV
# Windows
cd osv2insv
python osv2insv.py D:\DCIM\CAM_20261004101816_0011_D.OSV
轉好的檔案會放在跟來源同一個資料夾,檔名像 VID_20261004_101816_00_011.insv。
然後打開 Insta360 Studio,把它匯入就可以了。
convert.command 上;Windows 拖到 convert.bat 上。
一次可以拖多個檔。
python3 osv2insv.py 檔案.OSV --seconds 30,確認 Studio 開得起來、防震正常,再轉整支。
4逐步操作
-
把 Osmo 360 的檔案複製到電腦
需要的只有.OSV檔(CAM_日期時間_流水號_D.OSV)。旁邊的.LRF是低解析度預覽,不需要。 -
執行轉換
照上面「快速開始」的指令,或把檔案拖到啟動腳本上。終端機會印出類似這樣的訊息:
「fit err」是鏡頭模型換算誤差,正常在 1 像素以內。== /Users/me/dji/CAM_20261004101816_0011_D.OSV lens1: MEI fx=3139.666 ... fit err 0.684px lens2: MEI fx=3148.044 ... fit err 0.449px imu: 237486 samples, 1004.0 Hz, ... wrote /Users/me/dji/VID_20261004_101816_00_011.insv (4.15 GB, 7089 frames, ...) -
匯入 Insta360 Studio
Studio 左上角「輸入」選轉好的 .insv,或直接拖進素材區。它會被當成一支 X5 的 8K 檔, 右側「拼接」「防手震」「儀表板」等功能都可以用。
轉換後的檔案在 Insta360 Studio 6.0.6 中播放,右側 FlowState 防震已開啟 -
防震與拼接設定
「防手震」面板的 FlowState 保持開啟即可。接縫若有輕微疊影,用「拼接」面板的拼接校準重算一次。 -
照平常的方式剪輯、輸出
重新取景、關鍵影格、儀表板、輸出 4K/8K 都跟處理 Insta360 自家檔案一樣。
5參數說明
| 參數 | 說明 |
|---|---|
-o 資料夾 | 輸出位置。預設與來源檔同一個資料夾。 |
--seconds N | 只轉前 N 秒,拿來快速試檔。 |
--num NNN | 指定輸出檔名最後的流水號。預設沿用 OSV 的流水號;同一支檔要轉多個版本比較時用。 |
--shift-ms X | 陀螺儀時間位移(毫秒)。預設 −10,是實測最穩的值(0 會明顯晃,−16 與 −22 比 −10 差)。除非你要做實驗,不必動。 |
--roll2 X | 第二顆鏡頭額外的 roll 角(度)。接縫微調用,預設 0。 |
可以一次給多個 .OSV 檔,會依序轉。
6已知限制
- 實測範圍:Osmo 360(韌體 10.00.25.29)8K 30fps、10-bit,Insta360 Studio 6.0.6(macOS)。其他錄影模式(4K/6K、高幀率、D-Log M)與 Avata 360 沒有測過,鏡頭校正的換算方式相同,但不保證。
- 接縫:兩顆鏡頭之間約 0.5° 的相對旋轉目前填 0(Insta360 這個欄位的正負號慣例未知),遠景在接縫處最多可能差 16 像素。Studio 的拼接校準可以修。
- 縮圖:沒有產生 Insta360 的縮圖紀錄,Studio 素材庫可能顯示空白縮圖,不影響剪輯。
- 方向鎖定/傾斜還原:Studio 防手震面板的這兩個選項呈灰色不可選,原因還沒查。
- 檔名:輸出檔名必須維持
VID_日期_時間_00_流水號.insv的格式,改名可能讓 Studio 不認。 - D-Log M:色彩模式照原樣搬過去,Studio 不會自動套 DJI 的 LUT;拍 D-Log M 的檔要自己調色。
7常見問題
畫面在 Studio 裡抖得很厲害
先確認用的是 v1.0.0(陀螺儀時間位移預設 −10 ms)。如果還是抖,用--seconds 30 --num 901 --shift-ms -6 與 --num 902 --shift-ms -14 各轉一支 30 秒的,比較哪支穩,再把那個值用在整支檔。
Studio 說檔案格式不支援 / 開不起來
檢查檔名是否被改過、是否完整轉完(終端機最後一行要有wrote ...)。也確認 ffmpeg 版本不要太舊(6.0 以上)。
執行時出現 ffprobe: command not found
ffmpeg 沒裝好或不在 PATH 上。macOS 用 brew install ffmpeg;Windows 用 winget install Gyan.FFmpeg 後重開終端機,執行 ffprobe -version 確認。
接縫有疊影
距離鏡頭 1 公尺內的東西(手臂、把手)本來就會有視差疊影,任何 360 相機都一樣。遠景若也對不齊,用 Studio 的拼接校準;再不行試--roll2 0.5 或 --roll2 -0.5 各轉一支比較。
會不會把我的影片上傳到哪裡?
不會。整個工具是幾支 Python 腳本,只讀你指定的檔案、在本機寫出新檔案,沒有任何網路連線。為什麼不直接用 DJI Studio?
可以,DJI Studio 的重新取景與防震都很好。這個工具是給已經習慣 Insta360 Studio 的工作流程、或想用 Studio 特有功能(例如儀表板樣式、既有的專案範本)的人。8技術細節
給想改程式或移植到其他機型的人。所有慣例都是實測定出來的,不是猜的:
- 鏡頭模型:DJI 用 Kannala–Brandt 五項多項式,Insta360 用 MEI 統一模型(ξ=2)加三項徑向畸變。用最小平方法在 0–100° 範圍擬合,誤差 <1 像素。參考座標直接用 7680×3840、裁切 3840→3840,避開 X5 原生 5376/5312 的縮放歧義。
- DJI 姿態四元數:欄位順序 (w,x,y,z)、body→world,座標是航空慣例 x 前、y 右、z 下——跟鏡頭校正用的 body 座標(x 右、y 前、z 上)不是同一套。這是用影片幀間位移與姿態增量做相關分析定出來的;弄錯會讓防震修正錯軸、越修越晃。
- Insta360 X5 的 IMU 軸向:以第一條影像的座標 I(x 右、y 下、z 鏡頭方向)表示,imu = (I.y, I.z, I.x),陀螺儀與加速度計同一套。由一支真的 X5 檔的畫面位移 vs 陀螺儀、重力 vs 地平線定出。
- 時間:陀螺儀重新取樣到整數 1 ms 間隔(真 X5 如此),時間戳整體提早 10 ms。以影片畫面位移為基準量測,轉出的陀螺儀能解釋 98% 的俯仰軸幀間移動,時間誤差約 2 ms、比例 1.03。
- 檔尾結構:MP4 之後接一個
instbox,裡面是 Insta360 的紀錄區(Exposure、Gyro、Metadata protobuf),最後是 30 格的索引表與 72 位元組的 footer(含 magic8db42d69…)。Metadata 以一支真的 X5 檔為範本,序號等識別欄位已清空。
更完整的筆記在下載包的 NOTES.md(線上版)。驗證用的腳本(接縫對齊、重力水平、陀螺儀 vs 畫面位移)也都在包裡。
參考與致謝
- OpenOSV:.OSV 格式與 DJI 鏡頭模型的文件。
- insvtools、insvtool、telemetry-parser:.insv 檔尾格式與 Metadata 欄位。
- insv-stitch:X5 鏡頭模型與 IMU 紀錄格式。
- X5 範本檔來自 Bennetts BikeSocial 的 Insta360 X5 評測公開提供的原始檔。
9下載與授權
內容:osv2insv.py(主程式)、insvlib.py、osvmeta.py、template_x5_metadata.bin、
convert.command / convert.bat(拖放啟動)、驗證腳本、README、NOTES。
下載與線上版都需要先用 Google 帳號登入 segaa.net 的統一帳號(跟皮皮GO、其他下載一樣),只取得 email 與名稱,用來統計使用人數;登入過一次即可。
MIT 授權,可自由修改散布。這是個實驗性工具,與 DJI、Insta360 無關;用在正式案子前請先用短片測過。