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
- RTSP to RTMP 基于 Live555
- [live555]rtsp直播基于live555的实现
- [live555]rtsp直播基于live555的实现
- stream rtmp (rtsp) to RTMP server
- 基于live555实现rtsp视频直播
- 基于live555实现rtsp视频直播
- 基于live555的rtsp封装rtspperf
- 基于live555实现简单的rtsp client
- 基于live555的rtsp客户端模块
- 基于live555的rtsp 客户端模块优化
- 基于live555封装的rtsp客户端rtspperf
- rtsp客户端 & ffmpeg解码(基于live555)
- 基于live555 RTSP 服务器网络性能优化
- 基于live555的一个简单RTSP服务器
- windows下live555+rtsp+ffmpeg媒体源,nginx+rtmp转发服务器,vlc播放rtmp媒体流
- RTSP/RTMP
- 基于live555的视频直播 DM368IPNC RTSP分析
- 基于live555的视频直播 DM368IPNC RTSP分析
- iOS--触摸事件的传递
- iOS - 如何去除tabbar顶部线条及设置背景图片
- thinkphp控制器实现隐藏文件路径下载
- h5小游戏一个也不能死的实现方式之js实现游戏一个也不能死
- 【项目架构】Android MVP 和MVVM框架模式 学习实例Demo之mvp篇
- RTSP to RTMP 基于 Live555
- Android开发——Android中常见的4种线程池(保证你能看懂并理解)
- chesschess
- 一个鼠标移出事件引发的问题
- QML的KeyNavigation快速切换焦点
- 编写一个单例(Singleton)类
- java内部类
- java安装及环境配置
- 小娜老师的讲义-Docker基础知识-容器(二)