我刚开始使用angularjs,我想从youtube视频网址显示youtube缩略图...当人们在输入中插入网址然后点击按钮时,有没有办法显示视频缩略图,
PLUNKER
答案 0 :(得分:3)
Youtube提供其视频的默认缩略图。
您可以使用以下示例网址来创建缩略图。
http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
您需要在给定网址和网址中搜索ID的位置像上面这样创建网址会给你缩略图。
<强>控制器强>
app.controller('MyCtrl', ['$scope',
function($scope) {
$scope.inputs = [];
$scope.addInput = function() {
$scope.inputs.push({
field: ''
});
}
$scope.removeInput = function(index) {
$scope.inputs.splice(index, 1);
}
$scope.set2 = function($ayd) {
var thumb = getParameterByName(this.input.ayd, 'v'),
url = 'http://img.youtube.com/vi/' + thumb + '/default.jpg';
this.thumb = url
}
function getParameterByName(url, name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(url);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
}
]);
有很多方法可以参考from here
答案 1 :(得分:2)
Here是一个简单的Plunker,它使用过滤器从输入的URL中提取Youtube ID,然后使用提供的{Youtube image paths将图像网址应用到图像源。
app.js
var app = angular.module('plunker', []);
app.filter('getVideoId', function() {
return function(input) {
// get video id
var output = input.substr(input.indexOf("=") + 1);
return output;
}
})
的index.html
<body>
<div>
<input type="text" ng-model="input.url" placeholder="Youtube URL" />
<img class="ythumb" ng-src="http://img.youtube.com/vi/{{input.url | getVideoId}}/0.jpg"/>
</div>
答案 2 :(得分:2)
使用 AngularJS
在控制器VideoCtrl
中,例如:
'use strict';
function init() {
window.initGapi(); // Calls the init function defined on the window
}
angular.module('team')
.service('googleService', ['$http', '$q', function ($http, $q) {
var deferred = $q.defer();
this.googleApiClientReady = function () {
gapi.client.setApiKey('YOUR API KEY');
gapi.client.load('youtube', 'v3', function() {
var request = gapi.client.youtube.playlistItems.list({
part: 'snippet',
playlistId: 'PLila01eYiSBjOtR8oqXkY0i5c1QS6k2Mu',
maxResults: 8
});
request.execute(function(response) {
deferred.resolve(response.result);
});
});
return deferred.promise;
};
}])
.controller('VideosCtrl', function ($scope, $window, $sce, googleService) {
$window.initGapi = function() {
$scope.$apply($scope.getChannel);
};
$scope.getChannel = function () {
googleService.googleApiClientReady().then(function (data) {
$scope.channel = data;
}, function (error) {
console.log('Failed: ' + error)
});
};
});
不要忘记init
API。在index.html
<script src="https://apis.google.com/js/client.js?onload=init"></script>
对于初学者,您可能会对此答案感兴趣:https://stackoverflow.com/a/25783421/2274530
答案 3 :(得分:1)
这对我有用:D
<video>
<source [src]="yourvideo.mp4">
</video>
答案 4 :(得分:0)
import { HttpClient } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs';
const YOUTUBE_API_KEY = 'abcd--z';
const YOUTUBE_API_URL = 'https://www.googleapis.com/youtube/v3/search';
课程
export class VideoDetail {
id: string;
title: string;
description: string;
thumbnailUrl: string;
videoUrl: string;
constructor(obj?: any) {
this.id = obj && obj.id || null;
this.title = obj && obj.title || null;
this.description = obj && obj.description || null;
this.thumbnailUrl = obj && obj.thumbnailUrl || null;
this.videoUrl = obj && obj.videoUrl || `https://www.youtube.com/watch?v=${this.id}`;
}
}
组件
@Component({
selector: 'app-video-listing',
templateUrl: './video-listing.component.html',
styleUrls: ['./video-listing.component.scss']
})
export class VideoListingComponent implements OnInit {
constructor(private http: HttpClient) {}
ngOnInit()
{
// bpLmn-oO60E is the videoId of video
this.search("bpLmn-oO60E").subscribe((data)=>{
console.log(data);
});
}
search(query: string): Observable<VideoDetail[]> {
const params: string = [
`q=${query}`,
`key=${YOUTUBE_API_KEY}`,
`part=snippet`,
`type=video`,
`maxResults=10`
].join('&');
const queryUrl = `${YOUTUBE_API_URL}?${params}`;
return this.http.get(queryUrl).pipe(map(response => {
return response['items'].map(item => {
return new VideoDetail({
id: item.id.videoId,
title: item.snippet.title,
description: item.snippet.description,
thumbnailUrl: item.snippet.thumbnails.high.url
});
});
}));
}
}