使用GStreamer将RTSP摄像头推流至AWS Kinesis失败排查
解决RTSP推流到AWS Kinesis的超时(错误599)问题
针对你遇到的curl超时(错误码599)、传输速率不足30字节/秒导致推流终止的问题,可按以下步骤排查解决:
验证RTSP源流的有效性
先确认摄像头输出的RTSP流本身稳定且有数据,避免源流问题导致推流失败。执行以下命令将RTSP流保存到本地文件:gst-launch-1.0 rtspsrc location="rtsp://admin:bachir123@192.168.15.6:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! rtph264depay ! h264parse ! mp4mux ! filesink location=test.mp4播放生成的
test.mp4文件,检查是否有正常视频输出;同时观察控制台输出的帧率、码率数据,确认源流持续稳定。优化GStreamer Pipeline参数
调整Pipeline配置,确保数据持续、稳定地传输到kvssink:- 给
rtspsrc添加buffer-mode=auto和drop-on-latency=TRUE参数,避免RTSP源延迟导致数据积压或中断; - 给
h264parse添加config-interval=-1,强制每隔关键帧输出SPS/PPS信息(Kinesis需要这些参数正确解码视频); - 在
h264parse和kvssink之间添加queue元素,缓冲数据应对网络波动。优化后的命令示例:gst-launch-1.0 -v rtspsrc location="rtsp://admin:bachir123@192.168.15.6:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE buffer-mode=auto drop-on-latency=TRUE ! rtph264depay ! h264parse config-interval=-1 ! queue ! kvssink stream-name=YourStreamName storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="eu-west-1"
- 给
排查网络连通性问题
错误599是curl的超时错误,说明本地到Kinesis视频服务的网络连接不稳定:- 直接测试Kinesis endpoint的连通性:执行
curl -v https://s-5ac447c0.kinesisvideo.eu-west-1.amazonaws.com/putMedia,检查是否能正常建立TCP连接,有无丢包、延迟过高的情况; - 检查本地防火墙、代理设置,确保出站流量允许访问443端口(Kinesis视频服务使用HTTPS);如果运行在AWS VPC内,确认VPC终端节点配置正确,安全组规则允许出站到Kinesis视频服务的IP段。
- 直接测试Kinesis endpoint的连通性:执行
调整Kinesis相关配置
- 调大
storage-size参数:默认128MB可能不足以应对流的波动,建议改为512MB或1024MB,避免缓冲区溢出导致断流; - 验证IAM权限:确保使用的Access Key和Secret Key对应的IAM用户拥有
kinesisvideo:PutMedia、kinesisvideo:DescribeStream等必要权限; - 手动指定endpoint参数:在
kvssink中添加endpoint="https://s-5ac447c0.kinesisvideo.eu-west-1.amazonaws.com",确保连接到正确的服务端点。
- 调大
启用详细日志定位问题
通过GStreamer的调试日志获取kvssink的详细运行信息,执行命令时添加环境变量:GST_DEBUG=kvssink:5 gst-launch-1.0 -v rtspsrc location="rtsp://admin:bachir123@192.168.15.6:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name=YourStreamName storage-size=128 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="eu-west-1"查看日志中是否有数据发送失败、权限错误等具体提示,进一步定位问题。
内容的提问来源于stack exchange,提问作者Jaques Missrie
相关产品推荐
相关产品推荐

