I am trying to figure out how difficult it will be to achieve this. I have C/C++ drivers to interface with a machine vision camera. All it does is grab frames from the camera at 14 fps as a .tif. I want to display this image stream in a browser.
My background is in hardware, drivers and applications, not in web development. How much trouble am I getting in to? How easy would it be to create a video stream from the images, and feed it to a video player on the webpage?
Related
I have a number of fullscreen-only applications that do not support scaling that I need to show on a single display. Some are showing video, all are showing content that updates frequently. Several of the applications cease rendering in the event they are minimized or occluded. We have no ability to change the applications behavior. None are showing protected media, nor does the system have to support playback of protected content.
Desired scenario:
Can I create virtual display devices using the Indrect Display Driver Model and render the frames to a surface in our application? How do I handle OPM? Is there a better way available?
Alternatives considered:
Move and resize the windows themselvesProblem: I have no way to scale the windows when in the "thumbnail" sized view
Render occluded windows via DWM Thumbnail APIProblem: some windows do not render when occluded.
Use desktop mirroring API to capture programProblem: We do not have a way to create "dummy" displays
Create one or more VMs and run each program on its own desktop. Transport video back to host via RDP using the Desktop Sharing API or a hypervisor-specific API Problem: licensing, complexity, stuttering video
Use Remote Desktop Services to create multiple sessionsProblems: Licensing, complexity
Use a multi-port display adapter with "dummy" connectors, then use DWM or Desktop MirroringProblems: Hardware cost, fixed resolutions supported, setup complexity
I believe you can create dummy, or "indirect" display at will
Either using the recently released Amyuni driver
https://www.amyuni.com/forum/viewtopic.php?t=3030
Or you can try this experimental driver on github
https://github.com/roshkins/IddSampleDriver
Right now I'm exploring using OBS to stream video out of such "indirect displays"
How Google glass recognizes location when the user captures an image in Google glass,
Using GPS Tag or
Image Recognition
please give brief description.
I think it has to be the Geotagging GPS tag, for, Google glass has only a 2D camera and has only a OMAP 4430 SoC, dual-core cpu which does not gives enough information and cpu power for the glass to do Image Recognition.
So far, only devices has fancy cameras, like the one in project tango, has Image Recognition
Even Google Glass itself does not have a GPS chip, it would pull location information from cell phone.
I have a very strange experience of bad audio quality of an HD embedded video.
I upload my video(formats like wmv,mp4 etc..) to my CMS application which will be stored in amazon s3 and it will be encoded using "http://api.encoding.com/". After encoding i play it from the user front-end of the CMS .
The strange problem i am facing is that,some of the videos are not having good audio quality when i play it from my mobile device(iphone,samsung galaxy,windows phone). The quality is bad only when i play it through the phone speakers. Audio quality is fine when i play it through the headset.
Any Ideas on this Friends???
Please advice me on this!!!!
Thank You....
Well, these arrays are actually pixel data from DICOM images. When i just send them as an array (size 100) of pixel arrays (each about 1mb) it overloads the browser quite obviously. Being a newbie to programming, i would appreciate being pointed in the right direction to start working on economically loading large files , i.e., image-stacks into browser window , preferably dynamically. Apologies if the query is not clear
Hmmm... So your application is both at the same time? DICOM server and DICOM viewer?
The server is ment to respond to query-retrieve SOP classes and deliver images, the viewer will be the system sending those requests.
DICOM concepts would say your server should just be serving the images, the viewer is displaying them (including local file management, ...).
That would end up with a fat client (e.g. javascript if you want the viewer to be in a web browser), otherwise you won't be able to to interact with images at the speed you would like to (smooth scrolling, maybe 3D reconstruction, etc.).
If you just want to have some image pre-view capabilities on your server, I would suggest making a page with ~10-16 thumbnail images, one view for one or two full-size images, and load them per request if a user wants to preview image series or a single image. With that, you reduce load time significantly and your user is able to pre-select the images prior to sending a full request.
For the full viewer, I would consider a local solution on the client. If it should be web-based or not (or maybe mixed) depends on your further applications.
In past projects, we used existing open source DICOM servers like dcm4che for handlng the server part and just pulled our data from there. But for a teaching system, it might be interesting to build the server on your own as well to show all parts of the concept.
Feel free to comment, I'll try to update the post to answer questions.
I had exactly this same problem trying to develop a multiframe dicom viewer using just plain html5.
In order to be able to load such a big amount of imaging data in the browser, I decided to try using some web storage technology on the client side. In particular, I was considering to do some initial tests with indexedDB.
Sadly, I am currently involved in other tasks, so the web viewer development is now stopped (again!) and these tests are still undone.
Anyway, I would try to do a proof of concept with indexedDB.
I'm looking to stream video's as part of a django app, but I've never done anything with video and don't really know where to start. I don't have all the details of the project yet, but I'm expecting a fairly small library of videos uploaded by one or two people (Think less than 100 videos of about 5 mins length).
I'm looking for a solution that allows users to upload videos using django admin. I want to reach the majority of desktop browsers (95%+), and obviously I want to keep my costs down. Saying that I do like the idea of using some sort of cloud based CDN (I've no idea if that's possible / appropriate for this size of project)
I really want to ask if anyone can point me int he right direction (tutorials / services / projects / code), but I realise that might not be specific enough.
So to be more specific -
Is it possible to stream video to browsers using just django and an apache web server?
What cloud hosting providers will support easy integration with a django app?
Will I need to convert the format of my video's before they're ready to stream?
Can I use Red5 with a cloud hosting solution.
I want to host the project on a Ubuntu server that I use to host a
couple of other (low traffic) django apps - would it be a mistake to install Red5
on a server with existing sites.
From recollection, the server has 12GB RAM and 4 cores (in a 1and1
uk datacentre). Will I have enough power / bandwidth to stream say 3-5 video's simultaneously? (assuming red5 / wowza).
I'm not interested in Flash because I was rooting for Apple. Do I
need to need to re-evaluate my prejudices to be free of my ignorance?
I never streamed videos using Django/Python, but I have some experience in the field of streaming video in frontend apps. I can certainly not answer all your questions. In my experience it does not really matter where the video is hosted, a CDN is fine if you want to distribute the video world-wide.
I personally think you should start with the question on how you want to play the video in the browser. Choose an appropriate video player (could be html5 video) and you have an idea of what is possible to play and what not.
3) The format matters depending on how you want to stream the video. Progressive download (e.g. mp4)? Live streaming (unprogressive, e.g. HLS)? You can find example videos online and test if your video player can play the videos on the platform you want to support.
7) As said, you need to check out which player to use in this case. HTML5 video is not widely supported enough yet in my opinion, but can play most formats in the most modern browsers (Chrome, Safari).
Hope that helps.