我正在尝试使用Youtube Data API v3在Android上进行搜索,但是当我尝试使用我的API密钥进行搜索时,我始终会收到以下消息:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured. Please use Google Developers Console to activate the API for your project."
}
],
"code": 403,
"message": "Access Not Configured. Please use Google Developers Console to activate the API for your project."
}
}
Run Code Online (Sandbox Code Playgroud)
我在控制台中将Youtube Data API设置为on.我一直试图弄清楚这几个小时.有谁知道什么是错的?
android youtube-api google-api-java-client android-youtube-api youtube-data-api
所以我试图从用户上传中获取10个最新视频.
现在唯一的问题是播放列表请求中可见的唯一日期是已发布的,这是视频上传的日期 - 而不是公开日期,这会产生巨大的差异.
我注意到我可以通过视频请求获取正确的日期,但它似乎并不是最好的地方.
让我告诉你一个我正在处理的事情的例子.
我们来看看Maroon5频道吧.
forUserName: Maroon5VEVO
获取https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=Maroon5VEVO&key= {YOUR_API_KEY}
https://developers.google.com/youtube/v3/docs/channels/list#try-it
这是我们抓住的地方:
uploadsId: UUN1hnUccO4FD5WfM7ithXaw
所以我们可以查询:
获取https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUN1hnUccO4FD5WfM7ithXaw&maxResults=50&key= {YOUR_API_KEY}
https://developers.google.com/youtube/v3/docs/playlistItems/list#try-it
然后我们可以看看一些视频.
让我们抓住最新的一个.对我来说就是这个:
"title":"Maroon 5 - 今年夏天会像A ......(明确的)一样受伤","videoId":"Wa64gOwuIyE"
最重要的是:
"publishedAt": "2015-06-01T17:41:58.000Z",
现在,让我们通过运行此查询来获取此视频的更多详细信息:
获取https://www.googleapis.com/youtube/v3/videos?part=snippet&id=Wa64gOwuIyE&key= {YOUR_API_KEY}
https://developers.google.com/youtube/v3/docs/videos/list#try-it
在这里,我们得到更详细的视图,日期不同!
"已发表": "2015-06-01T20:00:01.000Z",
这意味着播放列表中已发布的日期实际上是上传日期 - 而不是视频公开时的日期.
在我们的10个最新项目列表中,我们想要最新发布的视频,而不是最新上传的视频.
如果您知道如何处理它,请分享.
这是我现在的片段(使用错误的已发布日期)
$.get(
"https://www.googleapis.com/youtube/v3/playlistItems",{
part : 'snippet',
maxResults : 10,
playlistId : UPLOADS_PID,
key: YOUR_API_KEY},
function(data) {
$.each( data.items, function(i, item ) {
(...)
});
}
);
Run Code Online (Sandbox Code Playgroud) 我找不到任何信息来检查YouTube频道是否实际上是流媒体.使用Twitch,您只需要频道名称,使用API即可检查是否有直播.
我不想使用OAuth,通常公共API密钥就足够了.就像检查频道的视频一样,我想知道频道是否是流媒体.
youtube youtube-api youtube-data-api youtube-livestreaming-api
我将实现一个python客户端,使用不同的查询在youtube上搜索视频.显然我应该使用youtube数据api.即使我读取quata成本,我只想确保使用youtube api是完全免费的.对不起,这太基础了.
- 更新09/05/2016 17:10 - 问题似乎与视频发布日期有关...在4月的最后一周,我在YouTube上发布了很多视频,这些视频发布时间截至4月19日27工作正常,而在同一天21:15收费的人讨论了这个问题,好像在4月27日19日到21日之间,YouTube对视频进行了一些更新或更改.我现在尝试加载一个新视频,这也有同样的问题.
我对YouTubeAndroidPlayerAPI有一个奇怪的问题..我使用YouTubePlayerSupportFragment(但我有与YouTubePlayerFragment相同的问题)在我的应用中播放视频,一些视频播放完美,其他显示错误"播放时出现问题.点击重试. ".
如果在Android Monitor中发生这种情况,我会看到YouTube API错误:
05-08 11:25:22.145 20521-20521/? E/YouTubeAndroidPlayerAPI: fmt.noneavailable
oae: Video not supported/available
at oab.a(SourceFile:212)
at nvl.a(SourceFile:383)
at nvl.a(SourceFile:706)
at nvr.a(SourceFile:1144
at nsn.onPostExecute(SourceFile:2102)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Run Code Online (Sandbox Code Playgroud)
如果我点按视频中的YouTube图标以在YouTube应用中播放,则可以在官方应用中正确播放视频.
如果视频已启用获利功能,则广告视频会正常显示,最后会显示错误.
我试过了:
非常感谢您的帮助!
更新11/05/2016这似乎是一个YouTube错误; 目前唯一可通过的解决方法似乎是打开YouTube官方应用中的视频,或者用WebView替换播放器片段.标准WebView非常有限,不会显示将视频全屏显示的按钮.您需要创建一个扩展WebChromeClient的类:
public class MyWebChromeClient extends WebChromeClient {
FrameLayout.LayoutParams LayoutParameters = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
@Override
public void onShowCustomView(View view, CustomViewCallback callback) { …Run Code Online (Sandbox Code Playgroud) 首先,这个问题可能听起来像是重复的,但从我已经看到的答案中我认为答案不能正确地适合这个目的,因为我没有得到许可.
我们在授权他们的Google帐户后尝试查找YouTube频道ID.
我使用的范围是:
https://www.googleapis.com/auth/yt-analytics.readonly
https://www.googleapis.com/auth/userinfo.profile
Run Code Online (Sandbox Code Playgroud)
很多答案都是指访问V3频道api以获取频道ID.
$channelData = file_get_contents("https://www.googleapis.com/youtube/v3/channels?part=id&mine=true&access_token=".$token['access']);
$channelData = json_decode($channelData, true);
Run Code Online (Sandbox Code Playgroud)
问题在于我使用的范围无法访问此内容.关于SO的其他问题都围绕着这个终点.
如何在Google Oauth PHP之后获取频道ID或网址
请注意我想将范围保持在绝对最小值.为什么只使用分析API才能实现这一点?我是否必须使用其他YouTube范围来查找刚刚授权的人的频道ID?
我问的问题是
有没有什么办法可以获得刚用我当前范围授权的用户的频道ID?如果不是,我可以用来获取其频道ID的最小权限范围是多少?
关于如何增加配额限制,这不是另一个问题。今天,Google将每天查询的youtube api v3配额限制从我的情况下的5000万减少到了0!有人有100万个查询,每天有10万个查询,但是现在每个人只有10000个单位。它非常低,所有严重的生产应用程序都将很快被暂停。这种条件是不能接受的。这是在没有任何通知的情况下发生的!在云控制台或邮箱中没有消息!这意味着我们所有人都需要完全关闭我们的项目。数千名涉及youtube api项目的开发人员,我们编写了许多代码来使所有事情正常运行,并花费了大量时间和精力。
由于Google不提供youtube api的任何支持,因此无法解决该问题。我试图与所有渠道联系youtube api团队,大约3个月前填写了全新的配额申请表-仍然没有答案或积极的变化。
在官方文档和Google Cloud Console页面中,stackoverflow是我们唯一可获取帮助的地方,因为google人员正在监视与google服务关联的标签。也许这个话题比我之前的https://issuetracker.google.com/issues/79183616汇总了更多反馈
所以我想问其他开发人员,您打算如何处理您的项目,每天1万条查询就足够了吗?
我试图隐藏Youtube视频播放器(api)中的按钮.我用了
player.setShowFullscreenButton(false)
Run Code Online (Sandbox Code Playgroud)
这成功隐藏了全屏按钮,但我没有找到隐藏控制按钮的方法 - 该按钮可以转到youtube应用程序.
我试过用
player.setPlayerStyle(PlayerStyle.MINIMAL);
Run Code Online (Sandbox Code Playgroud)
这会隐藏所有按钮,但也会更改进度条,但我需要旧的进度条.
有帮助吗?
我正在使用youtube data api v3来上传图像和音频,因为带有图像的视频将显示为视频.
我可以上传视频作为示例.
我试图thumbnail: $('#file_image').val(),设置视频缩略图.但它并没有像我预期的那样奏效.我也在互联网上搜索以获得一个想法.但是没有任何想法.
UploadVideo.prototype.uploadFile = function(file) {
var metadata = {
snippet: {
title: $('#title').val(),
description: $('#description').text(),
tags: this.tags,
thumbnail: $('#file_image').val(),
categoryId: this.categoryId
},
Run Code Online (Sandbox Code Playgroud)
使用youtube数据api可以实现此功能吗?我知道我们可以将图像和音频一起上传到youtube中作为视频(而不是通过API).
更新:
使用ffmpeg,我们可以通过组合音频和图像来创建视频.创建的视频通过Youtube DATA API上传到Youtube.有用.现在我尝试使用脚本自动执行以下场景.
上传图片和音频.使用ffmpeg创建视频.视频成功创建后,使用Youtube DATA API上传视频.
我可以在命令行中使用ffmpeg命令创建视频.但是当我尝试使用PHP代码时,命令没有执行.
基本上,我正在尝试获取搜索时显示在结果中的每个视频的视频时长.我有一个整洁的小演示设置让你搞砸!
另外 - 当我说持续时间我指的是M/S格式(0:00)的视频长度..
演示 http://codepen.io/mistkaes/pen/6b6a347c7d24edee15b3491420db4ecd
jQuery的:
var apikey = '<API KEY>';
$(function() {
var searchField = $('#search-input');
$('#search-form').submit(function(e) {
e.preventDefault();
});
});
function search() {
$('#results').html('');
q = $('#search-input').val();
$.get(
"https://www.googleapis.com/youtube/v3/search", {
part: 'snippet, id',
q: q,
maxResults: 50,
type: 'video',
key: apikey
},
function(data) {
$.each(data.items, function(i, item) {
var output = getResults(item);
$('#results').append(output);
});
});
}
function getResults(item) {
var videoID = item.id.videoId;
var title = item.snippet.title;
var thumb = item.snippet.thumbnails.high.url;
var channelTitle = item.snippet.channelTitle;
var output …Run Code Online (Sandbox Code Playgroud) youtube-data-api ×10
youtube-api ×6
youtube ×5
android ×3
video ×2
api ×1
css ×1
google-api ×1
html ×1
jquery ×1
oauth ×1
php ×1
quota ×1