当前位置: 首页 > news >正文

生活信息网站建设中小企业网站营销

生活信息网站建设,中小企业网站营销,搜索引擎优化策略,北京it外包公司排行榜解决音视频发送的rtp问题 openrtp增加了音频aac的发送,地址 OpenRTP Gitee开源地址 同时使用两个rtp ,来发送音频和视频 使用以下音频rtp,是可以发送和接收的,音频端口在视频端口上2 v0 o- 0 0 IN IP4 127.0.0.1 sMy Stream cI…

解决音视频发送的rtp问题

openrtp增加了音频aac的发送,地址
OpenRTP Gitee开源地址

同时使用两个rtp ,来发送音频和视频
使用以下音频rtp,是可以发送和接收的,音频端口在视频端口上+2

v=0
o=- 0 0 IN IP4 127.0.0.1
s=My Stream
c=IN IP4 0.0.0.0
t=0 0
m=audio 1234 RTP/AVP 97
a=rtpmap:97 mpeg4-generic/44100/2
a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3

音视频合成发送rtp
vlc 使用分开的端口来接收,经过测试无误

v=0
o=- 0 0 IN IP4 127.0.0.1
s=My Stream
c=IN IP4 0.0.0.0
t=0 0
m=audio 6002 RTP/AVP 97
a=rtpmap:97 mpeg4-generic/44100/2
a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3
m=video 6000 RTP/AVP 96
a=rtpmap:96 H264/90000

我把sdp文件放在了这里,
在这里插入图片描述

在这里插入图片描述

是否使用同一端口发送音视频

一、协议规范
RTP(Real-time Transport Protocol)通常为音频和视频分别分配不同的端口以区分不同类型的媒体流。这样做符合协议设计的常规做法,使得接收端能够明确地识别和处理不同类型的媒体数据。
二、处理复杂性
解码和播放:如果音频和视频使用同一个端口,接收端在处理数据时需要更加复杂的逻辑来区分音频和视频数据包。这增加了处理的难度和出错的可能性,可能导致播放不稳定或不同步。
同步问题:不同的媒体流需要进行同步才能保证良好的播放效果。使用不同的端口可以更容易地实现音频和视频的同步,因为接收端可以独立地处理每个流的时间戳和同步信息。如果使用同一个端口,同步处理会变得更加复杂,可能会影响播放质量。
三、网络传输考虑
带宽管理:音频和视频通常具有不同的带宽需求。分开使用不同的端口可以更好地进行带宽管理和流量控制。例如,可以为视频流分配更多的带宽,以确保高质量的视频播放,而音频流可以使用相对较少的带宽。
网络故障处理:如果音频和视频使用同一个端口,当该端口出现网络问题时,音频和视频都会受到影响。而使用不同的端口可以在一定程度上隔离问题,使得在一个流出现问题时,另一个流可能仍然能够正常传输。
综上所述,为了保证音频和视频的稳定播放、便于处理和同步,以及更好地进行网络管理,建议为音频流和视频流分别使用不同的端口。

以上其实问题都能解决,比如rtmp协议就是一个端口,处理所有音视频,对于rtp协议,如果使用udp,其实可以使用不同的端口来发送视频和音频,这样处理逻辑更为简单,但不是必要。

计算时间戳增量:

音频时间戳

音频时间戳的单位就是采样率的倒数,例如采样率44100,那么1秒就有44100个采样,每个采样1/44ms,每个采样对应一个时间戳。RTP音频包如果是10毫秒的数据,对应的采样数为 44100 * 10 / 1000 = 441,也就是说每个音频包里携带440个左右的音频采样,因为1个采样对应1个时间戳,那么相邻两个音频RTP包的时间戳之差就是960。

那如果是回调函数采集的音频,我们可以计算回调两次之间的时间差t - t0,t0是第一次的时间,这样有可能造成越来越来的累计时间,如果我们知道是采样一次位1024个样本,那样就好计算了

1024 ,每次就是增加1024,缓冲区计算就是1024* channel(声道)* (perbytes)字节,比如16位就是2字节,那就是1024 X 2 X 2 = 4096个字节的缓冲,每次增加1024时间戳就行

nt rtp_pakc_aac(unsigned char *ptr,int bytes,unsigned char *rtpPkt)
{if (0xFF == ptr[0] && 0xF0 == (ptr[1] & 0xF0) && bytes > 7){// skip ADTS headerassert(bytes == (((ptr[3] & 0x03) << 11) | (ptr[4] << 3) | ((ptr[5] >> 5) & 0x07)));ptr += 7;bytes -= 7;}int rtpHeadLen = rtp_pack_header(rtpPkt);//RTP Headerunsigned char * header = rtpPkt + rtpHeadLen;// 3.3.6. High Bit-rate AAC// SDP fmtp: mode=AAC-hbr;sizeLength=13;indexLength=3;indexDeltaLength=3;header[0] = 0;header[1] = 16; // 16-bits AU headers-lengthheader[2] = (uint8_t)(bytes >> 5); header[3] = (uint8_t)(bytes & 0x1f) << 3;//13bit AU-size、3bit AU-Index/AU-Index-deltaunsigned char * pPayload = rtpPkt + rtpHeadLen + 4;memcpy(pPayload, ptr,bytes);return bytes + rtpHeadLen + 4;
从RTP包里面得到AAC音频数据的方法://功能:解RTP AAC音频包,声道和采样频率必须知道。
//参数:1.RTP包缓冲地址 2.RTP包数据大小 3.H264输出地址 4.输出数据大小
//返回:true:表示一帧结束  false:帧未结束 一般AAC音频包比较小,没有分片。
bool UnpackRTPAAC(void * bufIn, int recvLen, void** pBufOut,  int* pOutLen)
{unsigned char*  bufRecv = (unsigned char*)bufIn;//char strFileName[20];unsigned char ADTS[] = {0xFF, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xFC}; int audioSamprate = 32000;//音频采样率int audioChannel = 2;//音频声道 1或2int audioBit = 16;//16位 固定switch(audioSamprate){case  16000:ADTS[2] = 0x60;break;case  32000:ADTS[2] = 0x54;break;case  44100:ADTS[2] = 0x50;break;case  48000:ADTS[2] = 0x4C;break;case  96000:ADTS[2] = 0x40;break;default:break;}ADTS[3] = (audioChannel==2)?0x80:0x40;int len = recvLen - 16 + 7;len <<= 5;//8bit * 2 - 11 = 5(headerSize 11bit)len |= 0x1F;//5 bit    1            ADTS[4] = len>>8;ADTS[5] = len & 0xFF;*pBufOut = (char*)bufIn+16-7;memcpy(*pBufOut, ADTS, sizeof(ADTS));*pOutLen = recvLen - 16 + 7;unsigned char* bufTmp = (unsigned char*)bufIn;bool bFinishFrame = false;if (bufTmp[1] & 0x80){//DebugTrace::D("Marker");bFinishFrame = true;}else{bFinishFrame = false;}return true;
}

视频时间戳

rtp协议中视频一般以90000为时间基,一帧应该是对应多少次的采集;比如视频20帧,采样率是90KHZ,那么1帧就3600次的采集(90000 / 20 = 4500 ),也就是时间戳每帧每次增加4500个单位。

在这里插入图片描述

其他

rtp receive 暂时没有增加音频的接收,仍然是ps流的接收和普通rtp流的接收,rtmp流发送照旧是视频,近期增加音频的同步发送

http://www.yayakq.cn/news/396276/

相关文章:

  • 广西做网站找谁the author wordpress
  • 公司网站建设多少费用兴田德润在哪里图案设计素材
  • 提高网站目标流量o2o苗木网站建设
  • 网站开发中 整体框架的架构电商网站设计是什么
  • 一个页面的网站上海网站制作商
  • 网站建设成功案例方案财经网站源码 织梦
  • 建设公司网站大概需要多少钱?代做效果图的网站好
  • 济南历山北路网站建设网页设计需要学什么学历
  • 做网站编辑需要具备的素质如何开网页游戏
  • 手机网站建设如何做网站免费搭桥链接
  • 专业做外贸的网站加强部门网站建设
  • wordpress漫画站主题软件著作权申请费用
  • 江阴网站优化零基础学seo要多久
  • 网站自然排名这么做网站建设与管理学什么
  • 郴州网站推广公司排名招商网站建设费用价格
  • 个人引擎网站什么做wordpress不识别主题
  • 广州越秀公司网站建设流程图制作网页
  • 网站头像有啥做会清晰网站建设中
  • 哪些网站是用c语言做的中山 环保 骏域网站建设专家
  • 做网站属于软件开发吗长尾关键词是什么意思
  • 西安有哪些做网站的公司好淘宝数据分析
  • 广东制冷设备网站建设费用现在的网站前端用什么做
  • 网站集约化平台wordpress更改登录
  • 青岛专业做网站的公司flash网站特点
  • 气血不足做网站wordpress免费网站国外
  • 那个网站可以免费做风面南通专业网站制作公司
  • 超值的郑州网站建设网站建设夬金手指排名壹陆
  • 广州番禺建网站企业网站国内现状
  • 建网站什么语言喊别人做的网站不肯给代码
  • 怎么制作婚介网站获得网站所有关键字