I currently have an IPTV subscription and as a fun little side project I decided to create a multiplatform IPTV app. However, I'm running into some trouble when trying to stream video.
The .m3u playlist I am currently using has streaming links, however they do not end in .m3u8 as I am usually accustom to.
When I do a get request to the link in insomnia, it begins to download content with a MIME type of video/mp2t.
I have tried using hls.js along with a few other html video players however I cannot seem to get it to work.
The playlist does work with VLC!
I feel like I am missing something, just not sure what.
Thanks!!
If your IPTV service has content that the service provider wants to restrict then they may encrypt the content, use DRM and/or obfuscate the access to the manifest files and segments streams.
The reason they do this is to ensure that only their apps can be used to playback the content - this does not always have to be just for paid services as the content owner may require the content to be encrypted even for free IPTV services.
You can still do your experiment and build your multiscreen project using test streams which are available online - there are both DASH and HLS online streams available in a number of places. see here for a useful list:
https://bitmovin.com/mpeg-dash-hls-examples-sample-streams/
Related
We have a responsive web app (html5 + AngularJS) w/ an API (Web API, c#). Both the web app and api are hosted on Microsoft Azure and media files (images, files, videos, ...) are stored in Azure Blob Storage
The use case is the following:
1) User A uploads a video via the API
2) The API needs to fix the rotation of the video to avoid videos recorded in portrait mode to show stretched in full screen on Mobile Chrome in Android (Vertical Video Syndrome https://www.youtube.com/watch?v=Bt9zSfinwFA)
3) If User B has rights to access the video (not all users of the platform have), he should be able to stream the video
I was looking to use Azure Media Services (https://azure.microsoft.com/en-us/blog/advanced-encoding-features-in-azure-media-encoder/) to rotate the video and therefore implement step 2.
What would be the best way to implement 3, e.g, protect the content in order to ensure that only specific users of the platform have access to the video?
Thank you.
Answering your question at the end: 'What would be the best way to implement 3, e.g, protected the content in order to ensure that only specific users of the platform have access to the video?':
You have different options depending on the level of protection you require:
'hide' the video url in an area of your site which requires login with the right access to see it
use a token in the URL to control access to the video
use a DRM scheme to protect the video
The DRM approach is the most secure as it also protects you against the user copying or saving and redistributing the video.
As you are using Azure you might want to look at Azure's content protection - if you are using a different video hosting service they will usually have similar guidelines:
https://azure.microsoft.com/en-us/services/media-services/content-protection/
You can use Azure Media Services AES encryption to deliver encrypted adaptive bitrate streams using MPEG-DASH or HLS, and use JWT tokens to authenticate the user for access and decryption.
This is the same model that we use with Microsoft Stream (http://stream.microsoft.com). In the case of Stream, we use Azure Active Directory for authentication and JWT tokens.
There are a couple of sample blogs out there on the basics of how to do this.
http://gtrifonov.com/2015/01/03/jwt-token-authentication-in-azure-media-services-and-dynamic-encryption/
http://mingfeiy.com/how-client-pass-tokens-to-azure-media-services-key-delivery-services
I'm sorry for bothering you guys with something as simple as this appears will be for you. I am trying to help develop a public Roku channel for an awesome minister I know who has 100's of videos. (hoping Naz Vanof or someone who knows a lot about this can help)
I attempted to find information on how to use Vimeo as a json feed provider and didn't find any tutorials. (the online help at Vimeo was no help).
First is there something that needs to be done for each video uploaded to my Vimeo account to prepare them to be used as json? I tried using the provided URL for my Vimeo account on the Direct Publisher feed link and it wouldn't accept it.
I've been searching for two days on this subject and not really getting anywhere and the only place I could see any related content was here (Naz). The videos I am using I have permission for from the developer but they are downloaded from Youtube through the Keepvid online program to my computer then uploaded to Vimeo. Is that an issue?
Sorry for the lack of knowledge but I am excited to get my feet wet on this and have a high aptitude in other fields, I'm just a total newbee in this field. starting two days ago I went through all the tutorials on Roku and did all the prep for establishing the developer account, and learned how to side load and alter channel templates, now I just need to know how to get my URL link to connect and to organize videos on Vimeo. Later I will get deeper with the Brightscript app. But what they have for the template for Direct Publisher would be perfect to get started.
Thanks and sorry again for this base level question.
Direct Publisher accepts two types of feeds, as described in the Direct Publisher Feed Specifications: their own custom JSON format (which is not something Vimeo offers I imagine, based on how new Direct Publisher is) and MRSS feeds (which Vimeo might offer, not sure). If Vimeo doesn't offer either of those, you likely won't be able to use Direct Publisher, unless you create your own in between API layer which transforms what Vimeo offers to what Direct Publisher needs.
According to other sources Vimeo does offer JSON feeds. And I did purchase Vimeo Pro but still could not access my files. I was wondering if the type of encoding on Youtube where I had to get the downloads to upload to Vimeo would interfere with the Direct Publisher feed? They don't support Youtube links so I used a Keppvid program to download from Youtube then upload to Vimeo. Vimeo accepted those downloads no problem. But my URL wouldn't work on Direct Publisher. I talked to Vimeo and they said my account URL should have worked. I'm stuck.
You need to compare the Vimeo feed to Roku's feed specification and figure out what the difference is that is causing it to not work, then load the Vimeo feed into a text editor and alter it to make it compatible. Alternatively and preferably, you would write a script that would do the conversion on your own server so you could have it run once a day and then deliver the feed from your server to Roku's server instead of directly from Vimeo.
The problem with using Vimeo is that housing your video in an external xml document, vimeo uses Ampersand in their URL. Sample:
https://player.vimeo.com/external/213601353.hd.mp4?s=71a24afbe4d4792806a08391263kjhisihe69fe2&profile_id=xxx
This needs to be modified to:
https://player.vimeo.com/external/213601353.hd.mp4?s=71a24afbe4d4792806a0839126c484c175269fe2&profile_id=174
Once you make this change the xml URL will be parsed properly. The URL was having the ampersand stripped which is why it may not have been working. I have tested this with all of our vimeo videos and they work properly now.
Hope this helps.
using the api against /videos/ID I get a bunch of links, select the corret format and them i'm good to play on my own website.
But it's slow, i'm not on USA and it's slow for my customers.
(I'm a vimeo PRO subscriber)
Recently, checking a similar website, I've noticed that their urls are generates like
https://13-lvl3-pdl.vimeocdn.com/01/1924/4/....
And mine are generated like
https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/01/4067/6/...
The first one, that i could not discover how to get on my own videos, is really faster and lower latency.
Any light on this would be very appreciated.
These urls are dynamically generated on the server. There is no programatic way that you can change which CDN url you receive.
Please reach out to vimeo.com so they can dig more into why it performs so slowly for you.
After upload and process video by vimeo it generates HD,SD and HLS links.
Sometime speed depends on many factors like hosting environment, player used for stream videos,Internet bandwidth etc etc.
So first check following things:
1) Are you using third party player for stream your videos?
2) Are you using HLS video link for stream video?
3) What is your hosting environment in terms of server response time?
Some Suggestion to achieve better video streamming:
1) Get best Hosting plan which has better server response time.
2) Use vimeo default player for stream videos.
3) If you are using third party player than use HLS vimeo generated link with Third party HLS player.
Some HLS player links
http://www.hlsplayer.net/
http://osmfhls.kutu.ru/
http://www.flashls.org/latest/examples/chromeless/
http://dailymotion.github.io/hls.js/demo/
http://www.dash-player.com/demo/hls/
You can absolutely select which CDN you can load your videos from. Vimeo uses three CDNs and you can set a cookie that will indicate to the player which cdn to use. Check out this link: https://player.vimeo.com/flags
Here you can select the cdn and it sets the cookie I was mentioning. You can set this cookie for your users on your website and the video will be fetched from that cdn.
I have a website that has a web page with a html5 video-tag, and the user can supply a URL, and it will play in the video-tag.
The webpage uses JavaScript commands that control the video-tag - for instance, it can pause the video, move to a different point in the video, etc.
It works fine with the cloud. Videos stored on Microsoft Azure can be used, for instance (Azure gives you a way to get a URL to any video on your cloud storage, and streams it too).
However, I have users that store videos on Google-drive, and also on Microsoft One-Drive.
From what I can see, I can play these videos, but only in a page (probably with Google's own player in it) on their site.
It seems that there is no way to get a URL to these videos that I can put in a video tag.
Without the ability to do that, I can't use the javascript commands that work with the html5 video-tag.
Is there any workaround?
Or am I missing something?
Thanks.
For playing videos that are stored in google-drive using your app:
you need oauth2 credentials to access the user's drive, but assuming you have the oauth part covered :
you can create a drive application as a google appengine app and deploy it in a part of your website.
enable the drive-sdk and set the open-url to your website (that you have verified)
-> basically this tells drive to redirect towards your website whenever the user clicks on the video (from his drive)
when drive redirects to your website a json file will be sent, you'll have informations such as fileId from there i think you can execute the method files().get() to retrieve the necessary information for you to play the video
I advise you to take a look at this course in codeschool.
We have a web based system that we are looking at replacing our existing "help system" from uploading flash videos directly to our website to instead "embedding" content we upload to our vimeo account. We have setup a vimeo pro account and these videos need to be "private" i.e. not accessible to the general public. Which API version should I use? And do you have any sample code in say PHP I could take a peek at with the functionality we are after
The Advanced and Simple API's will no longer receive new features, and soon you will not be able to create new apps for them.
Vimeo has moved towards a unified API, which you can read about at http://developer.vimeo.com/api. Make sure to use the api through api.vimeo.com, not vimeo.com/api/rest/v2.
Vimeo has an official PHP library, with some very basic examples that you can see at http://github.com/vimeo/vimeo.php