- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试(已经几天)完成非常简单的任务:构建一个 javascript 文件,捆绑所有必要的部分以使用 Google IMA 广告播放视频,但我仍然面临一些错误(主要是 player.ads not function
) 总是以某种方式连接到错误注册的插件。我感谢任何建议。谢谢。
编辑:这个问题是 already reported ,但标记为优先级 3,我没有时间等待。我相信还有另一种解决方案。
EDIT2:在上面的链接中报告此问题的那个人似乎已经提供了合适的解决方案。现在只剩下尝试了..如果可行,我将其作为答案发布。
入口文件:
/*jshint esversion: 6 */
/*jshint -W030 */
let ima_script = document.createElement('script');
ima_script.type = "text/javascript";
ima_script.src = "https://imasdk.googleapis.com/js/sdkloader/ima3.js";
document.getElementsByTagName('head')[0].appendChild(ima_script);
videojs = require('video.js');
require('videojs-contrib-ads');
require('videojs-ima');
require('videojs-youtube');
require('videojs-contrib-hls');
Array.from(document.getElementsByTagName('video'))
.forEach(videojs);
ima_script.onload = function() {
google.ima.settings.setLocale('cs');
let players = videojs.players;
for (let id in players) {
(players.hasOwnProperty(id) ? players[id].ima({
id: id,
adTagUrl: 'https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=',
disableFlashAds: true
}):'');
}
};
gulpfile.js:
var browserify = require('browserify');
var babelify = require('babelify');
var buffer = require('vinyl-buffer');
var concat = require('gulp-concat');
var css2js = require('gulp-css-to-js');
var cssnano = require('gulp-cssnano');
var del = require('del');
var gulp = require('gulp');
var ignore = require('gulp-ignore');
var jshint = require('gulp-jshint');
var path = require('path');
var runSequence = require('run-sequence');
var size = require('gulp-size');
var mergeStream = require('merge-stream');
var source = require('vinyl-source-stream');
var sourcemaps = require('gulp-sourcemaps');
var uglify = require('gulp-uglify');
var distPath = path.join(path.normalize('__dirname/../dist'), '/');
gulp.task('build', function (done) {
runSequence(
'clean',
'lintjs',
'build-bundle',
function (error) {
if (error) {
console.log(error.message.red);
} else {
console.log('BUILD FINISHED SUCCESSFULLY'.green);
}
done(error);
});
});
gulp.task('clean', function (done) {
del.sync([distPath], {force: true});
done();
});
gulp.task('lintjs', function() {
return gulp.src([
'gulpfile.js',
'src/**/*.js',
'build/**/*.js'
])
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'));
});
gulp.task('build-bundle', function () {
var videoJS = browserify({
entries: 'src/entryfile.js',
//debug: true,
paths: ['./node_modules'],
cache: {},
packageCache: {}
})
.transform(babelify)
.bundle()
.pipe(source('outputfile.js'))
.pipe(buffer());
var videoCss = gulp.src('node_modules/video.js/dist/video-js.css')
.pipe(cssnano())
.pipe(css2js());
var imaCss = gulp.src('node_modules/video-ima/dist/videojs.ima.css')
.pipe(cssnano())
.pipe(css2js());
return mergeStream(videoCss, imaCss, videoJS)
.pipe(concat('video.bundle.js'))
/*
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify({compress: false})) // compress needs to be false otherwise it mess the sourcemaps
.pipe(sourcemaps.write('.'))*/
.pipe(gulp.dest(distPath))
.pipe(size({showFiles: true, title: '[VideoJS+Plugin Bundle]'}));
});
package.json:
{
"name": "videojs-ima-bundle",
"version": "0.1.0",
"authors": [
"John Wick <john.wick@gmail.com>"
],
"description": "video.js bundle",
"main": "src/entryfile.js",
"repository": {},
"keywords": [
"vpaid",
"html5",
"vast",
"videojs",
"js",
"video",
"iab",
"youtube"
],
"scripts": {
"gulp": "gulp build"
},
"author": "John Wick <john.wick@gmail.com>",
"license": "MIT",
"devDependencies": {
"babel-core": "*",
"babelify": "*",
"browserify": "^13.0.0",
"browserify-istanbul": "^0.2.1",
"colors": "^1.1.0",
"del": "^2.2.0",
"gulp": "^3.9.0",
"gulp-concat": "^2.6.1",
"gulp-css-to-js": "^0.0.2",
"gulp-cssnano": "^2.1.0",
"gulp-ignore": "^2.0.2",
"gulp-jshint": "^2.0.0",
"gulp-size": "^2.0.0",
"gulp-sourcemaps": "^1.6.0",
"gulp-uglify": "^1.2.0",
"jshint": "^2.9.1",
"jshint-stylish": "^2.1.0",
"merge-stream": "^1.0.1",
"run-sequence": "^1.1.0",
"uglifyify": "^3.0.1",
"video.js": "6.x",
"videojs-contrib-ads": "*",
"videojs-contrib-hls": "*",
"videojs-ima": "^1.0.3",
"videojs-youtube": "*",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0"
}
}
最佳答案
根据 EDIT2,这只是使其工作的修改:
修改了 Entryfile 的 require 部分:
videojs = require('video.js');
var contribAds = require('videojs-contrib-ads');
videojs.registerPlugin('ads', contribAds);
require('video.js/dist/lang/cs.js')
require('videojs-youtube');
require('videojs-contrib-hls');
require('videojs-ima');
编辑
注册 contrib-ads 插件在 v6 中被“修复”。现在你应该简单地使用:
require('videojs-contrib-ads');
关于javascript - 将 videojs 与 videojs-ima 插件捆绑在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267963/
我在一个网站上工作,我试图制作一个自定义主题播放列表来播放 YouTube 上托管的视频。我已经在网站的另一部分成功地一起使用了 VideoJS 和 VideoJS-YouTube,但是在引入 Vid
我有一个使用 symfony 的项目,我使用 encoreJS 作为前端。实际上我制作了一个视频列表播放器并且工作正常。但我想使用 videojs-playlist-ui 来制作 example 但是
我发现了videojs播放列表的各种插件。有些需要修改才能与最新版本一起运行。我还发现了可以运行youtube视频的插件。 我需要知道,是否可以同时运行两个插件。就像我想通过同一播放器运行音频,视频和
我正在使用一个允许我在 video-js 中显示广告的插件。 https://github.com/dirkjanm/videojs-preroll/blob/master/lib/videojs.a
我现在想出了这个解决方案: var myPlayer1 = _V_("ID1"); var myPlayer2 = _V_("ID2"); ... ... va
我正在尝试(已经几天)完成非常简单的任务:构建一个 javascript 文件,捆绑所有必要的部分以使用 Google IMA 广告播放视频,但我仍然面临一些错误(主要是 player.ads not
本文实例为大家分享了videojs+swiper实现淘宝商品详情轮播图的具体代码,供大家参考,具体内容如下 这个引用了videojs和swiper。实现效果类似淘宝商品详情中的轮播图,首张轮播为视
我正在使用 VideoJs(使用 HTML5 播放器)播放来自 DASH 或 HLS 源的实时内容。 我想知道实际播放内容与实际直播内容相差多少。 我该怎么做? 有一个 player.currentT
我已经设置了 videojs 播放器并获得了一个 HLS 流以通过 OBS 传输到播放器。当 OBS 正在运行并将视频发送到流时,播放器上会出现播放按钮,它看起来很正常,但是当没有任何内容流式传输到页
我使用videojs插件自定义视频播放器。 我有30个模态,每个模态(Youtube,Dailymotion,Vimeo)中都有一个不同的视频。 我添加了两个按钮next / prev,以在每个模式之
我正在其他域的iframe中从https://github.com/videojs/videojs-youtube加载/videojs-youtube/examples/simple.html示例页面
我对手动(单击按钮)使用videojs使用相同的html video标签(如果可能)触发播放不同的youtube url感兴趣。 我看到了这段代码,这使我希望这是可行的:http://jsfiddle
由于 JWPlayer 可笑的定价政策,我转向了 VideoJS。 问题是,当用户在 iOS 上启动视频时,它会切换 native 全屏。我希望控制面板在全屏模式下可用,但我还无法管理它。 代码:
我有最新的videojs(版本:7.6.6)。 是否可以使进度条可拖动? 当前状态:当我在进度条上移动鼠标时,第一件事是播放器等待下载几帧,然后移动。 想要:我可以将鼠标(单击状态 = mouseDo
我希望动态更改我的 VideoJS 播放器的视频源。我尝试了一种直接通过 DOM 更改源的方法,它确实改变了它,但播放器需要重新加载。所以看这里的官方API:http://docs.videojs.c
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
所以我制作了一个脚本来在播放器之外显示当前时间,一切正常。问题是它以微秒为单位渲染,我想将其显示为 H:MM:SS 这是代码,以便您可以理解我在说什么: HTML T
我想制作一个播放列表,视频源和海报是动态加载的。这是我的代码 var myFunc = function(){ var myPlayer = this; var xmlhttp; xmlhttp =
我正在使用 VideoJS 播放文件服务器提供的视频。这些文件是 mp4 格式,并且在任何桌面浏览器上都可以正常工作(使用 Flash 后备)。但是,它们在移动设备上根本不起作用。作为引用,请随时查看
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!