利用LIBRTMP直播时 更改发送数据的包大小
2014-05-07 21:37
295 查看
在用RTMP协议做视频直播时,协议默认的发送消息的大小是128字节。开源库librtmp中说可以更改这个大小,因为用128的包发送数据,效率太低了,网络上一般MTU都在1400左右,所以还是改大点的好。网上搜了半天也没有找到参考的代码,可能关键词写的不对。rtmpdump里面没有参考代码,只能自己试验了,最后还是找到了正确的办法。
RTMP *r; //提前申请的
RTMPPacket pack;
RTMPPacket_Alloc(&pack, 4);
pack.m_packetType = RTMP_PACKET_TYPE_CHUNK_SIZE;
pack.m_nChannel = 0x02;
pack.m_headerType = RTMP_PACKET_SIZE_LARGE;
pack.m_nTimeStamp = 0;
pack.m_nInfoField2 = 0;
pack.m_nBodySize = 4;
int nVal = 1024; //希望指定的大小
pack.m_body[3] = nVal & 0xff; //大字节序
pack.m_body[2] = nVal >> 8;
pack.m_body[1] = nVal >> 16;
pack.m_body[0] = nVal >> 24;
r->m_outChunkSize = nVal;
//we send packet 1024 bytes
RTMP_SendPacket(r,&pack,1);
RTMPPacket_Free(&pack);
要注意的是 通道用2,一般媒体数据是4。流ID用0。消息类型是RTMP_PACKET_TYPE_CHUNK_SIZE了,还必须指定m_outChunkSize ,否则协议没有自动修改,发送还是会错误,改过来之后发送正常了。再看输出的log,已经用1024发送了。
RTMP *r; //提前申请的
RTMPPacket pack;
RTMPPacket_Alloc(&pack, 4);
pack.m_packetType = RTMP_PACKET_TYPE_CHUNK_SIZE;
pack.m_nChannel = 0x02;
pack.m_headerType = RTMP_PACKET_SIZE_LARGE;
pack.m_nTimeStamp = 0;
pack.m_nInfoField2 = 0;
pack.m_nBodySize = 4;
int nVal = 1024; //希望指定的大小
pack.m_body[3] = nVal & 0xff; //大字节序
pack.m_body[2] = nVal >> 8;
pack.m_body[1] = nVal >> 16;
pack.m_body[0] = nVal >> 24;
r->m_outChunkSize = nVal;
//we send packet 1024 bytes
RTMP_SendPacket(r,&pack,1);
RTMPPacket_Free(&pack);
要注意的是 通道用2,一般媒体数据是4。流ID用0。消息类型是RTMP_PACKET_TYPE_CHUNK_SIZE了,还必须指定m_outChunkSize ,否则协议没有自动修改,发送还是会错误,改过来之后发送正常了。再看输出的log,已经用1024发送了。
相关文章推荐
- 利用LIBRTMP直播时 更改发送数据的包大小
- 使用RTMPdump(libRTMP)直播来自v4l2的摄像头数据
- 使用RTMPdump(libRTMP)直播来自v4l2的摄像头数据
- 使用RTMPdump(libRTMP)直播来自v4l2的摄像头数据
- librtmp 以record方式向red5推送直播流
- vue.js组件之间通讯的数据双向绑定----父亲把数据传递给儿子,儿子更改数据后,重新发送给父亲,父亲数据更改后,属性会重新发送个儿子,儿子刷新新数据
- Android Studio利用异步任务AsyncTask发送post请求获取json数据
- 通过RTMP协议将AVC(H264)数据发送到流媒体服务器
- 利用nginx搭建RTMP视频点播、直播、HLS服务器
- Android实现录屏直播(三)MediaProjection + VirtualDisplay + librtmp + MediaCodec实现视频编码并推流到rtmp服务器
- 谈谈Java利用原始HttpURLConnection发送POST数据
- Asp.NET WebMethod: 使用Jquery的post发送信息的数据信息的大小限制
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- python 2.7 利用smtplib发送、抄送邮件以及发送html表格
- 利用PostMan工具 ---post请求发送Json数据 踩坑记录
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- 鱼c笔记——Python爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- librtmp发送flv tag扩展时间戳
- 屏幕录制H.264视频,AAC音频,MP4复用,LibRTMP实时直播