Axis does not support RTMP as a transmission protocol in their firmware (correct me if I am wrong about this), this seems to be an omission as RTMP offers a pretty good way for the camera to initiate an outbound connection to an RTMP service somewhere outside the network. I believe this is how DropCam works (again, an assumption).

As most probably know (or should know), an Axis camera is basically a small Linux computer with a camera attached. Axis will let you download a development environment, which you can then use to compile applications for the camera. This is called ACAP.

Before compiling an RTMP library for ACAP, I decided to check if someone else had done this. Turns out CamStreamer had done so, and I decided to give it a whirl.

Setup is extremely simple, and the UI looks modern and clean. It has support for some of the most popular streaming services, but I needed the RTMP ingest server (Universal)  as I have my own RTMP servers in the cloud.


Setting this stuff up was trivial,


The system pretty much worked like a charm with a single exception. During configuration, there was an error message telling me that the camera could not reach an outside host on port 1935 (the RTMP port). The error message is helpful and accurate. But later, I lost my internet connection completely (a screw-up at my ISP, where they switched me back to DHCP) and I was unable to enter the RTMP configuration page on the camera entirely. I guess this is because the HTML/configuration is served from a host in the cloud. I did not dig into it, but it struck me as a bit odd.

The ACAP application is pretty expensive: $299 for a 1-camera license (at the time of writing). This is pretty steep as you can hook up a Raspberry-PI type device that will do the same for several cameras for less than half that.

I am not sure why RTMP support is not built into more cameras (again, correct me if I am wrong). The “push” model of RTMP is almost perfect for cloud-based solutions, so why this is not standard fare for IP cameras is beyond me.

While Flash Video uses RTMP, RTMP can be used w/o Flash being involved at all. E.g. if I publish a stream via RTMP to EvoStream, I can view the stream via RTSP instead (and what can you do with RTSP streams and your favorite VMS?). It’s true that the reliance on TCP for RTMP introduces a bit of latency, but in practice, this is hardly a problem (if you are going to use a cloud solution, latencies are going to be pretty high compared to a local one).

Button Labels

I was recently in a discussion about labels on buttons. In the good old days, a button had a beveled look and sported a nice RGB(192,192,192) background. It “afforded” clicking, they said.

Today a “button” can be a piece of text with no border at all, it can be an image, an area on an image. Sometimes you need to click it, and sometimes you just need to move your cursor over it. People seem to understand that elements can be clicked, so clearly people are quite capable of understanding when something is clickable.

One thing that I have come across quite a few times is that the label needs to be almost a sentence. Even though very few sites actually do that, I often get the suggestion that the label should not be “files” but “show files”, or “open” should be “open file”, “checkout” should be “go to checkout”. I understand that people who have NEVER used the Internets before (its a series of pipes), would not understand the idea that you need to click a button to do something.

And when you are focusing just on that one button it doesn’t seem to add much clutter. But when ALL buttons have a long description it just becomes very messy, and difficult to navigate.

While it certainly is possible to design applications that cater to the n00b’s and the 1337’s, you usually have to make a choice and then stick with it. If you decide to cater to n00b’s then you make choices that punish the 1337’s and Vice Versa. But picking you target audience, and catering to them is usually a lot better than aiming for both. Don’t shoot rabbits with bear ammo, and don’t try to shoot at a bear with the rabbit gun either.

Focus Groups?

I am pretty sure that day to day interaction between clients and developers is the best way to develop useful, and remarkable products.

Here is what Jonathan Ive said

So how did the company decide what customers wanted – surely by using focus groups? “We don’t do focus groups,” he said firmly, explaining that they resulted in bland products designed not to offend anyone.