我的想法是设置一个带GAS的脚本,将我的ip camera的视频录制到google drive。目前它可以访问摄像头视频流,获取数据并保存它做驱动器。它不起作用,因为它不是由于http请求标头范围参数而获得有限数量的数据,而是采用http请求可以接收的最大大小。此外,asf视频似乎已损坏,无法在VLC上播放。
是否有任何想法让脚本以正确的格式下载已定义的视频大小?
function myFunction() {
var URL = 'http://201.17.122.01:82/videostream.asf?user=xxxx&pwd=xxxxxx&resolution=32&rate=1'; // file to backup
var chunkSize = 1048576; // read the file in pieces of 1MB
var chunkStart = 0, chunkEnd = chunkStart + chunkSize;
var chunkHTTP = UrlFetchApp.fetch(URL, {
method: "get",
contentType: "video/x-ms-asf",
headers: {
"Range": "bytes=" + chunkStart + "-" + chunkEnd
}
})
var chunk = chunkHTTP.getContentText();
// write to Drive
try {
var folder = DocsList.getFolder('bakfolder');
} catch(err) {
var folder = DocsList.createFolder('bakfolder');
}
fileOnDrive = folder.createFile('ipcamera.asf', chunk);
Logger.log(" %s bytes written to drive", chunk.length);
}
答案 0 :(得分:0)
我没有ip摄像头,因此无法测试并帮助您处理接收数据的分块。但我怀疑您使用错误的方法提取收到的视频数据并将其保存到云端硬盘:
a) .getContentText()方法获取HTTP响应的内容编码为字符串 - 对于处理视频流数据可能是错误的。尝试使用.getBlob()或.getContent()代替;
b) folder.createFile(name,content)方法在当前文件夹中创建文本文件。请改用.createFile(blob)方法。
您很可能不会尝试使用流字节来将其作为一个blob可以使用。如果我找到了我可以访问的ip摄像头或其他视频流,我会测试它并更新它。