使用Gstreamer将mjpeg数据流式传输到RTMP服务器

使用Gstreamer将mjpeg数据流式传输到RTMP服务器,gstreamer,rtmp,red5pro,nimble,Gstreamer,Rtmp,Red5pro,Nimble,我试图通过运行以下ffmpeg命令将mjpeg数据流传输到RTMP服务器 ffmpeg -re -f mjpeg -i http://127.0.0.1:9900 -f lavfi -i anullsrc -vcodec libx264 -force_key_frames “expr:gte(t,n_forced*2)” -crf 40 -tune zerolatency -f flv rtmp://172.16.112.25:1935/live/259273bf32dace302452e08

我试图通过运行以下ffmpeg命令将mjpeg数据流传输到RTMP服务器

ffmpeg -re -f mjpeg -i http://127.0.0.1:9900 -f lavfi -i anullsrc -vcodec libx264 -force_key_frames “expr:gte(t,n_forced*2)”  -crf 40 -tune zerolatency -f flv rtmp://172.16.112.25:1935/live/259273bf32dace302452e0823881a31ed3a0a89b
gst-launch-1.0 souphttpsrc is-live=true location=http://127.0.0.1:64346 ! jpegdec ! videoconvert ! x264enc tune=zerolatency ! flvmux ! rtmpsink location=rtmp://xxx.xx.xxx.xx:1935/live/54a6d9cf-7058-48d8-ae27-af441e29b155
这工作得非常好,但不知何故,这个命令是cpu密集型的,无法在同一台机器上支持多个流。为了检查性能,我使用gstreamer和以下命令

ffmpeg -re -f mjpeg -i http://127.0.0.1:9900 -f lavfi -i anullsrc -vcodec libx264 -force_key_frames “expr:gte(t,n_forced*2)”  -crf 40 -tune zerolatency -f flv rtmp://172.16.112.25:1935/live/259273bf32dace302452e0823881a31ed3a0a89b
gst-launch-1.0 souphttpsrc is-live=true location=http://127.0.0.1:64346 ! jpegdec ! videoconvert ! x264enc tune=zerolatency ! flvmux ! rtmpsink location=rtmp://xxx.xx.xxx.xx:1935/live/54a6d9cf-7058-48d8-ae27-af441e29b155
命令成功运行,无任何错误,但不在流媒体播放器中或在例如sldp(灵活流媒体)或WebRTC(red5pro服务器)播放器上显示视频

我尝试了red5pro和nimble服务器,两者都有相同的结果。使用QOSIFIRE监控流,带宽似乎只有3Kbps,这是不正常的(附上屏幕截图)。

我错过了什么?
GStreamer是这个用例的好选择吗?与FFmpeg相比,GStreamer的性能如何?

您正在使用软件对视频进行传输编码。这两种方法都不会对性能产生显著影响,因为您决定执行非常苛刻的任务。