1 https://github.com/fyhertz/libstreaming
支持rtsp、rtp协议,H264编码,主要是基于这个库进行开发
需要先了解RTSP协议、RTP协议和怎么通过RTP协议来传输H264的每一帧
RTSP协议介绍
RTP协议介绍
h264基础及rtp分包解包
libstreaming的目录
net
└── majorkernelpanic
└── streaming
├── audio 音频相关
│ ├── AACStream.java
│ ├── AMRNBStream.java
│ ├── AudioQuality.java
│ └── AudioStream.java
├── exceptions
│ ├── CameraInUseException.java
│ ├── ConfNotSupportedException.java
│ ├── InvalidSurfaceException.java
│ └── StorageUnavailableException.java
├── gl openGL相关的,当前没用到
│ ├── SurfaceManager.java
│ ├── SurfaceView.java
│ └── TextureManager.java
├── hw 用于获取编码器等信息
│ ├── CodecManager.java
│ ├── EncoderDebugger.java 获取sps和pps,NV21Convertor的初始化
│ └── NV21Convertor.java 将NV21数据转换成yuv420p
├── MediaStream.java 媒体流,视频流和音频流的父类
├── mp4 没用到
│ ├── MP4Config.java
│ └── MP4Parser.java
├── rtcp RTCP相关
│ └── SenderReport.java
├── rtp
│ ├── AACADTSPacketizer.java
│ ├── AACLATMPacketizer.java
│ ├── AbstractPacketizer.java
│ ├── AMRNBPacketizer.java
│ ├── H263Packetizer.java
│ ├── H264Packetizer.java H264数据打包
│ ├── MediaCodecInputStream.java 将h264编码器的输出包装成一个流
│ └── RtpSocket.java 发送打包好的H264数据
├── rtsp
│ ├── RtcpDeinterleaver.java
│ ├── RtspClient.java
│ ├── RtspServer.java RTSP服务器的实现
│ └── UriParser.java 解析RTSP的url工具
├── SessionBuilder.java 用于配置视频音频编码格式、分辨率等等
├── Session.java
├── Stream.java
└── video
├── CodecManager.java
├── H263Stream.java
├── H264Stream.java H264视频流,将摄像头采集的数据编码成H264码流
├── VideoQuality.java
└── VideoStream.java H264Stream的父类
2 https://github.com/fyhertz/spydroid-ipcamera
3 https://github.com/hypeapps/Endoscope
以上两个是基于libstreaming的应用,可以用来参考
4 https://github.com/EasyDSS/EasyIPCamera
EasyIPCamera是一个需要商业授权的应用,开源的代码包含了摄像头数据H264软硬编码部分,