ffmpeg очень медленно декодирует поток h264 через RTP

Мне нужна помощь в получении ffplay для приема и декодирования потока реального времени, закодированного в h264.

Я пытаюсь создать двухточечный поток между компьютером A, получающим видеокадры с Kinect, и компьютером B, на котором запущен ffplay, чтобы показать прямой эфир.

Это команды, которые я запускаю на обоих компьютерах.

Компьютер A (RPI 3)

ffmpeg -f rawvideo -vcodec rawvideo -pix_fmt rgb24 -s 640x480 -i - -threads 4 -preset ultrafast -codec:v libx2 64 -an -f rtp rtp://192.168.0.100:2000

Вот что выводит ffmpeg:

fps= 14 q=12.0 size=856kB time=00:00:05.56 bitrate=1261.4kbits/s speed=0.54x

Выходной поток проходит между 10-20 кадрами. Это не хорошо, но я могу работать с этим.

Компьютер Б

ffplay -protocol_whitelist "file,udp,rtp" -probesize 32 -sync ext -i streaming.sdp

streaming.sdp

v=0
0=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.0.100
t=0 0
a=tool:libavformat 57.56.100
m=video 2000 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1

Я получаю поток, но примерно на 0,0001 кадров в секунду, что очень плохо. Я предполагаю, что я что-то упускаю в команде ffplay, так как ffmpeg показывает более стабильный и быстрый поток, но я не могу найти то, что мне не хватает.

заранее спасибо

1 ответ

Решение

Проблема была не в ffmpeg, а в написанном мною коде, который собирал данные с устройства. Я получал один и тот же кадр несколько раз и блокировал данные, собирающие потоки, делая большинство кадров дубликатом первого.

Другие вопросы по тегам