已知:
gstreamer可以很好的支持多文件同时播放。
gstreamer无法正常支持多摄像头同时播放。偶尔可以,多数情况下直接崩溃。
两个现象对比,可以确定是因为摄像头建立链接、接受数据有延迟导致的。目前分析是在h264parse出错的。
解决思路:
主线程使用appsrc。
每个摄像头一个线程。
对每个摄像头增加一个探头,保存读取到的数据。
当下游元素请求数据时,关键步骤来了:
第一个摄像头,除了保存到自己的缓冲区,还要保存到公用缓冲区。
其他摄像头,如果自己的数据还没有到达,就使用公用缓冲区的数据。
大体思路如此。具体细节自行完善。