android recorder通过rtp发送h264视频数据给vlc播放
android player通过rtp协议接收h264视频数据播放
Android recorder通过rtp发送aac数据给vlc播放
Android player实现播放来自rtp连接的aac数据的player
目录
一、接收数据
rtp包的组包与拆包已经由rtp 库完成,这里可以从rtp库的回调直接接收到原始发送的数据。
videoRtpWrapper.open(40018, 96, 90000);
videoRtpWrapper.setCallback { data, len ->
Log.d("dragon_video", "received video data $len")
nalu.appended(data, len) { buffer, offset, size ->
videoBufferQueue.put(buffer);
videoBufferSizeQueue.put(size);
}
}
我们可以看到rtp payload指定的类型是96,96代表的就是h264视频数据类型。这里监听的是偶数端口40018,奇数端口留给rtcp使用。我们接收到的数据是nalu分片数据,我们还需要把分片数据组成完整的nalu数据。
二、分片组包
我们使用NaluData这个工具类进行组包操作,相应的他也提供了拆包方法给发送端使用。
class NaluData {
private val F_MASK = 0b10000000.toByte()
private val NRI_MASK = 0b01100000.toByte()
private val TYPE_MASK = 0b00011111.toByte()
private val START_MASK = 0b10000000.toByte()
private val END_M