librtmp发送AVC,AAC数据包

1. libRTMP的包结构

  typedef struct RTMPPacket
  {
    uint8_t  m_headerType;   
    uint8_t  m_packetType;
    uint8_t  m_hasAbsTimestamp;	
    int      m_nChannel;
    uint32_t m_nTimeStamp;	
    int32_t  m_nInfoField2;	
    uint32_t m_nBodySize;
    uint32_t m_nBytesRead;
    RTMPChunk *m_chunk;
    char    *m_body;
  } RTMPPacket;

packet->m_headerType: 可以定义如下:
#define RTMP_PACKET_SIZE_LARGE    0
#define RTMP_PACKET_SIZE_MEDIUM   1
#define RTMP_PACKET_SIZE_SMALL    2
#define RTMP_PACKET_SIZE_MINIMUM  3
一般定位为 RTMP_PACKET_SIZE_MEDIUM

packet->m_packetType: 音频、视频包类型
#define RTMP_PACKET_TYPE_AUDIO    0x08
#define RTMP_PACKET_TYPE_VIDEO    0x09
#define RTMP_PACKET_TYPE_INFO     0x12 
还有其他更多类型,但一般都是 音频或视频

packet->m_hasAbsTimestamp: 是否使用绝对时间戳,一般定义为0。

packet->m_nChannel:音视频通道号码,音视频不要写错,
#define STREAM_CHANNEL_METADATA  0x03
#define STREAM_CHANNEL_VIDEO     0x04
#define STREAM_CHANNEL_AUDIO     0x05

packet->m_nTimeStamp:时间戳
一般视频时间戳可以从0开始计算,每帧时间戳 + 1000/fps (25fps每帧递增25;30fps递增33)
音频时间戳也可以从0开始计算,48K采样每帧递增21;44.1K采样每帧递增23。

packet->m_nInfoField2 = rtmp->m_stream_id

packet->m_nBodySize:数据包长度 = NALU包长度 + 包头长度

packet->m_nBytesRead:不用管
packet->m_chunk: 不用管
pa
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值