我会开辟一个空间rtp协议,包含vp9 h264 h265 aac opus 等rtp实例,包含实例代码,让看文章的人得到真实的提升
一、webrtcrtp协议为实时传输协议 real transfer protocol webrtc 已经被w3c(万维网联盟) 和IETF(互联网工程任务组)宣布成为正式标准,webrtc 底层使用 rtp 协议来传输音视频内容,同时可以使用websocket协议和http等标准协议来传输信令。rtp其实可以作为传输层来看,也可以看成半传输层半应用层协议。
二、rtp协议rtp协议太重要了,如果你懂rtp协议,那基本就会把音视频传输里所有的协议摸一遍,为什么,我们来说一下:
1 sip 协议传输层使用rtp 2 rtsp 协议传输层使用rtp 3 onvif协议使用rtsp协议,最终到了rtp协议上 4 webrtc 使用srtp协议,最终又到了rtp协议上 5 国标GB28181使用sip 传输信令,最终又到了rtp协议上 6 dlna协议和miracast协议直播使用rtsp ,传输当然还是rtp没骗你吧,所以作为一名开发者,如果懂了rtp 协议,能够徒手写出rtp协议,基本就成了你的功力了。其他协议如rtmp,xmpp,等等就都不在话下了。
rtp协议头部一般来说为12字节,
typedef struct
{
/**//* byte 0 */
unsigned char csrc_len:4; /**//* expect 0 */
unsigned char extension:1; /**//* expect 1, see RTP_OP below */
unsigned char padding:1; /**//* expect 0 */
unsigned char version:2; /**//* expect 2 */
/**//* byte 1 */
unsigned char payload:7; /**//* RTP_PAYLOAD_RTSP */
unsigned char marker:1; /**//* expect 1 */
/**//* bytes 2, 3 */
unsigned short seq_no;
/**//* bytes 4-7 */
unsigned long timestamp;
/**//* bytes 8-11 */
unsigned long ssrc; /**//* stream number is used here. */
} RTP_FIXED_HEADER;
rtp的头部并非固定12字节,是可以扩展的,具体就看头部的extension是否为1,先来一个rtp h264 的发送实例,发送rtp h264 并且播放。播放在下一篇。
三、show me the code#include
#include
#include
#include "RTPDefine.h"
//小端转大端
uint32_t little2big(uint32_t le) {
return (le & 0xff) 24) & 0xff;
}
//大端转小端
uint32_t big2little(uint32_t be)
{
return ((be >> 24) & 0xff)
| ((be >> 8) & 0xFF00)
| ((be payload = pt;
h->marker = mark;
h->seq_no = little2big(seq);
h->timestamp = little2big(ts);
h->ssrc = little2big(ssrc);
return 0;
}
static int rtp_packet_for_h264( char *output, int out_len, char *intput, int int_len,
rtp_send_callback call_back, void *arg)
{
unsigned char fu[2];
//DBG_INFO("size %d\n",size);
int len = start_code_check(intput, int_len);//start code
if (int_len FU-A */
fu[0] |= nri;
fu[1] = type;
fu[1] |= 1
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?