RTSP to RTMP 基于 Live555

来源:互联网 发布:json在线格式化 php 编辑:程序博客网 时间:2024/05/29 03:07

1.前期准备:

Live555

rtmpdunp


2.设计思路:

使用Live555接收码流

将码流封装成RTMP格式

使用librtmp将码流推送到直播平台。


3.相关代码:

3.2.rtsp2rtmp

3.2.1 AAC info header

unsigned char body[4];body[0] = 0xaf;body[1] = 0x00;switch (profile){ case 0:body[2]|=(1<<3);//mainbreak; case 1:body[2]|=(1<<4);//LCbreak; case 2:body[2]|=(1<<3);//SSRbody[2]|=(1<<4);break; default:;}switch(channel){ case 1:body[3]|=(1<<3);//channel1break; case 2:body[3]|=(1<<4);//channel2break; default:;}switch(rate){ case 48000:body[2]|=(1);body[3]|=(1<<7);break; case 44100:body[2]|=(1<<1);break; case 32000:body[2]|=(1<<1);body[3]|=(1<<7);break; case 24000:body[2]|=(1<<1);body[2]|=(1);break; case 22050:body[2]|=(1<<1);body[2]|=(1);body[3]|=(1<<7);break; case 16000:body[2]|=(1<<2);break; case 8000:body[2]|=(1<<2);body[2]|=(1);body[3]|=(1<<7); default:;}

3.2.2.AAC data frame

只需要在数据帧前面加上2个byte的header:

spec_info[0] = 0xAF;spec_info[1] = 0x01;

3.2.3 H.264 info header

unsigned char *body;body = (unsigned char *)malloc(16 + sps_len + pps_len);memset(body, 0, 16 + sps_len + pps_len);body[i++] = 0x17;// 1: IFrame, 7: AVC// AVC Sequence Headerbody[i++] = 0x00;body[i++] = 0x00;body[i++] = 0x00;body[i++] = 0x00;// AVCDecoderConfigurationRecordbody[i++] = 0x01;body[i++] = sps[1];body[i++] = sps[2];body[i++] = sps[3];body[i++] = 0xff;body[i++] = 0xe1;body[i++] = (sps_len >> 8) & 0xff;body[i++] = sps_len & 0xff;for (size_t j = 0; j < sps_len; j++){body[i++] = sps[j];}body[i++] = 0x01;body[i++] = (pps_len >> 8) & 0xff;body[i++] = pps_len & 0xff;for (size_t j = 0; j < pps_len; j++){body[i++] = pps[j];}
3.2.4 H.264 data frame
body = data - 9;memset(body, 0, 9);i = 0;if (bIsKeyFrame== 0) {body[i++] = 0x17;// 1: IFrame, 7: AVC}else {body[i++] = 0x27;// 2: PFrame, 7: AVC}// AVCVIDEOPACKETbody[i++] = 0x01;body[i++] = 0x00;body[i++] = 0x00;body[i++] = 0x00;// NALUsbody[i++] = size >> 24 & 0xff;body[i++] = size >> 16 & 0xff;body[i++] = size >> 8 & 0xff;body[i++] = size & 0xff;memcpy(&body[i], data, size);




<最近在做一些直播相关的项目,希望将一些思路记录下来。供自己及大家参考!>

0 0
原创粉丝点击