- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 videojs-playlist 插件和 Google 的 videojs-ima 插件。一切都很顺利,除了我只在第一个视频之前收到预加载广告。我想要播放列表中每个视频之前有一个。基本设置是样板,但仅供引用:
this.player = videojs('currentvideo', { autoplay : true, fluid : true });
this.player.playlist(this.playlist);
this.player.playlist.autoadvance(5);
const skippable_linear = {google's test ad};
const options = {
id: 'currentvideo',
adTagUrl: skippable_linear,
debug : true
};
this.player.ima(
options
);
this.player.ima.requestAds();
我尝试了各种从“结束”事件处理程序内部手动调用广告的方法,例如再次调用 requestAds
:
const _this = this;
this.player.on( 'ended', function(){
/* some other stuff */
_this.player.ima.requestAds();
});
这确实在我想要的地方播放广告,但是
有没有一种简单的方法可以通过编程方式说“立即播放广告”?我尝试过使用 ima 插件及其依赖的 contrib-ads 插件公开的所有看似适用的方法,但并不高兴。我在这里承认,这是我第一次处理转换广告的视频,所以我有点菜鸟。
最佳答案
我正在尝试做同样的事情。就像你一样,我在事件上调用 player.ima.requestAds()
时失败了。我进行了更深入的研究,我能想到的最好的就是我在下面分享的内容。
根据videojs-ima API您必须使用 setContentWithAdTag
方法,而不是用于切换播放器内容的任何方法。在我们的例子中,它是 player.playlist.next
方法。
我结合了videojs-ima examples中找到的代码使用原始的 playlist.next
编写我自己的 next
。
然后我非常残酷地覆盖了原来的插件方法。
代码如下:
player.playlist(myPlayilst);
player.playlist.autoadvance(2);
player.playlistUi(); //videojs-playlist-ui
player.ima({
id: 'video5',
adTagUrl: 'thy adserver request'
});
//override playlist.next
player.playlist.next = function(){
var nextIndex = 0,
playlist = this.player_.playlist,
list = this.player_.playlist();
//everything below is copied directly from the original `next` (except for the "//load with ad")
// Repeat
if (playlist.repeat_) {
nextIndex = playlist.currentIndex_ + 1;
if (nextIndex > list.length - 1) {
nextIndex = 0;
}
} else {
// Don't go past the end of the playlist.
nextIndex = Math.min(playlist.currentIndex_ + 1, list.length - 1);
}
// Make the change
if (nextIndex !== playlist.currentIndex_) {
//load with ad
this.player_.playlist.currentItem(nextIndex);
this.player_.ima.setContentWithAdTag(
this.player_.playlist.currentItem(),
null,
true);
this.player_.ima.requestAds();
/////
return list[playlist.currentItem()];
}
}
您可能需要重写其他更改当前播放的方法,例如 playlist.previous
。
我使用videojs-playlist-ui
,所以在我的例子中,有必要更改名为switchPlaylistItem_
的onclick处理程序。我使用了一些很好的旧蛮力来做到这一点,如下所示:
videojs.getComponent('PlaylistMenuItem').prototype.switchPlaylistItem_ = function(e){
this.player_.playlist.currentItem(this.player_.playlist().indexOf(this.item));
this.player_.ima.setContentWithAdTag(
this.player_.playlist.currentItem(),
null,
true);
this.player_.ima.requestAds();
};
PlaylistMenuItem
的原型(prototype)应在初始化播放器之前更改。
这个解决方案有效,但感觉很hacky,所以如果有人能想出更干净的东西,请分享!
关于node.js - 视频 : playing a pre-roll add before each playlist item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42771207/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8 个月前关闭。 Improve t
我正在使用 node.js、Sequelize 和 MariaDB,我遇到了以下错误,我不确定如何解决? Error: Naming collision between attribute 'play
我一直在努力完成我认为很简单的任务:将视频添加到 YouTube 播放列表。我已经有了 uri 和视频 ID,所以这应该可行,对吗? uri = "http://gdata.youtube.com/f
我在一个网站上工作,我试图制作一个自定义主题播放列表来播放 YouTube 上托管的视频。我已经在网站的另一部分成功地一起使用了 VideoJS 和 VideoJS-YouTube,但是在引入 Vid
首先我为提出一个非常不具体的问题表示歉意。但我的线索太少,时间也太少,我真的不知道从哪里开始寻找。 我是计算艺术入门类(class)的学生。 48小时后我们将进行最后的展览。我刚刚意识到每个人用纯数据
我正在使用 jplayer 播放列表和自动播放。显示播放列表,正在播放歌曲,一切正常。但我想在 jplayer 更改为下一首歌曲时获取当前歌曲名称。我找不到任何相关文档。 歌曲更改后如何获取当前歌曲名
我想从 youtube 下载视频播放列表使用 youtube-dl 进一步离线查看。 有些视频有不可用的片段(但由于某种原因,通过浏览器观看时没有问题)。我想下载播放列表,但跳过缺少片段的视频。 我原
我试图通过如下传递用户 ID 来获取用户的播放列表, https://api.soundcloud.com/tracks?client_id=xxxxxx 但问题是它给我这样的错误, {"errors
在开发一个小的 spotify 小部件的过程中,我想接收我的播放列表。这对 Spotify API 来说没有问题,但我只需要获取所有者为当前用户的播放列表。 这可能吗? 非常感谢! 朱利安 最佳答案
我正在使用 动态创建播放列表m.Playlist() 然后使用 添加轨道.add() 功能。但是使用 将这些播放列表添加到工具栏似乎不起作用。 “+ 添加为播放列表” 按钮和 sp.core.libr
我已经在自己的网站上设置了YouTube Direct Lite。验证成功,可以使用您的Google帐户通过YouTube登录。现在,当我加载页面时出现了问题。 我收到一条错误消息,指出“缺少“播放列
根据 Spotify 对我的应用程序的反馈,我需要在我的 Spotify 应用程序中添加一个“另存为播放列表”按钮。我在其他应用程序中看到过该按钮,但据我所知,该按钮没有 native 实现 - 对吗
所以我看到了 original example如何从链接加载播放列表。我知道有一个API method playlist[].sources[].file 添加源。我只是很难将它们整合在一起。我试图通
我一直在使用以下代码从我的 Android 应用程序的播放列表中删除一个项目: private void removeFromPlaylist(long playlistId, int loc) {
我发现了一些脚本,该脚本如何通过AppleScript控制Spotify。但是它们仅包括播放/暂停,下一个,上一个,停止之类的内容。我在Spotify上搜索有关AppleScript的引用,但没有找到
我正在尝试获取最新上传的视频,但是对于某些 channel ,最新的视频丢失了,而其他视频的顺序与您在网站上的实际 channel 上传部分中使用的顺序不同...使用搜索(而不是播放列表)似乎有效(按
我在将多个视频添加到 YouTube 上已有的播放列表时遇到问题。 目前,我可以通过重复一段代码(从 request = 到 print(f"\n{response}"))来添加多个视频在我的脚本中一
在 Visual Studio 中使用单元测试时,可以编译对测试进行分组的播放列表。例如,当开发一个新功能时,我们只想运行相关测试而不是所有现有测试,这很有用。 但是,在我看来,播放列表只能通过显式添
我想创建一个播放列表来加载特定用户上传的所有视频。 有人建议我使用以下代码(假设要拉入的帐户是 YouTube): loadPlaylist( { listType: 'user_uploads',
我目前正在使用 Javascript、PHP 和 MySQL 构建一个 Web 应用程序(媒体播放器)。它将用于上传视频并将其存储到播放列表中,然后用户可以使用该播放列表将视频按所需的顺序放置。 上传
我是一名优秀的程序员,十分优秀!