前言
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