使用gstreamer将视频流传输到nginx rtmp服务器

7

PS:我是第一次使用gstreamer。:)

我正在尝试使用gstreamer将来自连接到beaglebone的逻辑技术C920网络摄像头的视频流传输到nginx服务器。但是,rtmpsink在我的设备上失败了。不过,使用filesink我能够将视频保存到beaglebone中。虽然我仍然遇到一些帧损失和无音频的问题,但我希望先让流媒体功能正常工作。我使用的命令是

GST_DEBUG=4 GST_DEBUG_FILE=gst2.log gst-launch-1.0 -v -e uvch264src device=/dev/video0 name=src auto-start=true average-bitrate=5000000 iframe-period=33  src.vidsrc  ! queue ! video/x-h264,width=1920,height=1080,framerate=30/1 ! h264parse ! flvmux ! rtmpsink location="rtmp://192.168.1.104:1935/hls/movie"

我的调试输出在这里。 gist gstreamer在5秒内就退出了。
我验证了流媒体服务器的工作情况。但是从客户端来看,gstreamer没有给我任何错误信息。或者我不知道如何正确地进行调试。
我已经卡在这个问题上好几天了。任何帮助都将不胜感激。
谢谢。
更新1:
我可以使用ffmpeg将本地文件发送到我的rtmp服务器,并且服务器正常处理它。
ffmpeg -re -i /Users/r3dsm0k3/10.mp4 -vprofile baseline -ar 44100 -ac 1 -c copy -f flv rtmp://192.168.1.4:1935/hls/example

使用fakesink测试了gstreamer,没有出现任何错误。

更新2

尝试使用v4l2src,但没有成功。

1个回答

5

终于想通了。它相当简单,但在服务器端处理方面。

我需要在 nginx 配置文件的 rtmp 服务器中添加 publish_time_fix off;

感谢这篇博客


我长期使用这个配置选项,但在gstreamer 1.14中它停止工作了。Gstreamer出现了WriteN,RTMP发送错误32WriteN,RTMP发送错误9。我将publish_time_fix off;移除后,就可以再次发布了。他们将flvmux更改为使用GstAggregator,我猜它需要默认的publish_time_fix - iomihai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接