ffmpeg 在通过 RTP 解码 h264 流时真的很慢

ffmpeg is really slow at decoding h264 stream over RTP

我需要一些帮助让 ffplay 接收和解码以 h264 编码的实时流。

我正在尝试在从 Kinect 接收视频帧的计算机 A 和计算机 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 帧之间运行。这不好,但我可以接受。

计算机 B

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.0001fps,这显然很糟糕。我的猜测是我在 ffplay 命令中遗漏了一些东西,因为 ffmpeg 显示了一个更稳定和更快的流,但我似乎找不到我遗漏的东西。

提前致谢

问题不在 ffmpeg 上,而是在我编写的从设备中获取数据的代码上。我多次收到相同的帧,并阻止线程捕获数据,使大多数帧成为第一个帧的副本。