我正在尝试使用 HTML5 获取视频流 RTP/RTCP,该流是由 gstreamer 生成的。我使用了gstreamer的例子,所以我可以通过RTP端口:5000和RTCP:5001,并且可以使用gstreamer接收流。但是使用 HTML5 无法接收它们。于是我试着读了一下HTML5,发现它可以接收theora/ogg,webm/vp8,mp4/avc,协议可能是,HTTP,RTP,RTCP,UDP等,但是我不能使用RTP, RTCP 或 UDP,HTTP 只能设法接收。但是使用 Mozilla Firefox 的 VLC 插件,使用 UDP 协议,我得到了非常令人满意的结果。不知道有没有人有任何提示,我不想使用源文件,因为 src="/tmp/test.avi" 需要是可以是 udp、RTP、RTCP 的视频流。谢谢!
1 回答
如果您不需要以低 fps 流式传输,您可以使用 GStreamer 将您的流转码为 MJPEG 并在 TCP 中流式传输,然后使用 VLC 获取此 TCP 流并将其流式传输到 HTTP。它工作得很好(0.5 秒的延迟),但如果你降低 fps (1 fps) VLC 会引入大约 11 秒的延迟。
以下是一些可以使用 GStreamer videotestsrc 开箱即用的测试命令:
GStreamer:
gst-launch -v videotestsrc 水平速度=1!去隔行!视频速率!视频缩放!视频/x-raw-yuv,帧率=15/1,宽度=256,高度=144!jpegenc 质量=20 !multipartmux 边界="--videoboundary" !tcpserversink 主机=localhost 端口=3000
VLC:
vlc -vvv -I rc tcp://localhost:3000 --sout '#standard{access=http{mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=localhost:8081 }'
然后打开浏览器
http://localhost:8081
(或创建一个带有“src”属性为的 img 标签的 HTML 页面http://localhost:8081
)