有人告诉我,有一个 ffmpeg 补丁可以解决流式传输到 FLV 播放器时出现的问题。
在rtmpproto.c的第 2314 行附近有以下表达式:
if (rt->flv_header_bytes < 11)
break;
解决方法是将其更改为包含此附加要求:
if (rt->flv_header_bytes < 11 && !rt->flv_off)
break;
不过我很好奇这个说法的逻辑。第一条语句检查 FLV 标头是否小于 11 个字节,但是在检查标头有多少字节之前先检查是否打开了 flv 流不是更有效吗?
if (!rt->flv_off && rt->flv_header_bytes < 11)
break;
或者如何将声明更改为这样?
if (rt->flv_off || (!rt->flv_off && rt->flv_header_bytes < 11)
break;
那会更有效还是会以某种方式破坏代码?