如何为我的源流实现 RTSP 推送以推送到 Wowza 云?
How to implement RTSP Push for my source stream to push to Wowza Cloud?
我已经编写了从我的外部摄像头捕获 RTP 数据包并能够转发它们的软件。我创建了一个 SDP 文件并将其加载到 VLC 中,然后将 RTP 数据包流式传输到 VLC 并确认它可以正确播放。
现在我想流式传输到 Wowza Cloud。看起来这样做的方法是使用我配置的 RTSP 推送流。不幸的是,我找不到任何关于 RTSP 推送协议的文档。
我了解 RTSP(拉)以及如何实现它,但不了解 RTSP 推送。好像相机支持这个,所以这一定是一个既定的协议,但是在 RTSP 规范中没有任何地方提到推送。 Wowza Cloud 给了我端点、端口、流名称和身份验证,但我不知道如何处理它们。好像涉及到SDP Announce,但是具体如何实现还没有明确的指导。
谁能解释一下如何实现这个 RTSP 推送协议?
流式传输到 Wowza 的 RTSP 推送协议包含以下 RTSP 命令:
- 选项
- 公告
- 设置(针对每个 RTP 流,即音频和视频)
- 记录
- TEARDOWN(流式传输完成后)
ANNOUNCE和DESCRIBE是一样的,只是你把SDP信息推送为command的body
在 SETUP 期间,服务器将通过 IP 和端口响应以通过 UDP 发送 RTP 数据包(通过传输 header)。
可以使用 FFMPEG 和 Wireshark 检查过程的详细信息。 ffmpeg 命令如下:
ffmpeg -re -i inputfile.mp4 -pix_fmt yuv420p -vsync 1 -vcodec libx264 -r 23.976 -threads 0 -b:v: 1024k -bufsize 1024k -preset veryfast -profile:v baseline -tune film -g 48 -x264opts no-scenecut -acodec aac -b:a 192k -ac 2 -ar 48000 -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" -rtsp_transport tcp -f rtsp rtsp://username:password@192.168.1.2:1935/live/myStream
最后,在整个session期间保持Socket打开是很关键的,否则流session将被关闭。
我已经编写了从我的外部摄像头捕获 RTP 数据包并能够转发它们的软件。我创建了一个 SDP 文件并将其加载到 VLC 中,然后将 RTP 数据包流式传输到 VLC 并确认它可以正确播放。
现在我想流式传输到 Wowza Cloud。看起来这样做的方法是使用我配置的 RTSP 推送流。不幸的是,我找不到任何关于 RTSP 推送协议的文档。
我了解 RTSP(拉)以及如何实现它,但不了解 RTSP 推送。好像相机支持这个,所以这一定是一个既定的协议,但是在 RTSP 规范中没有任何地方提到推送。 Wowza Cloud 给了我端点、端口、流名称和身份验证,但我不知道如何处理它们。好像涉及到SDP Announce,但是具体如何实现还没有明确的指导。
谁能解释一下如何实现这个 RTSP 推送协议?
流式传输到 Wowza 的 RTSP 推送协议包含以下 RTSP 命令:
- 选项
- 公告
- 设置(针对每个 RTP 流,即音频和视频)
- 记录
- TEARDOWN(流式传输完成后)
ANNOUNCE和DESCRIBE是一样的,只是你把SDP信息推送为command的body
在 SETUP 期间,服务器将通过 IP 和端口响应以通过 UDP 发送 RTP 数据包(通过传输 header)。
可以使用 FFMPEG 和 Wireshark 检查过程的详细信息。 ffmpeg 命令如下:
ffmpeg -re -i inputfile.mp4 -pix_fmt yuv420p -vsync 1 -vcodec libx264 -r 23.976 -threads 0 -b:v: 1024k -bufsize 1024k -preset veryfast -profile:v baseline -tune film -g 48 -x264opts no-scenecut -acodec aac -b:a 192k -ac 2 -ar 48000 -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" -rtsp_transport tcp -f rtsp rtsp://username:password@192.168.1.2:1935/live/myStream
最后,在整个session期间保持Socket打开是很关键的,否则流session将被关闭。