Я пытаюсь прослушивать RTMP-потоки из моей IPCAM для записи их отдельно от моего компьютера. К сожалению, они не поддерживают RTSP, если не подключены напрямую к P C вместо NVR, однако я заметил, что в сети gui есть потоки RTMP, которые, кажется, работают как удаленно, так и локально, и я надеялся их прослушать и запишите то же самое. Поддержка камеры сказала, что они не могут помочь мне с этим. Система работает очень хорошо, и я бы не хотел их менять. Марка камер - OOSSXX, и они используют сторонние приложения, такие как eseecloud и IP Pro, которые хорошо работают с ними.
Вот соответствующий код:
$(document).ready(function(){
dvr_camcnt = Cookies.get("dvr_camcnt");
iSetAble = Cookies.get("iSetAble");
iPlayBack = Cookies.get("iPlayBack");
dvr_usr = Cookies.get("dvr_usr");
dvr_pwd = Cookies.get("dvr_pwd");
if(iSetAble == '0'){
$('#pb_settings').css('display','none');
}
if(iPlayBack == '0'){
$('#pb_review').css('display','none');
}
if(dvr_camcnt == null || dvr_usr == null || dvr_pwd == null)
{
location.href = "/index.html";
}
var urlarg=new getarg();
if(urlarg.type == "main")
{
dvr_type = "main";
$("#lst_type")[0].selectedIndex = 0;
}
else
{
dvr_type = "sub";
$("#lst_type")[0].selectedIndex = 1;
}
var flashvars =
{
player_max: dvr_camcnt,
usr:dvr_usr,
pwd:dvr_pwd
};
var params =
{
player_max: dvr_camcnt,
allowFullScreen: "true"
};
var attributes =
{
id: "viewer",
name: "viewer"
};
swfobject.embedSWF("JaViewer.swf?player_max=4", "flashcontent", "100%", "100%", "10.2.0","expressinstall.swf", flashvars, params, attributes);
var container = $("#chn_container")[0];
for(var i = 0; i < dvr_camcnt; i++)
{
var str = "<div style=\"color:#FFFFFF;\"><img id=\"chn_status_" + i + "\" align=\"absmiddle\" src=\"images/ch_1.jpg\" width=\"28\" height=\"18\" onMouseOver=\"pic_btn_over(this)\" onMouseOut=\"pic_btn_out(this)\" onMouseDown=\"pic_btn_down(this)\" onMouseUp=\"pic_btn_up(this)\"><span lxc_lang=\"view_Channel\">Channel</span>" + (i+1) + " <a href=\"/cgi-bin/snapshot.cgi?chn=" + i + "&u=" + dvr_usr + "&p=" + dvr_pwd + "&q=0&d=1&rand=" + Math.random() + "\" style=\"color:white; text-decoration:none;\"><span lxc_lang=\"view_snapshot\">Snapshot</span></a></div>";
container.innerHTML += str;
}
language_show_page("view_title");
setTimeout(goto_open_all, 2000);
});
function goto_open_all()
{
if(dvr_viewer && dvr_viewer.ConnectRTMP)
{
dvr_viewer.SetPlayerNum(dvr_camcnt);
dvr_viewer.Login(dvr_usr, dvr_pwd, "");
// switch(dvr_camcnt)
// {
// case "4":
// dvr_viewer.flSetViewDiv(4);
// break;
// case "8":
// dvr_viewer.flSetViewDiv(9);
// break;
// case "16":
// dvr_viewer.flSetViewDiv(16);
// break;
// case "24":
// dvr_viewer.flSetViewDiv(25);
// break;
// }
open_all(dvr_camcnt);
}
else
{
dvr_viewer = $("#viewer")[0];
setTimeout(goto_open_all, 1000);
}
}
function open_one(index)
{
if($("#chn_status_" + index)[0].parentNode.style.fontSize=="16px" || $("#chn_status_" + index)[0].parentNode.style.fontSize=="")
{
// dvr_viewer.flSetDomain(index, "http://" + window.location.host + "/");
// dvr_viewer.flConnectVideo(index, dvr_type == "main" ? 1 : 0);
dvr_viewer.SetPoster(index, "/cgi-bin/snapshot.cgi?chn=" + index + "&u=" + dvr_usr + "&p=" + dvr_pwd + "&q=0&d=1&rand=" + Math.random());
dvr_viewer.ConnectRTMP(index, "rtmp://" + location.host, "ch" + index + "_" + (dvr_type=="main"?"0":"1") + ".264");
$("#chn_status_" + index)[0].parentNode.style.color="#ffffff";
$("#chn_status_" + index)[0].parentNode.style.fontSize="17px";
for(var i = 0; i < dvr_camcnt; i++)
{
if($("#chn_status_" + i)[0].parentNode.style.fontSize != "17px")
{
$("#pb_disconn_all")[0].parentNode.style.color="#ffffff";
$("#pb_conn_all")[0].parentNode.style.color="#ffffff";
return;
}
}
$("#pb_disconn_all")[0].parentNode.style.color="#ffffff";
$("#pb_conn_all")[0].parentNode.style.color="#000000";
return;
}
}
function open_all(_count)
{
for(var i = 0; i < _count; i++)
{
open_one(i);
}
}
function close_one(index)
{
if($("#chn_status_" + index)[0].parentNode.style.fontSize=="17px")
{
// dvr_viewer.flDisconnectVideo(index);
dvr_viewer.Disconnect(index);
$("#chn_status_" + index)[0].parentNode.style.fontSize="16px";
$("#chn_status_" + index)[0].parentNode.style.color="#000000";
$("#pb_disconn_all")[0].parentNode.style.color="#000000";
for(var i = 0; i < dvr_camcnt; i++)
{
if($("#chn_status_" + i)[0].parentNode.style.fontSize == "17px")
{
$("#pb_disconn_all")[0].parentNode.style.color="#ffffff";
$("#pb_conn_all")[0].parentNode.style.color="#ffffff";
return;
}
}
$("#pb_disconn_all")[0].parentNode.style.color="#000000";
$("#pb_conn_all")[0].parentNode.style.color="#ffffff";
return;
}
}
function close_all()
{
for(var i = 0; i < dvr_camcnt; i++)
{
close_one(i);
}
}
function toggle_one(index)
{
if($("#chn_status_" + index)[0].parentNode.style.fontSize == "16px" || $("#chn_status_" + index)[0].parentNode.style.fontSize == "")
{
open_one(index);
}
else
{
close_one(index);
}
}
Как вы можете видеть, RTMP-ссылка должна быть rtmp: //host/ch#_1.264 (Хост - это локальный IP или удаленный домен / IP, а # - номер канала камеры; также мне нужен подпоток, поэтому он будет равен 1,264, и нет 0,264). Однако, похоже, это не сработает.
Есть идеи о том, чего мне здесь не хватает? Заранее спасибо.