我unity发布,在web上播放。如果播放器先于发布者启动,可以获取视频和音频,但刷新页面后视频消失。如果发布者先于播放器启动,则接收者只有音频,无法获取视频。以上结果已通过 chrome://webrtc-internals/ 验证。这不符合正常流程。是bug吗?
我试着发布后等一会再播放,视频还是不行
那是因为你的编码器没有响应 PLI 请求,请看这个问题例如。
对于 NVCodec,您必须设置一个标志以使用 SPS/PPS 对关键帧进行编码,例如this PR:
picParams.encodePicFlags = NV_ENC_PIC_FLAG_FORCEINTRA | NV_ENC_PIC_FLAG_FORCEIDR
| NV_ENC_PIC_FLAG_OUTPUT_SPSPPS;
H.264的序列头是SPS/PPS,H.265的是SPS/PPS/VPS,只是简称而已
如果不设置标志,你可能会得到一个错误
avc ignore type=1 for no sequence header
。没有序列头意味着没有 SPS/PPS,所以它无法解码视频流。
编码器生成IDR帧(一般为关键帧)时应设置
NV_ENC_PIC_FLAG_OUTPUT_SPSPPS
。对于 WebRTC,关键帧也与 SPS/PPS 一起发送,因为 SPS/PPS 可能会改变。