上一篇博客之后,我已经切换到chromium58了,用 appr.tc
的H264流也没啥问题了。但是解析到我们自己的源,还是跪了,不停的报这两个错误
No decodable frame in 3000 ms, requesting keyframe
Can't send rtcp if it is disabled
check了一下buglist,最接近的问题描述是:
https://bugs.chromium.org/p/webrtc/issues/detail?id=8074
https://chromium.googlesource.com/external/webrtc/+/26b48043581735eed6e36b95fae6f5b1bcf8cfb5^!/
但是更频繁的请求好像和这个没啥关系,也许能换个错误码。。。
然后我就哼哧哼哧的把代码更新上去了。然后发现 webrtc/base
被重命名到 webrtc/rtc_base
了,改了一波。编译还是报错。
In file included from ../../third_party/libvpx/source/libvpx/vpx/./vp8.h:33:0,
from ../../third_party/libvpx/source/libvpx/vpx/vp8cx.h:18,
from ../../third_party/webrtc/modules/video_coding/codecs/vp9/vp9_impl.h:21,
from ../../third_party/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc:12:
../../third_party/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc: In member function 'int webrtc::VP9EncoderImpl::InitAndSetControlSettings(const webrtc::VideoCodec*)':
../../third_party/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc:452:31: error: 'VP9E_SET_ROW_MT' was not declared in this scope
vpx_codec_control(encoder_, VP9E_SET_ROW_MT, 1);
^
../../third_party/libvpx/source/libvpx/vpx/././vpx_codec.h:397:31: note: in definition of macro 'vpx_codec_control'
vpx_codec_control_##id(ctx, id, data) /**<\hideinitializer*/
^
../../third_party/libvpx/source/libvpx/vpx/././vpx_codec.h:397:39: error: 'vpx_codec_control_VP9E_SET_ROW_MT' was not declared in this scope
vpx_codec_control_##id(ctx, id, data) /**<\hideinitializer*/
^
../../third_party/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc:452:3: note: in expansion of macro 'vpx_codec_control'
vpx_codec_control(encoder_, VP9E_SET_ROW_MT, 1);
^
[581/2268] CXX obj/third_party/webrtc/p2p/rtc_p2p/basicpacketsocketfactory.o
ninja: build stopped: subcommand failed.
想着VP9没啥用,直接给注释掉了。下一个报错是librtsp的报错,webrtc中增加了一个新字段,但是我的库还是用旧的库,编译进度大概在 37/2000 。目前可以确定的是,这个Issue的修正是在chrome62上修了,但是和我遇到的问题是不是同一个问题还不知。
查了一下ks32的修改记录,只有几百行修改,我。。考虑去。主动去合并下代码好了。。。
如果你也需要升级,参考我这篇文章 有如下修改:
# gclient config --name src/xwalk https://github.com/ks32/crosswalk.git@origin/ks_chromium_58
gclient config --name src/xwalk https://github.com/wuyisheng/crosswalk.git@origin/chromium_64
希望这是这个专题的最后一篇文章
2019.5.7号更新
通过chrome浏览器验证了chromium64的内核也是无法解析我们的视屏流的。原因在于我们用了 unified-plan/
chromium65 的支持现在是一片空白了。
没完~