美国视频Youtube赚钱攻略

youtube开发下载错误:视频时无法提取信息部分

-youtube -player -youtube视频

youtube视频下载API错误

问题描述

android YouTube开发历程中出现了初始化错误,错误提示是ERROR_CONNECTING_TO_SERVICE。错误的结果图如下:


这个错误在有的机型上面可以,有的机子上面不可,好比在华为的机子上就会出现这个问题。我们知道在使用YouTube原生jar内里的API开发的时间,必须要在装备上装YouTube 才可以使用。这是由于API的使用需要用到YouTube软件的服务,在华为手机上面经过测试,必须要装备先启动YouTube,然后API开发的软件才可以播放YouTube视频(有的装备上不需要启动,只要装备上有YouTube就可以了)。 去YouTube官网上面找解决方法,就给了这么一句话
There was an error connecting to the YouTube API service.

马上无语了。 在每次使用软件之前还得让用户打开一次YouTube,这肯定不可。

解决方法

在YouTube组件初始化的时间,在初始化效果回调中假如失败了,就接纳第二种播放视频方法。

mPlayerView.initialize(YoutubeKey, new YouTubePlayer. OnInitializedListener () { @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) { ... ... } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { //!初始化失败,实验第二种方法 } } }); 复制代码

第二种播放方法是使用YouTubeStandalonePlayer类来播放,代码如下:

private void playYoutubeByStandalone(String id){ In。tent intent = YouTubeStandalonePlayer.createVideoIntent( this, YoutubeKey, id, 0, true , false ); if (intent != null) { if (canResolveIntent(intent)) { finish(); startActivityForResult(intent, REQ_START_STANDALONE_PLAYER); } else { // Could not resolve the intent - must need to install or update the YouTube API service. YouTubeInitializationResult.SERVICE_MISSING .getErrorDialog(this, REQ_RESOLVE_SERVICE_MISSING).show(); } } } 复制代码 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQ_START_STANDALONE_PLAYER && resultCode != RESULT_OK) { YouTubeInitializationResult errorReason = YouTubeStandalonePlayer.getReturnedInitializationResult(data); if (errorReason.isUserRecoverableError()) { errorReason.getErrorDialog(this, 0).show(); } else { String errorMessage = String.format(getString(R.string.error_player), errorReason.toString()); Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); } } } 复制代码 private boolean canResolveIntent(Intent intent) { List<ResolveInfo> resolveInfo = getPackageManager().queryIntentActivities(intent, 0); return resolveInfo != null && !resolveInfo.isEmpty(); } 复制代码

通过YouTubeStandalonePlayer来播放YouTube视频的话,就不会出现上面说的问题,并且在使用过YouTubeStandalonePlayer来播放YouTube视频的话,就会主动的启用了YouTube的服务,之后再使用YouTubePlayerView,YouTubePlayerFragment来初始化播放,都没有问题了。

第一个视频下载成功地下载了近来更新的youtube数据库版本,我使用with安装了 python pip install youtube-dl 在 python 虚拟环境中( python环境 )。 有关怎样设置和使用 python 虚拟环境的信息,请参阅 怎样设置和使用Ubuntu中的虚拟 python 环境 ? 。

我用来表现可用视频格式的下令是:

youtube-dl -F"https://www.youtube.com/watch?v=wo6Sq1h3DI4"

我用于下载第一个YouTube视频的下令是:

youtube-dl -f 18"https://www.youtube.com/watch?v=wo6Sq1h3DI4"

无法使用 youtube-dl下载第二个视频,但我没有放弃。 通过运行以下下令,将我的youtube升级到最新版本:

pip install --upgrade youtube-dl # inside the Python virtual environment

我不需要使用 sudo ,由于我的python 虚拟环境安装在我自身的用户目次( ~/my-Python-virtual-env )。 升级后,我运行了这个下令来下载第二个YouTube视频:

youtube-dl -f 18"https://www.youtube.com/watch?v=BbbhZl8xqVY"

为什么不爽性使用 sudo pip install --upgrade youtube-dl

我使用Ubuntu的缘故之一是制止了 Windows 安装应用程序的猖獗之路。 只要大概,我就从默认的Ubuntu仓库安装软件包。 这种环境下我知道youtube是一个 python 程序,以是我可以在一个 python 虚拟环境中当地安装最新版本的youtube-dl,而不必打乱。

另一种选择是安装 youtube-dl snap软件包:

sudo snap install youtube-dl-casept

我相信从如今开始,youtube的一些服务已经改变了,应用程序的方法也是如这里。

如今,谷歌比三年前更频繁地改变YouTube视频访问方法,以是为了保持YouTube的安全,需要更频繁的更新。 我已经察看过几年来YouTube视频好像被壅闭了,大多数是与他们上传的日期相关的。

在开始使用之前,我使用了一个 Firefox 扩展名为视频DownloadHelper下载YouTube视频。 我更喜好YouTube数据库,由于它有最高的可以获取我曾经使用过的任何下载器YouTube视频的概率。

从YouTube下载视频的本领是一个恒定战斗,由于公司盼望限定对他们所喜好的方法的访问。 从YouTube的服务条款中:

你同意不要通过任何技能要么本领访问服务本身的视频播放页。可以嵌入播放器要么它的他显式授权。

为了让用户回到他们喜好的访问方法, youtube-dl 的制造商不停实验将YouTube所做的变动 MATCH。 这是你在下载时碰到的问题。

版本库版本 youtube-dl 是老版本 2016.02.22 ,战斗线早就从那边转移到最新版本的陈诉中:

andrew@ilium~$ youtube-dl --version 2016.08.10

recommended youtube-dl 的建议方法来自 youtube-dl 下载页面,修改后略微删除,以删除Ubuntu版本库版本:

sudo apt-get remove youtube-dl sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O/usr/local/bin/youtube-dl sudo chmod a+rx/usr/local/bin/youtube-dl

在同一下载页面上,你将看到使用curl和roo升级的说明,使用最终效果是雷同的。 但是要删除存储库版本,你只需要一个 youtube-dl 可实行文件。

留意:在我自身的体系升级方面的测试,完全解决了你的问题,并成功地下载了两个视频。

假如你好奇让 看看,从YouTube页面提取地点,并看到为成功下载提供一个合适的MATCH的积极。

引用:

我使用youtube api v3: https://developers.google.com/youtube/v3/docs/captions/!download 中给出的php示例代码,从我的webapp中的第三方!公开的youtube视频下载标题,即我没有在youtube上上传内容。
我可以访问字幕曲目列表,但无法使用吸收列表中的字幕曲目ID下载字幕。
实验下载时出现的错误是:
调用get https时出错://
www.googleapis.com/youtube/v3/captions/lw0e5xdnu17gfafol8dcyeotwzwjtf9v?tfmt=srt&alt=媒体:
(404)未找到
(我已实验删除tfmt(可选参数),但仍旧会给出一个错误。)
但实验删除标题时的错误差别:
调用删除https时出错://
www.googleapis.com/youtube/v3/captions?id=lw0e5xdnu17gfafol8dcyeotwzwjtf9v:
(403)禁止
因此,全部者以外的用户好像不禁止captions.download(就像captions.list不被禁止一样),因此我盼望将此数据用于我的webapp。
我们很感谢您的帮助。
谢谢,
尼基尔

我方才在browser和API资源治理器中实验了您提到的URL,在这两种环境下,当我没有OAuth令牌时收到401,当我有访问令牌时收到403!(由于我不是全部者),因此端点按预期工作;根据 documentation ,下载字幕需要得到视频全部者的OAuth同意。
大概,假如您得到的是404,那么php库有问题吗?