desktop video player with new codec [closed] - security

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
I need to create a video player like pot player or vlc , that can play my personal codec ( like mp4 , mkv , ... ) for security reason
a player has a login page and the user has to sign in to play video in it
with out sign in the player doesn't work at all
for example
I have video name.mp4 and
I want this video convert to something like this :
name.xyz
this format (xyz) should only play in my player and only play in a person's computer who buy these videos
I need some info on how to create this player and this player Should not crack.
which language is perfect for this purpose?
I want a cross-platform app. ( support in Linux, Mac, Windows )
Please help me. I need this app very bad
just Need a small clue

It seems your goal is to achieve a situation where playback can only happen in players that you produce and trust. That way you can enforce only users who have paid will be able to access the video.
For that, you do not need custom codecs (also note that .mp4 or .mkv is not a codec, but is a container). What you need is DRM. What DRM does is encrypt the video, so that it can't be played without having the decryption keys. The player you then need would have to have some way to get those keys, and keep them secret on the device.
There are several commercial systems out there, that can be implemented at relatively low cost. For instance, Microsoft Azure has a solution for this: https://azure.microsoft.com/en-us/services/media-services/content-protection/
If you need offline playback though, things are a bit more complex. Another option could be https://castlabs.com/drmtoday/
If you want to support all the listed platforms, you will likely need to interact with 3 different major DRM systems. Microsoft PlayReady, Google Widevine and Apple FairPlay. Azure and DRMToday packages all those together, but you can also choose to implement them all yourself.
You most likely do not want to build your own DRM system. Not only, is it far to easy to make mistakes that render it unsecure in some manner, it's also a lot of engineering effort, and way more costly to do than just using the existing systems.

Ok, so practically it's impossible to achieve what you want, because anyone who have access to these videos can record them and share for free. Also, you can't just rename something from name.mp4 to name.xyz because the content it's still the same, even if the extension is changed.
However, if you have your own codec than it's ok for you, because the usual video players won't decrypt it because it's new. The part with the login page it's again a problem, you have to think if you create accounts. You create them based on what? Password? Then I can share my account with my buddy and we both watch and just one of us paid. Based on IP? Ok, but there are many dynamic IPs over there.

Related

Capture everything on computer screen and audio. What technologies/apis are involved?

I use Skype (macOS native app) and Google Hangouts (web) a lot for work. I will speak with clients using these apps while my headphones are plugged in to prevent others in the office from hearing both sides of the conversations.
I would like to find a way to record the video and audio from these conversations. Can I record audio coming in from Skype if I create a web app? I don't think WebRTC can solve this question.
Apologies for the vagueness and open-endedness of this question but searching online only returns app specific answers.
I would like to record the audio and video with Javascript on my side of the conversation. Am open to a webapp, or a chrome/ff plugin, or something else I'm not familiar with.
Thank you
I've had nothing but great experiences with loom (and it's free!). https://www.useloom.com/

How download a MPEG Dash with DRM?

Is possible download a MPEG Dash content with DRM?
How can I decrypt using the MPD file?
I tried download all M4S segments (audio and video) but when I join the segments the video doesn't work properly.
The site is using Widevine platform for DRM.
I tried too youtube-dl and dash-proxy but again unsuccessfully.
I searched on Google but I didn't succeed.
No because it's not part of the browser. The browser implements EME which allows to 'offload' decoding a video to a 3rd party software.
When you download chrome, you download another compiled "CDM" app which does the decoding and is a 'black box'. So you'd need to modify that black box CDM, not the browser. So only option is then the screen capture.
MS has a system that even prevents screen capture software (since windows controls OS) Chrome desktop CDM has weaknesses but not in the league of 'youtube downloader'.
Also Google doesn't provide CDM for modified browsers.
A researcher on twitter a couple years ago claimed to defeat the encryption by directly cracking the encryption itself, based on knowledge of what the CDM was doing. At this point though, it's beyond 'look the other way' and you would definitely be in legal jeopardy if you distributed such information or content.
In the future, Google would like all of this to be done in hardware further making it hard to defeat. Eg once they got several hardware manufacturers to put a chip in their monitors, they might literally say "if you want to watch google play or netflix, you need an 'secure monitor' (you know, so people don't spy on you...) ".
It's basic economics. If you can't live without netflix, they will lock it down and make you pay for each view. If you're 'meh' they will make it 9.99 and reel you in. If you literally prefer some 'open source movie website where everythings free, though lame' They will just try to track your interests, for a better day when they can make something irresistible you will pay for.
At this point people are pretty 'addicted' so encryption chips are being put into monitors, motherboards, video cards, even cables connecting the monitor to computer. But if they squeeze too hard, people will just walk away. But their data models now would warn them if people were getting to that limit, so it's unlikely.
EDIT: today I came across a code repository which is a chrome extension that will tell you the decryption key as it decrypts a video. I won't post the link here (but it's currently at github publicly). It contains the private key that is used by the Google Widevine CDM to decrypt the keys (which are sent encrypted from the license server). So if you have access to watch a video (eg you rent a video at google play) then you can see the key, download the mp4, then use ffmpeg to decrypt the mp4 with that key that was reported while you played the video. You would then have an unencrypted video. This is why Google tells their content providers to only provide 'low quality' versions for desktop browsers, and reserve high quality (eg 4K) content for environments where decryption is happening in a hardware chip.
I am assuming you are asking how you can handle the DRM part and that the download part is ok, using dash-proxy or similar?
The way the DRM works with DASH streaming is that the player streaming the video will recognise from the manifest and/or the video stream that the video is encrypted when you try to play it and will ask the DRM license server for the license.
For widevine it requires the URL of the license server to be configured or input into the player - see the the example at Shaka player: https://shaka-player-demo.appspot.com and choose custom asset from the drop down list and you will see how you have to enter the License Server URL.
If you have downloaded the video then the player will still need to recognise that the video is encrypted, that the DRM system is widevine and will need to be told the license server to request the license from.
The player can recognise the content is encrypted from the MP4 PSSH box - a header which indicates it is encrypted and the DRM system being used, in your case Widevine.
If you don't have authorisation or the video was originally a live stream or if it had some time constraints you may not be granted a license. Similarly, if you are planing to watch it offline, then you will need to receive a persistent license (one that is valid on the device for some time) which may not be available for the video you want to watch.
If you have the key used for encrypting the content, You can try the dashdownloader script from github hosted in Drm-Dash-stream-downloader repository. It uses ffmpeg for aes-128 encrypted content and mp4decrypt from Bento tools SDK for other cipher suites.

How to start working with Bluetooth 4.0? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I am interested in Bluetooth 4.0. Where to start adventure with it? If you have any materials, links, books I'll be very grateful. If you could share this knowledge. I would to use BT 4.0 to connect a PC (no matter what system) with a smart phone (eg. Windows Phone).
Right, I tried to quickly put together some relevant information that might help you. There is a big chance I have missed thing because this is a broad topic.
I am pretty sure you will find help here when you will have more specific questions.
Basically when it comes to Bluetooth (Smart, 4.0) devices and programming / connecting to them we can talk about two things:
Bluetooh Clients and Servers
Servers:
usually provide some data to clients. Think about a Heart rate monitor that captures someones heartrate and "stream" it so anyone who connects to the server will be able to read the data.
Clients:
On the other hand clients connect to servers (how obvious) to collect their data, or in some cases to write to them.
Bluetooth Profiles
Bluetooth devices (servers) have so called GATT (generic attribute) Profiles. These profiles describe a kind of unique set of Services. Each Service has different Characteristics. These characteristics hold the actual values.
Think about a Heart rate monitor (HRM). Thats a server. It measures heart rate so clients that connect to it can read / collect it's data. Heart rate monitors have a specific Heart rate monitor GATT profile which describes services and inside the services there are the heart rate specific characteristics like: heart rate measurement, body sensor location, etc.
When a client wants to read these values it has to connect to the HRM, discover it's services and characteristics, then read the values from the discovered characteristics.
Async
It might be obvious but Bluetooth programming (implementing server / client connection and data transfer) is async. It means the client sends something then waits till the server answers then can the it progress to the next step.
Your whole software has to be implemented keeping async programming design in mind.
Documentation
I have to say I found the iOS documentation and support very useful when I developed my first bluetooth app.Android was somewhat more difficult for me because of the lack of examples I found. Also general bluetooth 4.0 support only became available since Android 4.3. (different bluetooth chip manufacturers in different Android phones had different low level bluetooth stack so to use them one had to write native bluetooth code for each different chip with their own SDK - prior to Android 4.3)
Bluetooth.org
I would suggest to start with this:
https://developer.bluetooth.org/DevelopmentResources/Pages/Quick-Start-Kit.aspx
https://developer.bluetooth.org/TechnologyOverview/Pages/Technology-Overview.aspx
https://developer.bluetooth.org/DevelopmentResources/Pages/default.aspx
https://developer.bluetooth.org/gatt/Pages/default.aspx
iOS
It won't hurt if you read about Core-bluetooth framework, which is the iOS approach even if you don't plan to develop on iOS. Since it is well documented it might give you a better overall understanding:
https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/AboutCoreBluetooth/Introduction.html
Android
Same for android:
http://developer.android.com/guide/topics/connectivity/bluetooth-le.html
Windows 8
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207007%28v=vs.105%29.aspx
I've found "Bluetooth Low Energy: The Developer's Handbook" by Robin Heydon very useful. It deals with all the little details so you can understand how things are working on the lower level.
As a reference, I've found the Bluetooth specification PDF very useful (though it's sometimes hard to find what you need). It looks like they just released a 4.1 version here: https://www.bluetooth.org/en-us/specification/adopted-specifications
EDIT: both references aren't specific to any particular implementation, so I'm not sure how much they'd help if you wanted to learn something specific like iOS BLE or Android BLE.

Audio hosting platform / Server-side software

I'm looking for somewhat for audio which is like Kewego or Dailymotion Cloud to video.
I'm looking for a good service to:
Encode user-uploaded audio files in predefined qualities
Stream it on demand in a more or less customisable player.
--
The goal is to run my own audio hosting platform, a bit like Soundcloud.
I'm open to all kinds of solutions, but I would prefer a cloud hosting with good API to interface it in a white label way. But if you know good server-side software, I could also use that...
Edit:
The bounty is now opened for 7 days and no answers: if you have any clues for me to achieve my platform, I'm interested...
API based encoder -> www.zencoder.com
Player -> If you are looking for something as robust as soundcloud, you are going to have to write that yourself. Otherwise something like jplayer could work. http://www.jplayer.org/latest/demos/
Home Baked -> A combination of FFMPEG + Wowza would give you a nice 1 - 2 punch for encoding / adaptive bitrate delivery. (Wowza doesn't support VOD transcoding with their "Transcode AddOn" yet, otherwise you would be able to use JUST wowza). They also have a deal with Amazon for daily instances if you just want to try it out.

Software sound cancelling (destructive interference) tools on Linux? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I am looking at writing some software that will allow me to listen to music whilst talking with someone on skype. The problem is that if you do this with speakers the music also gets transferred to the other user, which is what I want to avoid.
So I was thinking about writing something that will, by listening to the output of my music application, cancel out those sounds from the microphone input sent to skype.
I have searched Google a bit, but maybe someone here can kickstart this project with some pointers/ideas/etc...
EDIT: has anybody used JACK before?
What you want to do is basically the same as Echo cancellation in telephony.
http://www.voip-info.org/wiki/view/Asterisk+echo+cancellation is simple introduction. Also have a look at the pages for the mark and mark2 echo canceller there and the mentioned TI application note.
Also this site:
http://www.embeddedstar.com/articles/2003/7/article20030720-1.html
explains the mechanics quite well.
You'll have to intercept both the music player's output and the microphone input, and then pass the samples via some sort of IPC into your DSP process. JACK actually does this, but setting things up (e.g. ALSA->JACK bridge, if your music player and/or Skype does not natively support JACK as sound interface) does require some skill.
I guess it could work fairly well, but it probably requires quite some CPU. Especially XRUNS (audio buffer under- or overrun) can be really bad for your echo canceller, i.e. you might need realtime linux kernel patches. Implementation is not trivial, either. Also having stereo sound from your music player will reduce your cancellation success.
HTH
Generally when it comes to noise cancellation, it is due to 2 things in precedence order:
Hardware - either a MIC/headphone with noise cancellation feature or the internal sound card MIC that already built in that feature.
Software - a good example is Skype, AFAIK SKype allow you to fine tuning audio quality but unfortunately the tuning part so far only existed in Windows platform. Where in Linux, you can choose the option of "Allow Skype To Automatcally Adjust My Mixer Levels" checkbox at Preference > Sound Devices.
My understanding is when it come to noise cancellation, you have to deal with the sound car driver programming, currently there is couple of noises noted into future Ubuntu software release that carry the said feature, there is here mentioned.

Resources