已知:

  • gstreamer可以很好的支持多文件同时播放。
  • gstreamer无法正常支持多摄像头同时播放。偶尔可以,多数情况下直接崩溃。

  两个现象对比,可以确定是因为摄像头建立链接、接受数据有延迟导致的。目前分析是在h264parse出错的。

 

  解决思路:

  1. 主线程使用appsrc。
  2. 每个摄像头一个线程。
  3. 对每个摄像头增加一个探头,保存读取到的数据。
  4. 当下游元素请求数据时,关键步骤来了:
  • 第一个摄像头,除了保存到自己的缓冲区,还要保存到公用缓冲区。
  • 其他摄像头,如果自己的数据还没有到达,就使用公用缓冲区的数据。

  大体思路如此。具体细节自行完善。