如何解决Google Nest Hello流网址无法正常工作
我正在使用Google的以下API,https://developers.google.com/nest/device-access/traits/device/camera-live-stream
我已经能够成功查看我的设备列表和相关信息。我也能够成功完成GenerateRtspStream
请求。我收到了他们API记录的以下回复
{
"results" : {
"streamUrls" : {
"rtsp_url" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
},"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...","streamToken" : "g.0.streamingToken","expiresAt" : "2018-01-04T18:30:00.000Z"
}
}
但是,问题是我无法访问视频供稿。我曾尝试使用VLC播放器和Pot Player之类的工具查看实时Feed,但是他们说URL不存在。我还尝试过在OpenCV
中使用python
来尝试访问实时供稿,并且它也无法正常工作(我已经在本地文件上测试了opencv
,它们工作正常)
我在rtsps
网址上做错了吗?如何在python
或VLC Player
之类的第三方应用程序中访问实时供稿
以下是我已经尝试做的一些示例:
import cv2 as cv
x = cv.VideoCapture(STREAM_URL)
# ret is False --- it works on local files as it returns True and I am able to view the media
ret,img = x.read()
这是尝试使用Pot Player / VLC
我的目标是用python处理此视频/图像,因此理想情况下,我的解决方案是使用opencv
或类似的东西。我主要是使用VLC
和其他播放器来首先调试此URL的问题。
更新
我已经使用以下公共链接进行了测试 rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov :
MYURL = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"
MYURL = STREAM_URL
import cv2 as cv
x = cv.VideoCapture(MYURL)
while(True):
ret,img = x.read()
if not ret:
print('URL not working')
break
cv.imshow('frame',img)
cv.waitKey(1)
它与opencv
和Pot Player
完美搭配。那么,问题可能出在Google设备访问API上吗?他们提供的网址可能不正确?还是我在这里想念东西?
也许与rtsps
URL与rtsp
有关?我该如何解决?
解决方法
我建议尝试使用ffmpeg,但是您可能需要从源代码构建它。
如果您在使用ffmpeg时遇到问题,可以修改ffmpeg源,以将control_uri
(在libavformat/rtsp.h
中)的大小从1024增加到2048,然后重新编译。然后ffmpeg应该能够播放RTSPS流。
ffmpeg和ffplay都对我有效,不需要重新构建。在MacOS上,我只是这样做:
brew install ffmpeg
ffplay -rtsp_transport tcp "rtsps://..."
填写巨大的流URL。注意引号,URL中有些东西没有zsh不喜欢的引号。或者将流保存到文件
ffmpeg -y -loglevel fatal -rtsp_transport tcp -i "rtsps://..." -acodec copy -vcodec copy /path/to/out.mp4
您可以对ffmpeg使用不同的选项,以将流转换为rtsps以外的内容,以供其他应用程序使用。
有趣的是,尽管API告诉了我这一点:
"maxVideoResolution": {
"width": 640,"height": 480
},
这是来自ffplay的信息:
Metadata:
title : SDM
Duration: N/A,start: -0.110000,bitrate: N/A
Stream #0:0: Audio: aac (LC),48000 Hz,stereo,fltp
Stream #0:1: Video: h264 (Main),yuvj420p(pc,bt709,progressive),1600x1200 [SAR 1:1 DAR 4:3],15 fps,15 tbr,90k tbn,30 tbc
指示1600x1200,不确定为什么maxVideoResolution实际上不是最大分辨率吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。