I want to embed video's on our website that should work with these restrictions:
The video needs to start as soon as the user clicks on play. As far as I can tell this means that the video must be either streamed or it must use progressive downloads.
The video must not be downloadable by sending the link to other people.
The video must be protected against being viewed without being allowed to do so.
The video must work on all devices, also the ones that do not support flash such
as iOS and android
As a backend I use amazon cloudfront. So far we have used RTMP, but that obviously does not work for iOS or android devices.
What we’re planning to do is this:
For flash platforms we use RTMP with the amazon signed URL’s to prevent anyone to view the content.
For iOS we want to use HLS with a generated m3u8 file that contains signed URL’s to the TS files
For Andoid devices I'm not yet sure what to use.
My questions are these:
Is this a viable setup, or are is there a superior setup that ticks all the boxes?
What should we use for the android case?
I would suggest, use pre-signed hls/m3u8 for both ios and flash.(https://github.com/mangui/HLSprovider). For Android you can use normale html5 video streams with quality selection (signed URLs of course).
For Android you have to use RTSP protocol.
Wowza media server is the perfect solution for you.
Related
There is a website pdisk.net and whatever the video we upload from our computer to the site and share the link to view it, the videos open only in Playit android app. Only first 15 seconds can be viewed after that a screen appears showing "to play the video, install Playit app from playstore". What is happening to the videos in the backend when we upload on pdisk.net website? I think the site is owned by Playit app only. I noticed that the uploaded videos use final url a6.hentai.com...etc to stream the videos which can be streamed fully using the app only.
Can someone tell if the videos are encoded or encrypted backend and the app is made to decrypt the videos? Is such thing possible?
'''no code req.'''
In their FAQ page, they have mentioned that:
Video downloaded by Apps uses Smart Muxer technology.Smart Muxer is a
unique technology developed by PLAYit, can merge the video and audio
within seconds without any extra recoding and storage. It’s really
workable when there are some videos have no build-in audio and need to
be merged in the devices with low configurations. Due to the unique
technology, the video can be only played by PLAYit and the other
main-stream players can’t support. And videos shared to social apps
can also be opened in PLAYit.
I found one of the discussion in reddit, as mentioned by one of the users:
They encrypt the normal mp4 video in some kind of way which enables
them to limit the playback to their app.
As for documentation, there is not much available online. But found this feature request in VLC forum.
I have a requirement to develop a Android and iOS mobile apps that allow subscribers to view movies like the way Netflix and Iflix does it.
I would like to know if this can be achieved by inbuilt Video playing classes or widgets on the Android and iOS platforms, or if we will need a library or SDK for this.
I came across this URL on how to stream video in Android apps. Would this approach suffice for this requirement?
https://code.tutsplus.com/tutorials/streaming-video-in-android-apps--cms-19888
Netflix and similar systems use ABR to deliver video to mobile devices - ABR allows the client device or player download the video in chunks, e.g 10 second chunks, and select the next chunk from the bit rate most appropriate to the current network conditions. See here for an example:
https://stackoverflow.com/a/42365034/334402
There are several ABR protocols but the two most common at this time are HLS and DASH. HLS must be used to deliver video streams to iOS devices due to the apple guidelines (at this time and for video over 10 mins which may be accessed on a mobile network - the guidelines can change over time) and DASH is probably more common on Android devices, although HLS can be supported on Android also.
Most Android players now can handle ABR - the Android Exoplayer is a good example, is very well used and supports this natively:
https://github.com/google/ExoPlayer
Take a look at the Developers Guide (included in the link above at the time of writing) which shows how to include ExoPlayer in your app.
On iOS the native player supports ABR using HLS.
I'm trying to make my app playing some videos from some TV channels that have online broadcasting on their homepages. Apparently I need to know what ** streaming protocol** is appropriate for those kind of videos. Does it mean that I need to know what protocol they are using in their streaming? or should I choose my own protocol? and what should I think about when it comes to choosing?
And final question: I heard that choosing the appropriate class (Media player) or Video view is depended on what protocol it is. is it true? that class has to have support for swiping on the screen.
Thanks in advance.
Firstly it is worth checking that the stream you want to play is actually available for playback - many online TV providers will use encryption and authentication mechanisms so that their video streams can only be played back in an app or browser that a registered user has logged in to.
Assuming that it is available then you need to check to see what format they make it available in.
In high level terms streaming video is typically packaged as follows:
raw video
-> encoded into compressed format (e.g. H.264)
-> packaged into container (e.g.mp4) along with audio streams etc
-> packaged into adaptive bit rate streaming format (e.g. HLS, Smoothstreaming, MPEG DASH)
Different devices and different browsers support different encoding, packaging and streaming formats.
Assuming that you want to use a HTML5 browser, either standalone or in a web view in an app, then the following links provide a good, regularly updated, overview of the which devices and browsers support which encoding and streaming for HTML5 video playback (this is a constantly changing picture so you need to check the current status using links such as these):
https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats
http://www.jwplayer.com/html5/
So your steps:
make sure video is available either unprotected or that you have access to encryption keys authentication credentials etc
identify the streaming technology being used, for example by looking at the file type in the URL (e.g. '.mpd' for a DASH format)
Look at the individual video and audio streams within the streaming 'index' or 'manifest' file and check that your device can support them
You can take a short cut initially by testing the streams you have on your target device in some of the available browser based test players for the different formats, for example for DASH:
http://www.dash-player.com/demo/manifest-test/
http://shaka-player-demo.appspot.com
If they play here then you should be able to get them working in your app.
I am testing out Azure Media services and I am looking for a preset or a custom config which takes an mp3 file and encodes it for playback on iOS, Android (4.0+) and HTML5 for streaming (one manifest hopefully). Currently I am seeing presets for HTML5 and HLS (none for Android) however they are separate and not in one config/workflow. How can I set this up to done. Note I am using the UI and not programming at this time.
Are you planning to deliver in both HLS and MPEG-DASH across multiple HTML5 browsers? You will need to use both of those protocols to reach all of the devices that you have in mind. Android has a really poor implementation of HLS. Most of the Android devices only support HLS v3, so make sure to test your devices with the v3 (muxed ts) protocol.
I would encourage you to use the Azure Media Explorer tool for everything.
http://aka.ms/amse
It gives you easier access to all of the protocol URLs that you will need.
Try encoding everything to Standard Definition Multiple bitrate MP4 files to begin with. Most Android devices only like Baseline profile encoding.
Once you have Multiple bitrate Mp4 files encoded, you will need to enable at least 1 streaming Reserved Unit to allow you to get "dynamic packaging" to work. You need that feature to re-package your MP4 files on-the-fly to HLS and DASH.
Also, if you are looking for an awesome player framework for HTML5 delivery -check out our new Azure Media Player http://azure.microsoft.com/blog/2015/04/15/announcing-azure-media-player/
Is there anyway to bypass the blocked videos on mobile? First I tried to fire up normal youtube intent, then I used WebView (using both video and iframe tags), and lastly I changed the user agent of WebView to a desktop client but none of the above mentioned way worked. I tried rtsp to stream the video using VideoView but it would only give me a low quality 3gp video, which is what Youtube API gives.
I am running out of options. Any help would be highly appreciated.
Thanks!
I ran into the same thing with some of our videos on YouTube and found out that only YouTube controls if it will be allowed to show on a mobile. We never found a work-around for it other than hosting the video on our server or using Vimeo. But as it stands,YouTube has control over mobile viewing. Also do you have that video monetized? Monetizing a video on YouTube can also cause them to not allow it on mobile especially if it has any content that YouTube is saying is a Third Party or Copyright infringement. They told us we had third party content when it was all shot by us. Further reading in that problem showed that YouTube's new digital fingerprint is the main culprit for creating a new wave of problems for users trying to upload their own videos they made and own. i.e., a user tried to upload a video of his backyard with birds in it and the birds were singing. When he tried to upload it, YouTube said it was Copyrighted! How do you Copyright bird chirps everyone is now asking!
So try Vimeo or use your own server to deliver the content. Sorry I can't offer more help.
I remember being able to bypass the block as a user by asking the desktop version of the YouTube site and then watching the video with the (not updated anymore) Flash Player for Android. So maybe you could try pretending to be the Flash Player when asking for the video from your app. Maybe use a network sniffer to see what it's doing.
User "OMA" gave an answer (use 'Desktop Mode'), that sometimes works and is easy to try.
Next up is this Site (or a similar one): http://www.mobileyt.com/ which accepts an URL, then shows your Video.
A Proxy Server might assist you with access, particularly if it is a 'Country Restriction' (for Mobile, but does not mention the Country Restriction only the Mobile one). Any ADs served to that Country may be poorly received (Language / Customs); so it is blocked.
You can try a Spoofing Application for your Mobile Browser (Hint: Spoof you Browse with the Opera Browser OR use Explorer 10 on WinXP they won't be ready for that).
Combining those techniques can assist in difficult cases. You can also resort to downloading the Video and playing it with MX Player or VLC (for Mobile).
Good luck, and if at first you don't succeed ...