前言
Android的攝像頭的功能擴展越來越豐富, 近段時間因爲涉及到RTSP推送的需求, 稍微瞭解記錄踩過的坑.
服務端
純JAVA開發的服務端項目, 幾年前用過, 時至今日, 依然好用.
- spydroid-ipcamera
- 使用高階說明
如: 使用音頻和視頻->rtsp://xxx.xxx.xxx.xxx:8086?aac&h264
客戶端
客戶端, PC上建議用VLC, 在調試很方便, 功能也強大.
手機端, 這個重點說說, 畢竟, 在幾年前, 踩過較深的坑就是它:
- Awesome Open Source 從這裏找到開源的項目
然後, 嘗試後的結果是:
- SmarterStreaming [x] 太大了, 下不下來, 沒耐心…
- EasyPlayer-RTSP-Android [v] 需要申請APPID, 國內開源SDK的套路
- EasyPlayer-RTSP-Android-APK [v] 需要申請APPID, 國內開源SDK的套路
- RTSP.Player.Android [v] 最終採用這個, 效果也不錯, 但兼容性沒測過.
延遲
這是個老生常談的問題
- 手機端的VideoView/MeidaPlayer控件, 在播放後, 經常會發現有5秒的延遲
- 在PC上使用VLC測試, 默認設置的情況下, 會在2秒左右
最開始, 懷疑是服務端的問題, 折騰了不少時間, 只能說, 還是太年輕了
- VLC中連接的設置:
緩存適當降低, 如, 把1000ms 改爲200ms - 手機端, 就要找到好用的播放控件或工具
RTSPPlayer: 這個項目, 曾經效果還不錯, 只是最近測試發現, 經常連不上或連上後沒圖像或花屏, 接口中, 延時可以支持100ms左右.
vlc-android: 怎麼說呢, 強大, 但要很能折騰, 曾經下載並編譯過, 最終出來的效果卻不盡如人意(跟官方發佈的APK表現不同)
擴展
圖像格式轉換
Android YUV圖像轉換算法和檢測工具
YUV420P、YUV420SP、NV12、NV21和RGB互相轉換並存儲爲JPEG以及PNG圖片
GIT clone失敗
$ git clone https://github.com/tsingsee/EasyPlayer-RTSP-Android.git
正克隆到 'EasyPlayer-RTSP-Android'...
remote: Enumerating objects: 50, done.
remote: Counting objects: 100% (50/50), done.
remote: Compressing objects: 100% (29/29), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: 過早的文件結束符(EOF)
fatal: index-pack failed
git clone時RPC failed; curl 18 transfer closed with outstanding read data remaining