live555 上的 RTSP 服务器开始在 I-Frame (h264) 上发送客户端

问题描述 投票:0回答:1

我使用live555编写了一个简单的rtsp服务器。我从这里获取了大部分代码Live555:基于“testOnDemandRTSPServer”的X264 Stream Live源

当新客户端连接时,它开始接收当前来自编码器的数据包。这可以是 P 帧和 I 帧。如何确保连接后客户端仅开始从 I 帧接收数据?

h.264 rtsp live555
1个回答
0
投票

您可以根据您的要求检查最终单元类型,我认为 DeliverFrame 会很好,我不检查整个代码,但最终单元有有关框架类型的信息。

void LiveSourceWithx264::deliverFrame()
{
    if(!isCurrentlyAwaitingData() || nalQueue.empty()) return;

    x264_nal_t nal = nalQueue.front();
    // Extract the NAL unit type
    int nalType = nal.p_payload[4] & 0x1F; // Assuming 4-byte start code

    // Check if we're looking for the first I-frame
    if (firstFrame && nalType != 5) {
        nalQueue.pop(); // Discard non-I-frames at the beginning
        return; // Skip until we find an I-frame
    }

    firstFrame = false; // Reset flag after finding the first I-frame

    // Existing logic to handle frame delivery
    nalQueue.pop();
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.