Streaming video to 8400 touch panel

JOHNBONZJOHNBONZ Junior MemberPosts: 99
Has anyone successfully streamed video to ur touchpanels using the setup in TP4 from an encoder like wirepath or AXIS?
I can get dynamic images to show up on 8400 touch panel using HTTP protocol , but not streaming video. I am not sure how this even works since streaming video takes up a lot of space - where does the streaming video go if served from server?

syntax for Dynamic images in TP4:
protocol:HTTP
host:ip address
path:axis-cgi/mjpg
file: video.cgi?cam7
user:admin
pass:admin

Comments

  • ericmedleyericmedley Senior Member - 3709 Posts Posts: 4,159
    I thnk this question was just covered recently. .??
  • JOHNBONZJOHNBONZ Junior Member Posts: 99
    Streaming video to 8400 touch panel

    well I asked if anyone has ever used a Wirepath encoder to stream video and didn't get a response but it was from a different post so I thought I would create a new post
  • Hugh Barker@PVHugh [email protected] Junior Member Posts: 8
    From my experience you cannot stream to any wireless panel. You can stream to the MVP 9000 when it is docked in a wall or table station.
  • John NagyJohn Nagy CineTouch Product Manager Posts: 1,514
    You can stream video to wireless panels. This occurs every time you use a MET-ECOM door unit with camera. This isn't an AMX proprietary stream, it's plain motion mpeg.

    Similarly, many of our dealers use various network cameras to stream to all panels, wireless and not.

    We even do it with the $80 9100a video streamer you see on ebay and geek shops.
    https://www.google.com/shopping/product/16845482245710536735?q=9100a+video+server&ie=utf-8&oe=utf-8&rls=org.mozilla:en-US:official&client=firefox-a&channel=sb&sa=X&ei=H4WqU7iTHYvtoAS73oGoBA&ved=0CJMBELkk
  • JOHNBONZJOHNBONZ Junior Member Posts: 99
    Streaminmg video to 8400 touchpanel

    so this product, IP Video 9100A Plus Network Video Server, works? You got it to stream to touch panel? The cams are not IP cams but regular analog cams
  • John NagyJohn Nagy CineTouch Product Manager Posts: 1,514
    JOHNBONZ wrote: »
    so this product, IP Video 9100A Plus Network Video Server, works? You got it to stream to touch panel? The cams are not IP cams but regular analog cams

    To quote Monty Python, "No, I was quite actually just deliberately wasting your time."

    Seriously, yes.they.work. They are composite to ip stream boxes.

    We and our dealers have placed dozens of them in various jobs, and while they are low resolution streams, they work. One dealer had a fair number fail quickly; as no others reported issues like that, I am guessing environmental or a bad manufacture group were the cause there. No promises... other than we know they work and use them. But remember this is an $80 box. Do not expect miracles of performance or longevity at this price. OTOH, I have one here in my hand that has worked in my home for 6 years. They also make or made a metal-box version that probably is more hardy, with BNC instead of RCA jacks, etc. called the 9100b (google it to find them).

    The magic path to get the stream, not obvious in their documentation, but freely discussed in an active online community for users of the 9100a:
    http://192.168.15.31/GetData.cgi
    If you need to parse that into AMX-dynamics:

    Host: <ip address>
    Path: <none>
    File: GetData.cgi

    They have another mode that lets you get images as stills, updated upon your request:
    192.168.15.31/Jpeg/Camimg.jpg

    The still mode is good to use if you have to feed 500i panels. They (and maybe some other similar era panels like the 1000i) don't care for the stream format and tend to lock up and need a reboot if you make them try. All the older and newer panels seem to have no problem.

    For the one place where they had both 500i panels and these 9100a boxes, we just had all the other panels get the stream, and the problem panels just did the stills with a 1 second refresh.... not quite motion but not quite stills.

    There's some documentation about the commands you can send (on IP) to it to select which of four composite inputs to view, or set it to round-robin by itself.

    The community includes modified firmwares and a lot of trick stuff that mostly looks like more trouble than it's worth to me, due to the time sink in trying to get it all robust.

    Google is your friend. Look it up and read about it.
  • JOHNBONZJOHNBONZ Junior Member Posts: 99
    Streaming video to 8400 touch panel

    So I bought the IP Video 9100A and it works! Able to stream my cams to the 8200 touch panel. But I want to utilize the 4 inputs on the 9100A. You mentioned active online community for users of the 9100a - I was unable to see this other than the forum for http://support.yoics.com/.
    The documentation is not very good for the 9100A
    I want to be able to clikc a button on my 8400 touch panel and toggle between the sources on the 9100A. I looked at the forum from my above link and did not see anyway to control the sources - so if I want to view source 1, source 2 or whatever there has to be a way to do this. The round robin feature on the web screen is not good as if I choose this function the touch panel goes thru each source.

    So were you able to control the Sources from the IP Video 9100A ?
    Thanks, this little guy seems to work well for the price - $77
  • John NagyJohn Nagy CineTouch Product Manager Posts: 1,514
    Yep, but we never used the function so it isn't in our standard driver set, and I can't locate the notes for it at the moment. It's an HTTP command similar to the GET for video. I'll keep looking, but no promises. It was at least 4 years ago. I got it from the YOICS discussions... though it does not require their firmware.

    Since multiple panels want to see different cameras at the same time, funneling 4 of them through one streamer seemed unduly limiting at the price-per-channel of these boxes. It also made a single point of failure for all 4 cameras, so we abandoned the idea of switching. Still, a good thing to know you can....
  • John NagyJohn Nagy CineTouch Product Manager Posts: 1,514
    Found some stuff at http://www.benlo.com/ip9100a/faq.html
    and a Yahoo group at https://groups.yahoo.com/neo/groups/9100/info

    Much more good tech at:
    http://www.campworld.net/thewiki/pmwiki.php/HWHacking/Aviosys9100

    Getting Access to JPGs
    I wanted to get the raw JPGs from the video server. This would allow me to put the images up on my website. It took some digging but here it is. Below are the URLs for the image file.
    [url]http://[your[/url] 9100 ip address]/Jpeg/CamImg.jpg

    Changing the Video Channel
    To get the different video images you'll need to use round robin mode or change the video channel. The following url changes the channel.
    yourip/SetChannel.cgi?Channel=M
    M=the channel number 0-3 (Note the first composite input is channel 0, not 1)
    (I believe the single audio input stays live on all video selections for purposes of the dedicated web software, but isn't usable via AMX panels)

    Getting the Video Channel you are on
    What channel am I on? The following url shows you how to get the channel number.
    yourip/GetChannel.cgi

    Configuring The Device For Round Robin Mode
    Here is the information on setting the camera into round robin mode. Use the following url.
    yourip/SetChannel.cgi?Channel=M
    M=256+C1+C2+C3+C4
    Here's a table with the values for C1-C4
    ! Video Input ! Off ! Selected
    C1 0 1
    C2 0 2
    C3 0 4
    C4 0 8
    For example I want to use cameras 1 and 3 in round robin mode.
    So M=256+1+0+4+0=261

    Changing the Camera Resolution
    This is the quick easy way to change the camera resolution. Use the following url.
    yourip/ChangeResolution.cgi?ResType=N
    N=the following
    0 - 176*144
    1 - 352*288
    2 - 320*240
    3 - 640*480

    Change the Image Compression
    Below is the url for changing the image compression level.
    yourip/ChangeCompressRatio.cgi?Ratio=x
    x=the following ratio
    0 = low (image size 18.2kB)
    1 = high (image size 25.2kB)
    2 = medium (image size 27.2kB)
    3 = clarity (image size 30.2kB)
    4 = motion (image size 34.7kB)
  • John NagyJohn Nagy CineTouch Product Manager Posts: 1,514
    Wow. There's a number of flavors of the box now.
    http://www.techsourceglobal.com/ProductSubCategoryContents.aspx?PrdSubCatID=237&PrdCatID=125
    This one includes an RS232/485 interface to manage pan/tilt/zoom via network control.
    The description is a bit ominous:
    "The IP Video 9100B-RS is equipped with cutting edge embedded server technology,it has 4 BNC Video inputs, 1 Audio input and Rs485 controller for PTZ Camera & Speedy Doom."

    And there's an even bigger box unit with built-in WIFI for places you can't get a net cable.
    Probably costing more than $77.
  • JOHNBONZJOHNBONZ Junior Member Posts: 99
    Streaming video to 8400 touch panel

    wow this is great stuff!! Thanks. I have 2 video sources connected to the 9100A. One is the output from my DVR, so it could show 16 cams or 1 cam, I control that by telling DVR what camera to show and it outputs to the 9100A and then to my touch panel. The other, get this, is my Blueray, so I can see my Pandora screen since I am blind on what song or radio station is being played. I just tested what you gave me and it works. All I need to do is now program my AMX panel to switch between my sources.
    So bottom line is you just gave me the path to control Sources from the 9100A using my AMX panels.

    Again good job!!
  • JOHNBONZJOHNBONZ Junior Member Posts: 99
    Streaming video to 8400 touch panel

    When I issue this command to see which Video capabilities is on :
    http://192.168.1.72/GetCapability.cgi - so the code in NetLinx I did this:

    dvIPCams = 0:8:0;
    .
    IP_CLIENT_OPEN(dvIPCams.PORT,'192.168.1.72',80,TCP_IP);

    cVideoStr = "'/GetCapability.cgi HTTP/1.0',13,10,13,10";
    send_string dvIPCams,cVideoStr;

    then the systems returns from the STRING DATA event:
    :
    ---SendString 0:0:0 too long 293 truncated to 254
    HTTP/1.0 200 OK$0D$0ADate: Sun, 02 Feb 2003 14:39:05 GMT$0D$0AServer: WYM/1.0$0D$0AConnection: close$0D$0AContent-Type: text/plain$0D$0AContent-Length: 0$0D$0ALast-Modified: Sun, 02 Feb 2003 14:39:05 GMT$0D$0APragma: no-cache$0D$0ACache-Cont

    Now I expected the following from the STRING Event - this is what the web page shows when I enter http://192.168.1.72/GetCapability.cgi in a web browser:

    Brightness = 256
    Contrast = 16
    Saturation = 16
    Hue = 256
    Sharpness = 129
    Resolution = 126
    Quality = 31

    How do I get these values back from the STRING Event? I Am I issuing the wrong command in Netlinx?
  • John NagyJohn Nagy CineTouch Product Manager Posts: 1,514
    A more basic question- To what end are you wanting to ask the stream specs in operation mode from a panel? What will that do for you? If you want to set a mode, just send the command to do it, don't ask first. If the color is washed out, what will knowing the current setting number do for you? Just turn up the saturation. If it is already all the way up, well, that number didn't help you anway.
  • JOHNBONZJOHNBONZ Junior Member Posts: 99
    Streaming video to 8400 touch panel

    From the webpage when u enter http://192.168.1.72/GetCapability.cgi

    it returns:

    Brightness = 256
    Contrast = 16
    Saturation = 16
    Hue = 256
    Sharpness = 129
    Resolution = 126
    Quality = 31

    These numbers per se don't really mean anything but the general question is how does AMX return the same value as the web page? The GET command, I thought, should return what web page returns - as u see below what AMX returns

    So the combination of the following commands should return the same values as the web page but it doesn't

    IP_CLIENT_OPEN(dvIPCams.PORT,'192.168.1.72',80,TCP_IP);
    send_string dvIPCams,"'Get /GetCapability.cgi HTTP/1.0',13,10,13,10"

    AMX returns:
    strVideoBuff=HTTP/1.0 200 OK$0D$0ADate: Sun, 02 Feb 2003 15:23:23 GMT$0D$0AServer: WYM/1.0$0D$0AConnection: close$0D$0AContent-Type: text/plain$0D$0AContent-Length: 0$0D$0ALast-Modified: Sun, 02 Feb 2003 15:23:23 GMT$0D$0APragma: no-cache$0D$0ACache-Cont
  • John NagyJohn Nagy CineTouch Product Manager Posts: 1,514
    You don't understand web pages. The request triggers a web page reply, evidenced by the fact that a web browser displays it as a formatted page.

    If you look at the web result, and click the browser's "show page source code" option, what you will see is what was actually sent by the box. It will look a lot like what the NetLinx got. Until your buffer ran out.

    You would need to capture the whole HTML stream, then parse it for strings you want to use as signs that the values you want are nearby, then copy those parts of the string to variables you will use to send to panels. If, that is, there were any point in this that merited the effort.

    Analogous, imagine you want to "get" a JPG image from a web or ftp server via the Netlinx. You request it and push the result into a string. Look at the string. It is not a picture, it is data...
    A web page is not a "page", it is a presentation of formatted data.
  • JOHNBONZJOHNBONZ Junior Member Posts: 99
    Streaming video to 8400 touch panel

    Yes but this is data not a pic or bitmap, so I should see the values return since it is text.

    From Chrome when I do a View Source, I don't see "show page source code", I get this:

    Brightness = 256
    Contrast = 16
    Saturation = 16
    Hue = 256
    Sharpness = 129
    Resolution = 126
    Quality = 31

    No, html, no javascript. Then from chrome, if I goto tools, view source, I then see the html, div tags, javascript etc, but not Brightness, Contrast etc from the results.

    I wrote a Stock ticker app and a weather app within AMX and once submitted page with a stock symbol or zip code for weather app, I retrieved thousands of bytes and parsed it out by using a string buffer instead of the DATA.text. I call a function that parses thru the strVideoBuff and removes the carriage return

    create_buffer dvIPCams, strVideoBuff;

    within STRING event of the dvIPCams
    STRING:
    {
    if(length_string(strVideoBuff) > 0 )
    {
    parseVideo();
    }
    }

    then within parseVideo I trim off the strVideoBuff by carriage return

    strTemp = remove_string(strVideoBuff,"13",1);

    so I process by chunks, delimited by carriage return, so strTemp just has data between carriage returns.
    But this still didn't produce the results I expected

    Results:

    Line 24 (01:55:38):: SendString 0:0:0 too long 306 truncated to 254

    Line 25 (01:55:38):: strVideoBuff=HTTP/1.0 200 OK$0D$0ADate: Sun, 02 Feb 2003 15:23:23 GMT$0D$0AServer: WYM/1.0$0D$0AConnection: close$0D$0AContent-Type: text/plain$0D$0AContent-Length: 0$0D$0ALast-Modified: Sun, 02 Feb 2003 15:23:23 GMT$0D$0APragma: no-cache$0D$0ACache-Cont

    Line 26 (01:55:38):: length strVideoBuff=261

    This is the string buffer data after the GET. By using a string buffer all the bytes should load regardless of the size and then I just parse thru.
  • viningvining X Member Posts: 4,352
    When are you sending the get request, right after you call ip_client_open, in the online event or in the string event handler after you receive 200 OK?

    Your buffer will only receive typically 1500 bytes at a time max (max mtu) so it will take many string events to recieve a complete return sometimes so when I parsing large html pages I'll search through data.text to look for the html end tag instead of my buffer since data.text will never be more than 2048 (size of data.text) but typically 1500 bytes or less chunk. That's so I'm not using find_string on the entire contents of my buffer which increases in size every time the string event triggers.
  • JOHNBONZJOHNBONZ Junior Member Posts: 99
    Streaming video to 8400 touch panel

    I issue the GET right after the IP_CLIENT_OPEN, which is done in a Button Event

    IP_CLIENT_OPEN(dvIPCams.PORT,'192.168.1.72',80,TCP _IP);
    send_string dvIPCams,"'Get /GetCapability.cgi HTTP/1.0',13,10,13,10"
Sign In or Register to comment.