I made a better remote-live-view page [OLD]

superfake123

Young grasshopper
Joined
Feb 8, 2015
Messages
90
Reaction score
1
I'm still getting the error I mentioned previously... when UI2 detects that the session has expired it sometimes will get stuck at a link like the following:

http://ip:60081/ui2.htm
?
page=/image/outside?time=1461606661050&w=1496

Also UI2 doesn't seem to support 2 different servers on the same IP... I'll have http://ip:60081 and http://ip:60082 and it kicks one off when I try to log into the other
 

Rodger3876

n3wb
Joined
Feb 14, 2016
Messages
21
Reaction score
8
Location
Hayward, MN
Re: Can’t get remember me or log in automatically to work.

Did some testing & checking & could not figure out problem? So I deleted the user in Blue Iris & added it back and every thing seems to be fine Today from the remote location. If it acts up again I will remember to log in under another user
 

wcrowder

Getting the hang of it
Joined
Oct 8, 2015
Messages
294
Reaction score
53
Location
French Lick, Indiana 47432
Good advice. If refreshing the page did not solve the problem, make sure the user account has access to the camera group in question.

Any group a cycle is enabled for should appear in that dropdown list, as you can see with my "backyard cycle" here:
Ok, I feel stupid... LMAO.

For some reason it didn't occur to me that I had to set it up for each group using the gear box on the PTZ controls. I hide the PTZ controls on the display since that's in the dinning room on the wall in the house. I use Amt VNC to change settings when I need to work on the box itself. I use UI2 as my primary way to view and review video in my office.

Thanks again BP.
 
Last edited by a moderator:

bp2008

Staff member
Joined
Mar 10, 2014
Messages
12,673
Reaction score
14,017
Location
USA
I'm still getting the error I mentioned previously... when UI2 detects that the session has expired it sometimes will get stuck at a link like the following:

http://ip:60081/ui2.htm
?
page=/image/outside?time=1461606661050&w=1496
This doesn't make sense. Can you show a screenshot?

Also UI2 doesn't seem to support 2 different servers on the same IP... I'll have http://ip:60081 and http://ip:60082 and it kicks one off when I try to log into the other
Probably your problem is that cookies are being shared between both servers so your two Blue Iris servers override each other's session cookie. This is something web browsers do, and I have no control over it. You can work around it by using a DDNS address in one browser window and the actual IP address in another browser window. Or you could use two different DDNS addresses. Just so long as the browser sees the host name is different, the cookie collection won't be shared.
 

bp2008

Staff member
Joined
Mar 10, 2014
Messages
12,673
Reaction score
14,017
Location
USA
Interesting. I see your browser (Chrome?) is trying but failing to download the other clips. I haven't seen anything like this happen.

Perhaps the clips you can't download are still being recorded to?
 
Joined
Apr 26, 2016
Messages
4
Reaction score
0
Oh wow you are right. When I click on the older ones it works. Thanks!

Also is there any way to download the clip in another format that's playable in regular player?
 

bp2008

Staff member
Joined
Mar 10, 2014
Messages
12,673
Reaction score
14,017
Location
USA
I've just uploaded a new update. The most interesting new feature is H264 streaming using Blue Iris's HLS streaming capability. It has 5 to 15 seconds of delay which makes it poorly suited for a primary viewing method, so I have only implemented this in a limited capacity.

v0.15.0 - 2016-04-26
+ Added limited H264 streaming capability. See the "HLS" button in the top bar and in the context menu which opens by long-pressing a live camera. Read more about it in the Top Bar options, where you can find a toggle for the top bar HLS button.
+ Added livestream.htm which takes a URL parameter "cam" specifying the short name of the camera or group to stream in H264 format.
* Limited the animated clip preview so it can't change between clips more often than every 500 milliseconds.
* Fixed a bug where clips sometimes failed to delete correctly.
* Fixed a bug where the seek bar considered two rapid clicks to be a double click even if the pointer moved significantly between clicks.







 
Joined
Apr 26, 2016
Messages
4
Reaction score
0
ok thanks and great update, just tried it. i hope blue iris will implement that soon.

Im getting a different error now when trying to download clips or alerts. Its happening for all clips.


error.png error console.png
 
Last edited by a moderator:

bp2008

Staff member
Joined
Mar 10, 2014
Messages
12,673
Reaction score
14,017
Location
USA
Last edited:

bp2008

Staff member
Joined
Mar 10, 2014
Messages
12,673
Reaction score
14,017
Location
USA
Oops. I must have broken this in the last update. Will fix in a day or two. Thanks for reporting.
I think I found the problem, but I am not able to do a release right now. Try opening the file ui2/wdContextMenu/jquery.contextmenu.js and replace its content with this:

Code:
(function ($)
{
	function returnfalse() { return false; };
	$.fn.contextmenu = function (option)
	{
		option = $.extend({ alias: "cmroot", width: 150, clickType: "long" }, option);
		var ruleName = null;
		var target = null;
		var groups = {};
		var mitems = {};
		var actions = {};
		var showGroups = [];
		var itemTpl = "<div class='b-m-$[type]' unselectable=on><nobr unselectable=on><img src='$[icon]' align='absmiddle'/><span unselectable=on>$[text]</span></nobr></div>";
		var gTemplet = $("<div/>").addClass("b-m-mpanel").attr("unselectable", "on").css("display", "none");
		var iTemplet = $("<div/>").addClass("b-m-item").attr("unselectable", "on");
		var sTemplet = $("<div/>").addClass("b-m-split");
		//build group item, which has sub items
		var buildGroup = function (obj)
		{
			groups[obj.alias] = this;
			this.gidx = obj.alias;
			this.id = obj.alias;
			if (obj.disable)
			{
				this.disable = obj.disable;
				this.className = "b-m-idisable";
			}
			$(this).width(obj.width)/*.click(returnfalse)*/.mousedown(returnfalse).appendTo($("body"));
			obj = null;
			return this;
		};
		var buildItem = function (obj)
		{
			var T = this;
			//T.title = obj.text;
			T.idx = obj.alias;
			T.gidx = obj.gidx;
			T.data = obj;
			T.innerHTML = itemTpl.replace(/\$\[([^\]]+)\]/g, function ()
			{
				return obj[arguments[1]];
			});
			if (obj.disable)
			{
				T.disable = obj.disable;
				T.className = "b-m-idisable";
			}
			obj.items && (T.group = true);
			obj.action && (actions[obj.alias] = obj.action);
			mitems[obj.alias] = T;
			T = obj = null;
			return this;
		};
		//add new items
		var addItems = function (gidx, items)
		{
			var tmp = null;
			for (var i = 0; i < items.length; i++)
			{
				if (items[i].type == "splitLine")
				{
					//split line
					tmp = sTemplet.clone()[0];
				} else
				{
					items[i].gidx = gidx;
					if (items[i].type == "group")
					{
						//group 
						buildGroup.apply(gTemplet.clone()[0], [items[i]]);
						arguments.callee(items[i].alias, items[i].items);
						items[i].type = "arrow";
						tmp = buildItem.apply(iTemplet.clone()[0], [items[i]]);
					} else
					{
						//normal item
						items[i].type = "ibody";
						tmp = buildItem.apply(iTemplet.clone()[0], [items[i]]);
						$(tmp).click(function (e)
						{
							var skipReturn = false;
							if (!this.disable)
							{
								if ($.isFunction(actions[this.idx]))
								{
									if (actions[this.idx].call(this, target))
										skipReturn = true;
								}
								hideMenuPane();
							}
							if (!skipReturn)
								return false;
						});

					} //end if
					$(tmp).bind("contextmenu", returnfalse).hover(overItem, outItem);
				}
				groups[gidx].appendChild(tmp);
				tmp = items[i] = items[i].items = null;
			} //end for
			gidx = items = null;
		};
		var overItem = function (e)
		{
			//menu item is disabled          
			if (this.disable)
				return false;
			hideMenuPane.call(groups[this.gidx]);
			//has sub items
			if (this.group)
			{
				var pos = $(this).offset();
				var width = $(this).outerWidth();
				showMenuGroup.apply(groups[this.idx], [pos, width]);
			}
			this.className = "b-m-ifocus";
			return false;
		};
		//menu loses focus
		var outItem = function (e)
		{
			//disabled item
			if (this.disable)
				return false;
			if (!this.group)
			{
				//normal item
				this.className = "b-m-item";
			} //Endif
			return false;
		};
		//show menu group at specified position
		var showMenuGroup = function (pos, width)
		{
			var bwidth = $("body").width();
			var bheight = document.documentElement.clientHeight;
			var mwidth = $(this).outerWidth();
			var mheight = $(this).outerHeight();
			pos.left = (pos.left + width + mwidth > bwidth) ? (pos.left - mwidth < 0 ? 0 : pos.left - mwidth) : pos.left + width;
			pos.top = (pos.top + mheight > bheight) ? (pos.top - mheight + (width > 0 ? 25 : 0) < 0 ? 0 : pos.top - mheight + (width > 0 ? 25 : 0)) : pos.top;
			$(this).css(pos).show();
			showGroups.push(this.gidx);
		};
		//to hide menu
		var hideMenuPane = function (e)
		{
			var alias = null;
			for (var i = showGroups.length - 1; i >= 0; i--)
			{
				if (showGroups[i] == this.gidx)
					break;
				alias = showGroups.pop();
				groups[alias].style.display = "none";
				mitems[alias] && (mitems[alias].className = "b-m-item");
			} //Endfor
			if (option.onCancelContextMenu && $.isFunction(option.onCancelContextMenu))
				option.onCancelContextMenu.call(this, e);
			//CollectGarbage();
		};
		function applyRule(rule)
		{
			if (ruleName && ruleName == rule.name)
				return false;
			for (var i in mitems)
				disable(i, !rule.disable);
			for (var i = 0; i < rule.items.length; i++)
				disable(rule.items[i], rule.disable);
			ruleName = rule.name;
		};
		function disable(alias, disabled)
		{
			var item = mitems[alias];
			item.className = (item.disable = item.lastChild.disabled = disabled) ? "b-m-idisable" : "b-m-item";
		};

		/* to show menu  */
		function showMenu(e, menutarget)
		{
			target = menutarget;
			showMenuGroup.call(groups[option.alias], { left: e.pageX, top: e.pageY }, 0);
			$(document).one('mousedown', hideMenuPane);
		}
		var $root = $("#" + option.alias);
		var root = null;
		if ($root.length == 0)
		{
			root = buildGroup.apply(gTemplet.clone()[0], [option]);
			root.applyrule = applyRule;
			root.showMenu = showMenu;
			addItems(option.alias, option.items);
		}
		else
		{
			root = $root[0];
		}
		var me = $(this).each(function ()
		{
			var clickHandler = function (e, self)
			{
				var bShowContext = (option.onContextMenu && $.isFunction(option.onContextMenu)) ? option.onContextMenu.call(this, e) : true;
				if (bShowContext)
				{
					if (option.onShow && $.isFunction(option.onShow))
					{
						option.onShow.call(self, root);
					}
					root.showMenu(e, self);
				}
				return false;
			};
			if (option.clickType == "left")
				return $(this).click(function (e)
				{
					if (e.which == 1)
						return clickHandler(e, this);
				});
			else if (option.clickType == "middle")
				return $(this).click(function (e)
				{
					if (e.which == 2)
						return clickHandler(e, this);
				});
			else if (option.clickType == "right")
				return $(this).bind('contextmenu', function (e)
				{
					return clickHandler(e, this);
				});
			else
				return $(this).longpress(function (e)
				{
					return clickHandler(e, this);
				});
		});
		//to apply rule
		if (option.rule)
		{
			applyRule(option.rule);
		}
		gTemplet = iTemplet = sTemplet = itemTpl = buildGroup = buildItem = null;
		addItems = overItem = outItem = null;
		//CollectGarbage();
		return me;
	}
})(jQuery);
 

turbov6camaro

Young grasshopper
Joined
Apr 27, 2016
Messages
35
Reaction score
0
Im sorry if i missed it i tried search the thread and reading but 65 pages is toomuch, is there anyway to make this default page when loging in ?

Also thank you very much it was getting annoying having to RDP to my server to playback video without having to watch the ENTIRE video

also i get no sound from my camera with a MIC, is that i known issue?
 
Last edited by a moderator:

piconut

BIT Beta Team
Joined
Feb 17, 2015
Messages
176
Reaction score
63
Location
Austin, TX
Im sorry if i missed it i tried search the thread and reading but 65 pages is too much, is there anyway to make this default page when loging in ?
In Blue Iris, open the Blue Iris OPTIONS > USERS and select your username and then click EDIT. Under EDIT change Homepage to ui2.htm


bi_options.PNG

Also thank you very much it was getting annoying having to RDP to my server to playback video without having to watch the ENTIRE video

also i get no sound from my camera with a MIC, is that i known issue?
I don't have any cameras with audio so I can't help you there.
 

Attachments

gleep52

Young grasshopper
Joined
Sep 8, 2014
Messages
74
Reaction score
3
...also i get no sound from my camera with a MIC, is that i known issue?
BP2008 - that's a good question I guess I was missing too - is there a way to get audio to stream to the web browser when a specific camera is selected? And is there a way to tap into the two way audio like the mobile app has?
 

bp2008

Staff member
Joined
Mar 10, 2014
Messages
12,673
Reaction score
14,017
Location
USA
also i get no sound from my camera with a MIC, is that i known issue?
UI2 can't play audio from recordings, but it can do live audio. Make sure the audio button is in the unmuted state. For now, I suggest you use firefox for this because it works best. If you try default.htm or default2.htm (default2.htm is a slightly improved version I wrote years ago) in Internet Explorer, then you will be using the ActiveX plugin which should be better at audio all-around, including in recordings I think.
 

bp2008

Staff member
Joined
Mar 10, 2014
Messages
12,673
Reaction score
14,017
Location
USA
BP2008 - that's a good question I guess I was missing too - is there a way to get audio to stream to the web browser when a specific camera is selected? And is there a way to tap into the two way audio like the mobile app has?
If you full-screen a camera that Blue Iris thinks has audio, you should find this speaker button up in the top bar. Use Firefox for best audio performance.





You'll also see that icon when viewing a camera group, if you have audio enabled for the group, though I am not sure what the audio source is in that case.

Two way audio is not possible right now. Maybe in the future, but I have never worked with two-way audio in a browser before and I imagine whatever the browser is capable of is not compatible with what Blue Iris is capable of.
 

ruppmeister

Getting the hang of it
Joined
Apr 15, 2015
Messages
668
Reaction score
98
Hmm. I have no idea how UI2 is sending you there, but I will keep an eye out for that happening in the future.
Almost looks like it is going through a reverse proxy and the path is getting passed in an odd way. Have not seen this myself either.
 

superfake123

Young grasshopper
Joined
Feb 8, 2015
Messages
90
Reaction score
1
only time I've seen it happen the warning box popped up at bottom right corner saying UI2 has detected that your session has expired and then it just forwards me to that
 
Top