有沒有一種可能,就是我用A手機當作拍攝機,用另外一台手機當作是畫面螢幕+快門?
有沒有這種APP?是否我可以自行開發?
如果自己開發,有可能做到"非常簡單的介面"嗎?
例如:
拍攝機A,點入該APP,畫面產生一個QRCODE
操控機B,掃描QRCODE,就自動連好,並且使用browser(不需要也安裝app)畫面出現"A機螢幕"+"快門"。就可以開始操作。
---------------------------
老師,完全可行,而且您描述的操作流程相當合理:
A 手機安裝拍攝 App → 顯示 QR Code
B 手機掃描 QR Code → 直接開啟瀏覽器
B 顯示 A 的即時取景畫面與快門按鈕 → 遙控 A 拍照
這不是只能停留在概念,而是可以實際開發成一個介面非常簡潔的學生專題或實驗室工具。
市面上確實有「一支手機當相機、另一支手機當遙控器」的產品,例如:
SayCheese Remote Camera:可由另一支手機觀看即時畫面並遙控拍照。
Remote Shutter: Camera Connect:支援即時預覽、前後鏡頭切換、閃光燈、計時與錄影。
Blackmagic Camera:偏向專業錄影,可用另一台手機或平板監看及控制多台拍攝手機。(Google Play)
但這些工具多半有以下差異:
A、B 兩台都要安裝 App。
操作介面偏向專業攝影。
配對流程不一定是掃一次 QR Code 就完成。
未必支援「B 完全不安裝 App,只使用瀏覽器」。
因此,您提出的版本仍有明確特色:
拍攝端安裝,操控端零安裝。
這很適合臨時拍攝、教學、活動紀錄、實驗室錄影、訪談或多人輪流操作。
系統可以分為三個部分。
A 手機 App 負責:
啟動後鏡頭
顯示本機取景畫面
建立一次性的拍攝房間
產生 QR Code
將低延遲預覽影像傳給 B
接收 B 傳來的「拍照」指令
使用 A 手機原生相機拍攝高畫質照片
將照片儲存在 A 手機
Android 可使用官方的 CameraX。CameraX 可以同時處理取景預覽與高品質照片拍攝,並支援自動對焦、自動曝光與自動白平衡。(Android Developers)
若要支援 iPhone,則使用 Apple 的 AVFoundation。它可以控制裝置相機、處理影音串流與拍攝影像。(Apple Developer)
B 掃描 QR Code 後,開啟類似以下網址:
https://camera.example.com/control/8K7X2M
頁面只需要顯示:
┌─────────────────────────┐
│ │
│ A 手機即時畫面 │
│ │
│ │
├─────────────────────────┤
│ ● 拍照 │
└─────────────────────────┘
初版甚至只需要:
即時畫面
拍照按鈕
連線狀態
不需要帳號、不需要選單,也不需要讓 B 安裝任何程式。
A 到 B 的即時畫面,可使用 WebRTC 傳輸。
WebRTC 是瀏覽器原生支援的即時影音通訊標準,可以在手機 App 與瀏覽器之間傳送:
即時影像
聲音
控制訊息
現代瀏覽器普遍支援 WebRTC;除了影音串流,也可以透過 RTCDataChannel 傳送任意控制資料,例如「拍照」「切換鏡頭」或「開始錄影」。(WebRTC)
例如 B 按下快門時,實際傳送的可能只是:
{
"command": "take_photo"
}
A 收到後,呼叫原生相機的拍照功能。
不能把 B 瀏覽器上看到的畫面截圖,當作最後照片。
正確流程是:
A 相機
├─ 低解析度預覽串流 → WebRTC → B 手機螢幕
└─ 高解析度相機拍攝 → 儲存在 A 手機
例如:
B 預覽:720p、15 fps
A 實際照片:原始 12 MP 或手機可支援的解析度
如此才能同時兼顧:
即時性
網路流量
低延遲
照片畫質
A 開啟 App 時:
向伺服器申請臨時房間。
伺服器產生隨機識別碼。
A 顯示包含連線網址的 QR Code。
B 掃描後進入該房間。
A 顯示「控制器已連線」。
開始傳送即時畫面。
QR Code 內容例如:
https://camera.example.com/c/72f8a9c1
更安全的做法是加上短效權杖:
https://camera.example.com/c/72f8a9c1?t=R4K9QW
這個權杖可以設定:
5 分鐘內必須連線
只能使用一次
A 關閉 App 後立即失效
同一時間只能有一台 B 控制
如此可避免其他人猜到網址後偷看或控制相機。
需要,但初版伺服器不必負責傳送全部影像。
伺服器主要負責:
建立房間
A、B 身分配對
WebRTC signaling
傳遞連線資訊
管理短效 token
顯示連線狀態
WebRTC 建立連線時,需要交換連線描述與 ICE candidate,這個過程稱為 signaling;WebRTC 本身並未限定 signaling 必須使用何種技術,可以用 WebSocket、HTTP 或其他方式完成。(WebRTC)
您的既有架構可以考慮:
A 手機 App
│
├── Supabase Realtime:房間與 signaling
│
└── WebRTC:即時預覽與快門指令
│
▼
B 手機瀏覽器
但若兩台手機位於不同網路,或校園、防火牆、行動網路環境較複雜,WebRTC 的直接連線有時會失敗。因此正式版本最好增加 TURN server 作為中繼;WebRTC 官方也將 TURN 視為處理無法直接點對點連線時的重要基礎設施。(WebRTC)
我建議第一版只做五項功能。
┌──────────────────────┐
│ 遙控拍攝機 │
│ │
│ [ QR Code ] │
│ │
│ 等待控制器連線…… │
│ │
│ [結束拍攝] │
└──────────────────────┘
B 連線後:
控制器已連線
拍攝照片:3 張
┌──────────────────────┐
│ │
│ A 手機即時畫面 │
│ │
│ │
├──────────────────────┤
│ ● 拍照 │
└──────────────────────┘
拍照成功後短暫顯示:
✓ 已拍攝,照片儲存在 A 手機
這樣的介面確實可以做到「幾乎不需要教學」。
第一版最好只支援 Android 拍攝端,B 則支援任何現代手機瀏覽器。
建議架構:
部分
建議技術
A 拍攝端
Android Kotlin
相機控制
CameraX
B 控制端
HTML、CSS、JavaScript
即時預覽
WebRTC
快門控制
WebRTC DataChannel
配對
QR Code+短效 token
Signaling
Supabase Realtime
網頁部署
GitHub Pages 或一般 HTTPS 網站
TURN
後期加入 coturn 或雲端 TURN
不建議第一版同時做 Android 與 iPhone,因為兩者的原生相機 API、權限與背景執行限制不同。先把 Android 版本做穩,再考慮 iOS。
A 顯示 QR Code
B 掃碼
B 看見 A 的即時畫面
B 可按快門
照片儲存在 A
前後鏡頭切換
3 秒/10 秒倒數
閃光燈
連線中斷提示
已拍照片數量
點擊畫面對焦
縮放
開始/停止錄影
水平儀
電量與儲存空間顯示
TURN 中繼
一次性安全 token
自動重新連線
防止多控制器搶奪
拍攝紀錄
相容性測試
您的構想不但可行,而且設計邏輯很好。真正有價值的地方不是「遠端快門」本身,而是這個組合:
原生 App 保留 A 手機完整相機能力;B 只用瀏覽器,透過 QR Code 零設定連線。
我會把它定位成一個規模適中的學生專題:核心技術包括 CameraX、WebRTC、QR Code 配對、即時控制與簡易 UX,但使用者看到的介面可以極度單純。最小可行版本不需要相簿同步、不需要帳號、不需要雲端儲存,也不需要複雜的攝影參數。