Akagi201
1/8/2015 - 2:17 AM

ipcamera-streaming-framework.md

IP Camera Streaming Framework


不同层的数据类型

Layersvideoaudio
Streaming ProtocolRTMP / TCP / UDP
Muxerflv / ts
EncoderH.264G711 / AAC
Raw dataYUVPCM
Hardware interfaceCameraAudio in

流媒体框架

摄像头专用芯片(海思, 安霸, TI)

  • 海思自己的mpp
  • 安霸sdk
  • TI提供了gstreamer支持

通用芯片(树莓派, 全志A20)

  • 通用OpenMAX标准接口, 树莓派支持
  • 全志A20 CedarX

流媒体库

  • rtmpdump
  • ffmpeg

一些问题

  • 摄像头专用芯片的SDK不开源, 如安霸SDK网上很难找到完整SDK.
  • 我们提供的SDK深入到哪一层. 面向已有成熟产品, 还是固件开发能力弱的小团队.
  • 开发板方面, 目前找到一块海思的开发板, 安霸开发板网络上买不到.
  • 设备方面, 大多端口开放较少, 比如萤石, 虽然rtsp端口开放, 但取流地址不公开. 最好能跟设备厂商合作, 提供的设备适合开发, 不用hack. 目前找到一台海思3518e芯片的摄像头, 开放了telnet端口.
  • AAC编码是否要做

我们的sdk的方向

  • rtsp取流, rtmp推流. 目前通过ffmpeg在做, 推公网, 网络阻塞情况下, 会发送失败, 停止推流. 使用ffmpeg的API接口, 底层socket的参数跟错误处理等不好控制.
  • 从内存取流, rtmp推流. 定义个回调函数, 从一块内存来取流, 音频, 视频各自封装flv, 通过rtmp推流.
  • 基于各个芯片SDK和相应的流媒体框架取流跟推流.

我要做的事情?

  • 用librtmp取代ffmpeg的rtmp推流函数
  • 基于海思sdk, 编码推流