【问题标题】:WebRTC native (C++) with custom VideoCapturer fails main_thread_.CalledOnValidThread() check带有自定义 VideoCapturer 的 WebRTC 本机 (C++) 未能通过 main_thread_.CalledOnValidThread() 检查
【发布时间】:2015-07-19 17:15:50
【问题描述】:

我编译了 WebRTC 本机代码 (C++),并且正在使用 peerconnection 服务器和客户端示例(在src\talk\examples\peerconnection 下)。特别是我正在尝试更改客户端示例以流式传输自定义图像序列而不是网络摄像头视频。我使用了类似的东西 http://sourcey.com/webrtc-custom-opencv-video-capture/ 作为起点,自定义VideoCapturerFactory 返回一个自定义VideoCapturer,我可以使用它来生成自定义图像帧。每次我有新图像要流式传输时,我都会在VideoCapturer 上致电SignalFrameCaptured(this, &frame)

我的问题是,在调试模式下,我遇到了这个崩溃:

#
# Fatal error in e:\webrtc\webrtc checkout\src\webrtc\modules\video_coding\main\source\video_sender.cc, line 90
# Check failed: main_thread_.CalledOnValidThread()
#

我的理解是,它与启动视频流的线程和推送这些单独帧的线程之间的不一致有关。似乎前者是内部WebRTC线程,而后者当前是应用程序的主线程。

因为这个线程检查被禁用,所以在发布模式下工作。

知道如何正确解决这个问题吗?谢谢

【问题讨论】:

    标签: c++ multithreading webrtc


    【解决方案1】:

    我自己偶然发现了它,我希望你现在已经解决了。通常,您应该在启动线程上调用 SignalFrameCaptured ——参见 Google 代码中的示例:

    https://chromium.googlesource.com/external/webrtc/+/edd8fefa9b31f903eefe1e9fcabb09a5d6fc1ad1/talk/app/webrtc/objc/avfoundationvideocapturer.mm#419(第 419 行)

    如您所见,这是recent change

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多