Using Youtube API to play just audio - youtube-api

We are a couple of software developers and were planning on making some commercial extension or some website through which users, with slow internet connections or limited data could play almost any video through YouTube's API. Although, while going through the API docs, we came through the following section,
Your API Client will not, and You will not encourage or create functionality for Your users or other third parties to:
"separate, isolate, or modify the audio or video components of any YouTube audiovisual content made available through the YouTube API"
-Kuan Yong, YouTube API Team
Is there no such legal way through which we can disable just the video and stream audio, not even with the commercial API?
Hoping for a positive reply.

Playing just audio means isolating audio, which is a clear violation of the terms and conditions of the YouTube API. However, as far as I know, there is no such restriction when not using the YouTube API. For example, youtube-dl, which is a video downloader for YouTube and hundreds of other websites, has the functionality to download just audio.
In fact, in YouTube's format, audio and video are actually stored in separate files on the server. This means you can actually acquire the path to the audio file and stream it to you users. Check out the open-source youtube-dl, specifically the youtube module, for more details.
Edit
The reason I am merely linking to a library is that YouTube continually changes the way they format, store, and stream video. This means that retrieving the direct link to a video's audio component is a task subject to frequent change. If you can link against youtube-dl's python module, you can make use of their updates whenever such changes occur.
Disclaimer
I am not fully sure if this is all legal and whatnot. Hence, I take no responsibility for your decision on what to do, nor do I condone this kind of behavior.

Related

How can I play video from YouTube channel in Decentraland?

There is sample code to play video in Decentraland. This link
However, I want to play video from a playlist in YouTube channel. Is there any sample code you can reefer me?
Unfortunately you cannot directly access any Youtube videos due to a CORS policy set on their side. This is not an issue with Decentraland itself, but rather with Youtube and other content providers that have a similar CORS policy.
Youtube and Twitch (for example) have their own javascript players that not only display ads but also gather information about the viewer. Seeing as this is the basis of their income, they do not want people bypassing this and just viewing the video for "free".
You may notice that youtube videos work in CryptoVoxel for some reason. This is due to some trickery that the game is doing, where it is loading in the html/js and placing the video on-top of the game itself. (At least that is what I've heard)
In the meantime I strongly suggest you look into hosting your videos on another platform like Vimeo. You can directly access the video files if you pay for their service. Alternatively, you can host your videos on an Antmedia server through a cloud hosting service like Digital Ocean. Both of these are great options.

Does YouTube Data API v3 provide video stream URLs?

Using the YouTube Data API v3, is it actually able to return to me the URL for a video (by ID) of all the available video and audio streams? I have the YouTube video ID. I want to choose a video stream to play in a client app. I've read all the YouTube Data API documentation on this site:
https://developers.google.com/youtube/v3
And this question is not answered; in fact it seems to intentionally avoid this whole topic.
Sorry for having to give you a negative response:
As far as I know, the answer to your question is no, there's no such API (and API endpoint for that matter) that will provide the URLs of the streams that YouTube does yield to its video players (embedded or not).
Of course, one may scrape this kind of info out of the YouTube's Web UI (like many tools available on the Internet do), but, if one does observe the DTOS specifications, will eventually come across the paragraph E.6 of section III. General Developer Policies, that explicitly forbids this activity.
An argument against the existence of such a API can also be derived from the DTOS document, same section III. General Developer Policies, but, in this case, from paragraph E.1:
E. Handling YouTube Data and Content
Aside from the permissions and rights granted in this section, you and your API Clients have no further permissions or rights to API Data, including to temporarily stored API Data.
Audiovisual Content
You and your API Clients must not, and must not encourage, enable, or require others to:
a. download, import, backup, cache, or store copies of YouTube audiovisual content without YouTube's prior written approval,
b. make content available for offline playback
c. [...]
Since is illegal to download video content from YouTube, it follows by simple formal logic, that it cannot exist an API that would provide URLs to the video content itself (under the assumption that the official APIs are formally consistent with the DTOS specifications).
No the YouTube API doesn't give you the video url, otherwise it would be too easy to copy the file.
Also, YouTube videos can only be played inside the YouTube iFrame player and you can't have access to the HTML5 video object (to retrieve the video url) because of cross-domain policy.

How do YouTube downloaders access the videos?

I did find this answer but it uses YouTube's APIv2, and is now outdated as stated in the answer.
YouTube's terms of use state that you can't use another player or download videos, so it makes sense they've excluded it from the API.
Knowing that, how do online YouTube downloaders, or third party Android apps (that allow to turn the screen off while they keep playing music for example) access those videos?
I'm trying to access a video to stream it inside unity for example (by the way there's a couple of unity assets that do it too), and I'd like to learn how they do it.

YouTube live on iOS?

The docs are a little hard to parse here. I was wondering if there was any way to
Stream YouTube live into an iOS app, without significant/any YouTube branding.
Stream from an iOS device as a broadcast stream for YouTube live.
My initial Googling turned up mixed responses. I was hoping to see an example of this if it's possible, or save myself some time if it's not.
Suppose I have a person on ATT next to a person on Verizon streaming content, and I want to make both appear as a single uninterrupted stream switching back and forth. Does YouTube or a library do to anything to facilitate this?
Streaming from an iOS device is no different than streaming from any other device. You would have to write an h264 encoder and RTMP packetizer, and send the video to your YouTube stream object's ingestionAddress. Outlining the details of the encoder beyond the above is too broad for Stack Overflow, but I highly recommend looking at the VideoCore iOS project.
As far as branding goes, the only way to play back YouTube content in an iOS app without breaking YouTube's terms of service is to play the video in a UIWebView or YouTube's iOS player helper library (which is just a web view with some playback interfaces).
There is no way to completely remove YouTube branding from the IFrame player. However, there are branding options you can toggle using the modestBranding flag on the player. See the IFrame docs here.

Downloading Videos from YouTube - Terms & Conditions

I am a bit confused about the YouTube API's term & conditions. If I create an app for users to download only their own videos. Is that against the terms and conditions?
I know downloading other people content is definitely prohibited, but is it the same for your own videos? Since user can go to their video manager and download their own videosm this would be only a short-cut?
Anyone knows can/cannot do this? I was thinking of using this library http://ytdownloadextension.codeplex.com/
Any guidance would be appreciated,
Covo
Seems like YouTube already allows you to do that, so I'd say it's legal:
Download your videos
You can’t download other people’s YouTube videos, but ...
You can download MP4 files of videos that you’ve uploaded to YouTube in either 720p or 360p, depending on the video size.
See Download videos that you've uploaded.
I don't think so the Terms of Service of Youtube or the Terms of Service of the API allows you to do so:
Excerpt of Youtube ToS (5. K):
you agree not to access Content or any reason other than your personal, non-commercial use solely as intended through and permitted by the normal functionality of the Service, and solely for Streaming. "Streaming" means a contemporaneous digital transmission of the material by YouTube via the Internet to a user operated Internet enabled device in such a manner that the data is intended for real-time viewing and not intended to be downloaded (either permanently or temporarily), copied, stored, or redistributed by the user.
Excerpt of the API ToS (II. 11):
store copies of YouTube audiovisual content;
Both, state in a very clear way that neither the user nor applications built using the API can "store" content, which is a very direct statement that disallows you from giving such an option in your app. Now, whether Youtube does give its users an interface to download their content or not is an argument out of sequence here as Youtube don't need to follow their own ToS, in other words, it's up to them to give their users such an option, but you can't give it to the users of your app.
I suppose you need a special permission from Youtube to give such an option in your app.
Yes. You can definitely download your own videos from YouTube as it is your own content so you have full rights to it as the creator of the videos.

Resources