У меня есть несколько файлов .pcap 01.pcap, 02.pcap, ... N.pcap, они включают в себя два потока, Audio-G.711 Video-H.264. Каждый pcap имеет ~ 1 минуту потоковой передачи. И мне нужно сделать один .avi. Я использую файл mergecap.exe для объединения pcaps в один большой pcap.Gstreamer. Несколько pcap для avi
mergecap.exe -F pcap 01.pcap 02.pcap ....N.pcap -w out.pcap
После этого я использую GStreamer, чтобы сделать .avi файл
gst-launch-1.0 filesrc location=out.pcap ! tee name=t ! pcapparse dst-ip=192.168.2.55 dst-port=5010^
! application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96^
! rtpjitterbuffer^
! rtph264depay^
! h264parse^
! queue^
! mux. t. ! pcapparse dst-ip=192.168.2.55 dst-port=4010^
! application/x-rtp, media=(string)audio, clock-rate=(int)8000, encoding-name=(string)PCMA, channels=(int)1, payload=(int)8^
! rtpjitterbuffer^
! rtppcmadepay^
! queue^
! mux. avimux name=mux ! filesink location=test.avi
Этот трубопровод работает в течение одного PCAP хорошо .. Когда я conatenate два .pcaps, это тоже работает. Но если это больше, чем 2 pacaps-> rtpjitterbuffer падает почти каждый видео пакет
...
0:00:03.856698538 12812 08E3FD28 WARN rtpjitterbuffer gstrtpjitterbuffer.c:2163:gst_rtp_jitter_buffer_chain:<rtpjitterbuffer0> Packet #41238 too late as #57525 was already popped, dropping
0:00:03.861442222 12812 08E3FD28 WARN rtpjitterbuffer gstrtpjitterbuffer.c:2163:gst_rtp_jitter_buffer_chain:<rtpjitterbuffer0> Packet #41239 too late as #57525 was already popped, dropping
0:00:03.870865810 12812 08E3FD28 WARN rtpjitterbuffer gstrtpjitterbuffer.c:2163:gst_rtp_jitter_buffer_chain:<rtpjitterbuffer0> Packet #41240 too late as #57525 was already popped, dropping
0:00:03.876392403 12812 08E3FD28 WARN rtpjitterbuffer gstrtpjitterbuffer.c:2163:gst_rtp_jitter_buffer_chain:<rtpjitterbuffer0> Packet #41241 too late as #57525 was already popped, dropping
and continues...
and continues...
and continues...
...
Я пытался:
- Изменение задержки в rtpjitterbuffer
- Удалить rtpjitterbuffer
- Не использовать tee
Ваши предложения, почему это происходит? Напоминаю, что все работает до двух pcap. Независимо от того, какие pcaps 1 с 2 или 5 с 6 или ...
UPD. Пытался играть с очередями, так как otopolsky описал, но все еще не работал. Я помещаю очередь после элемента tee. Но та же ошибка. Я думаю, это связано с тем, что rtpjitterbuffer в двух разных потоках использует одну и ту же переменную (из основного потока?)
Возможно, есть другой способ сделать синхронизацию аудио и видео с pcap на rtp TIMESTAMP?