基于RTMP推送实时AAC+H264流(三)

本文介绍了如何利用librtmp库推送AAC+H264实时流,包括初始化、连接服务器、发送数据的流程。主要涉及视频编码线程、音频编码线程和主线程的实现,以及在实际操作中遇到的生产者-消费者问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推送

流程:初始化、连接服务器、发送数据
这一部分主要用的是librtmp,由于是使用别人封装好的库,总的来说比较简单

初始化

简单地调用一下函数

rtmp = RTMP_Alloc();
RTMP_Init(rtmp);

连接服务器

四个函数分别代表:设置URL、使自己成为发送端、建立NetConnection,建立NetStream

RTMP_SetupURL(rtmp, url);
RTMP_EnableWrite(rtmp);
RTMP_Connect(rtmp, NULL);
RTMP_ConnectStream(mRTMP, 0);

发送数据

不断从队列中取出RTMP包,加上时间戳和流ID,然后往服务器发送,帧率的控制位于编码线程,所以这里不用计算时间,直接加上时间戳发送即可,而且由于这里也不好计算时间,还有就是这里的队列是阻塞队列

while (true) {
    RTMPPacket& packet = queue.front();
    packet.m_nInfoField2 = rtmp->m_stream_id;
    packet.m_nTimeStamp = RTMP_GetTime();

    RTMP_SendPacket(rtmp
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值