I have build a custom app(Android platform) that live streams my mic and camera to a wowza server. I want to extend the Microsoft PlayReady SDK (for securing the content),but I am a little bit confused about how to do it.
Far as I read here (see link below),I only need to follow the steps indicated there,and that is it. Or this tutorial works only with GoCoder?
http://www.wowza.com/forums/content....28PlayReady%29
After I read the PlayReady documentation,I found out that I also need to implement some code in my app(but it doesn't mention for which server I stream,or something else.Just how to implement their SDK). My app functionality is similar to GoCoders. It streams the media using an rtsp connection,and the video is a H.264 format.
My question is what is the proper way to implement the PlayReady SDK and make it work with my app and the wowza servers (I mean crypting/securing my videos)?
Thank you,
Bob
P.S. My app is not public yet.
Bob - DRM can be pretty complex and in most cases suited best suited for high value content, if you want to do that route there is some lifting to do.
The article you noted above tells you how to set up the BuyDRM PlayReady module on Wowza Streaming Engine (with any incoming source, not just GoCoder). Once you have enabled PlayReady on the Wowza server, you will not need to do anything more in the app as far as encoding goes, the encryption is all done on the server. What you will need however is a custom player that can play back this encrypted stream, as well as a PlayReady key server to manage access.
You may want to consider a somewhat lighter solution, like secure token and streamlock which is focused more on preventing unauthorized playback and transport encryption rather than content encryption.
Related
Can you suggest to me how to stream a live video (recording from webcam and microphone in syn) over the socket in java? I tried to search but only found ways to stream images over socket not a live video (capturing from webcam) along audio (using mic).
This is a really broad question, so it's difficult to provide a satisfactory answer. I can point you to some resources though.
Firstly, a popular protocol for this kind of application is the following:
https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol
Here is a link to a promising paper going in-depth on how this protocol can be implemented using Java:
https://www.researchgate.net/publication/228974152_A_Java-based_adaptive_media_streaming_on-demand_platform
Of course, you can also choose to use a pre-existing API (there are plenty of options). Additionally here are some StackOverflow posts that also touch upon this subject:
Live video streaming using Java?
Real-time audio streaming using HTTP - choosing the protocol and Java implementation
Good luck :)
I have few questions regarding development of desktop application and I can only access internet for first login where user will authenticate himself. I have an idea that I'll bring in the key used to encrypt videos from online server and save it to local db so key isn't in the code for anyone to inspect.
Is it a good method? As app will be running offline and I don't want anyone to access my videos.
I will have to decrypt one video and play it unless there is some method that decrypt and play on the fly like libmedia does it in android. I have no preference whether I have to develop it in Java or C#. Which language provides better obfuscation keeping in mind that I only need it for windows OS.
Thank you
It sounds like your are trying to develop a sort of light weight DRM solution - unfortunately, this is going to probably be lightweight in the protection it offers also.
For example, if you store the key in the DB it will still be relatively easy for someone to get to it using a regular DB viewing tool.
DRM is not really about making it impossible to copy content - more about making it hard enough to do that it is 'not worth it'.
Depending on how 'secret' or valuable your videos are your approach may be fine - i.e. you may make it enough work to find the key etc that uses won't bother. If your videos were regular studio produced content then they would probably not be happy with this level of protection.
If you do need stronger protection then regular DRM from MS, Adobe and Google etc is available through many of the standard video hosting providers (Brightcove, Ooyla, Kaltura etc) and the DRM they use will support offline playback, which I think is the requirement you have.
They will also all allow decryption and playback 'on the fly' - i.e. you don't have to decrypt the whole video before you play it back (in fact they would typically not do the whole video decryption first anyway as you would then have the whole content in clear stream making it easier to copy).
Maybe I'm just having a hard time wrapping my head around it. I kind of understand how it works from the research I've done, especially this question: How does Codename One work?
But what if I want to intercept incoming texts in Android? How does that affect the iOS app? If I want to use Vimeo's API to upload videos (I have an Android app that does it), will I have to get the source code and add that separately?
Incoming texts can't be intercepted in iOS as far as I know.
For Android you can use intents to intercept incoming texts but that's a bit of a pain you would need to write Android native code for that which you can do with native interfaces in Codename One.
I'm not very familiar with the Vimeo API but if its a REST API then you can pretty much map to it with Codename One's networking API using NetworkManager, ConnectionRequest etc.
Alright.. I guess to start this off I am looking to sometime in the near future start building a web based or browser based application that I want to build a part of the interface to be a gps module. this will be for a self hosted application likely on tablets or laptops where it will use the data for tracking information amongst other things. Any way most of the application is being handled in PHP, mySQL, jQuery. So with that my question is, is there any way to build a gps application with that as the core languages used. If it is possible, whats the best gps unit I can use? remember im not nessisarily looking for a fancy gps unit to do this with.. just a transmitter/reciever is fine so long as I can build software of my own around it, also is it actually possible to do this with something like php/jquery? or is this something I would have to go the route of maybe java to handle the hardware transactions of which I can tie php/jquery into that..
I have used a bluetooth GSP receiver before..(HOLUX m1200)
When connected, it sets up a serial connection (COM port). You can't communicate with serial ports using only javascript (or jQuery). The easiest way is using a java applet.
You can hide the applet on your page an communicate with the applet using javascript (jQuery). You can find an example here.
Alternatives are using Flash or WPF with XBAP.
The GPS unit outputs series of location messages etc.. More info about that you can find in the GPS protocol (google it) or here
Hope this helps :)
Some tables and laptops have GPS devices integrated. You should consider whether you are targetting iOS (iPad) or other systems.
For iDevices you can use the native stuff, which I won't bother explaining here.
For Linux or BSD systems I suggest gpsd, which is a service you install which abstracts the details of different GPS devices for you and gives you a sort of web service to query for location data. This would be easy to access from PHP or jQuery obviously.
For Windows 7, check out the new Sensor API.
For other systems, you may need to communicate directly with the GPS devices using the standard NMEA protocol (this is what gpsd does under the hood). This will be substantially more work and probably would mean writing a Java program or similar (basically to do what gpsd does).
How can I play individual MIDI notes in a Web page?
I know of two ways to do it:
Write an ActiveX control. Then it only works on Windows. I used to write ActiveX controls a long time ago, but now nobody likes to install them.
Write a Java applet. This is OK if the user already has Java installed, but many users disable applets. This is the way I did it and you can see the result at newfweiler.com -- if it happens to work on your particular setup. You'll need at least Java 5, although I suppose I could rewrite it in Java 1.2 if I had to. The "Real Time Sequencer" and "Java Sound Synthesizer" don't work for me; I think you have to install wavetables or something to make them work.
Most users have Flash installed, but I looked in the Flash and Flex documentation and did not see anything equivalent to javax.sound.midi.
There are several ways to play a MIDI file in a Web page, and you can find "Javascript Pianos" that play a one-note MIDI file whenever you press a key. You can't play multiple notes at once or hold the key down for a long note.
What I'm trying to do is the equivalent of javax.sound.midi.Receiver.send(midiMsg, -1) using only what most people typically have installed on the machine.
Use Web Audio API to play sounds and .mid-files. See example of MIDI player at https://surikov.github.io/webaudiofont/examples/midiplayer.html
Use Web MIDI API (Chrome supports it) to listen MIDI keyboard. See example at https://surikov.github.io/webaudiofont/examples/midikey.html
Java is still probably going to be your best bet, even with the few users disabling it.
I use NoScript, and I can whitelist a site. I would say that most users would probably do the same if you provide compelling content.
Found the following (translated from Italian). I'd say Flash is the way to go. If you want to be ghetto you can just get 88 or so piano samples and play them against a timeline.
http://translate.google.com/translate?prev=hp&hl=en&js=n&u=http%3A%2F%2Fflash.html.it%2Fguide%2Flezione%2F2936%2Fmidi-player%2F&sl=it&tl=en&history_state0=
There is an example of online MIDI piano at https://jazz-soft.net/demo/VirtualPiano.html
It uses the Web Audio API and does not require any special software, however, if the Web MIDI is enabled, it has more functionality. Code included on the page.