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