- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用的是VideoJs player 4.2
当我在 ios 设备的 safari 浏览器中打开 videojs 播放器时,它默认在 native 控件上运行。当我暂停播放器时,我会在视频上显示叠加按钮(指向其他页面的链接)。如果我单击按钮,它不会在 ios 中触发。它在桌面浏览器中运行良好。如果我将 nativeControlsForTouch 设置为 false,它会显示自定义控件。这里覆盖按钮和自定义控件有效,但它会很慢,我无法滚动视频,与 native 控件相比,它会不流畅。请给我任何想法
这是我的代码
videojs("ex_video",{"controls":true, "preload":"metadata","width":"auto", "height":"auto",
"poster":"/images/test.png"},function(){
var current_player=this;
current_player.imageOverlay({
opacity: 0.5,
height: '100%',
width: '50%'
});
current_player.on("pause", function(){
current_player.bigPlayButton.show();
});
current_player.on("play", function(){
current_player.bigPlayButton.hide();
});
});
叠加按钮代码
(function(vjs) {
var
extend = function(obj) {
var arg, i, k;
for (i = 1; i < arguments.length; i++) {
arg = arguments[i];
for (k in arg) {
if (arg.hasOwnProperty(k)) {
obj[k] = arg[k];
}
}
}
return obj;
},
defaults = {
image_url: '',
click_url: '',
start_time: null,
end_time: null,
opacity: 0.7,
height: '15%',
width: '100%'
},
imageOverlay = function(options) {
var player = this,
settings = extend({}, defaults, options || {}),
showingImage = false;
if (settings.start_time === null)
settings.start_time = 0;
if (settings.end_time === null)
settings.end_time = player.duration() + 1;
overlay = {
showImage: function() {
if (showingImage) {
return;
}
showingImage = true;
var holderDiv = document.createElement('div');
holderDiv.id = 'vjs-image-overlay-holder';
holderDiv.style.height = settings.height;
holderDiv.style.width = settings.width;
holderDiv.style.opacity=settings.opacity;
var overlayLbl1= document.createElement('label');
overlayLbl1.setAttribute('class','heading-overlay-video');
overlayLbl1.innerHTML= "Like this class? Why not:";
var topVideoP=overlay.createEl(overlayLbl1);
topVideoP.className=topVideoP.className+' top-video-control-overlay';
holderDiv.appendChild(topVideoP);
//Save to queue
var overlayBtn1=document.createElement('button');
overlayBtn1.value = 'Save to queue';
overlayBtn1.innerHTML='Save to queue';
overlayBtn1.setAttribute('class','white medium');
holderDiv.appendChild(overlay.createEl(overlayBtn1));
//Add to series button
var overlayBtn2=document.createElement('button');
overlayBtn2.value = 'Add to series';
overlayBtn2.innerHTML='Add to series';
overlayBtn2.setAttribute('class','white medium');
holderDiv.appendChild(overlay.createEl(overlayBtn2));
var overlayLbl2= document.createElement('label');
overlayLbl2.innerHTML= "music credits";
overlayLbl2.setAttribute('class','msg-blue');
var btmVideoP=overlay.createEl(overlayLbl2);
btmVideoP.className=btmVideoP.className+' bottom-video-control';
holderDiv.appendChild(btmVideoP);
player.el().appendChild(holderDiv);
},
hideImage: function() {
if (!showingImage) {
return;
}
showingImage = false;
player.el().removeChild(document.getElementById('vjs-image-overlay-holder'));
},
createEl:function(ele_obj){
var overlayP=document.createElement('p');
overlayP.setAttribute('class','overlay-video-content-in');
overlayP.appendChild(ele_obj);
return overlayP ;
}
};
var setTimeoutControl;
player.on('pause', function(){
setTimeoutControl= setTimeout(function(){overlay.showImage()},5000);
});
player.on('play', function(){
clearTimeout(setTimeoutControl);
overlay.hideImage();
});
};
vjs.plugin('imageOverlay', imageOverlay);
}(window.videojs));
最佳答案
默认情况下,浏览器中的 HTML5 视频将在 iPod、iPhone 的 native 播放器中打开。您必须将 HTML 内容包装在 webview 中并像本地应用程序一样运行它才能在 iPod、Iphone 中查看视频。
查看此 HTML5 inline video on iPhone vs iPad/Browser
所以这两个改动必须在HTML中完成
<video id="xxx" width="xx" height="xx" webkit-playsinline>
objective-C
webview.allowsInlineMediaPlayback = YES;
在所有其他设备中,没有这些也可以正常工作
关于javascript - 触摸设备中的 VideoJS 播放器覆盖按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659806/
我在一个网站上工作,我试图制作一个自定义主题播放列表来播放 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
我是一名优秀的程序员,十分优秀!