我的本地网络上有OpenH264。
代码类似于。
send(server, frame)
recv(client, frame)
DecodeFrameNoDelay(frame, frame_buffer)
if(frame_buffer.iBufferStatus == 1)
//process frame
这在我的本地网络上的低延迟连接下可以正常工作。但是在高延迟的连接(例如缓慢的VPS)上失败。
我可以接收第一个帧,但是随后流失败并且DecodeFrameNoDelay不返回任何帧。
如果我将比特率和FPS设置得很低,我可以使其工作。这使我相信它与时间有关吗?
我应该将解码的帧放入缓冲区,然后让解码器从缓冲区解码帧吗?维持所需的FPS?
感谢您的任何反馈!
答案 0 :(得分:0)
h264_encoder->SetOption(ENCODER_OPTION_IDR_INTERVAL, &iIDRPeriod);
// or
h264_encoder->ForceIntraFrame(TRUE);
我假设在Internet上进行流式传输时,需要经常发送IDR帧以保持解码同步。
我觉得这很不错,但是可以完成工作。