Videojs在全屏模式下获取视频尺寸
Videojs get video dimensions in fullscreen mode
当不处于全屏模式时,我可以使用 videoWidth() 和 videoHeight() 获取实际视频(不是播放器)的宽度和大小,如下所示:
var SVideo = videojs('SingularVideo').ready(function(){
resizeFunc(this.videoWidth(), this.videoHeight())
});
问题是当用户进入全屏模式时我需要检查视频大小,所以我监听 "fullscreenchange" 事件并再次检查:
SVideo.on("fullscreenchange",
function () {
resizeFunc(SVideo.videoWidth(), SVideo.videoHeight());
});
但是在fullscreenchange回调中,宽度和高度没有改变,值与视频未处于全屏模式时的值相同。
对于在全屏模式下如何获取实际视频宽度和高度的任何建议,我将不胜感激。 TIA!
由于是全屏,可以通过以下代码获取屏幕的宽高:
var width = screen.width;
var height = screen.height;
我一直在寻找视频尺寸,但不是在全屏模式下。我可以看到这是一个老问题,- 所以你可能还没有遇到这个问题。但希望它可以帮助其他人。
我确实在文档中找到了这个:currentDimensions ... However... I was hoping to get the aspect ratio of the video, - and not the size of the video-element (including the black edges/borders/fillers). I did figure out, that if I set fluid
to true
( the fluid option),那么视频将占据整个视频-HTML-元素。
请注意,流体选项是在视频呈现后稍微实现的,- 所以我不得不使用 setTimeout(uuuuuuugly!),以获得正确的 aspectRatio。
这是我的 (VueJS) 代码:
mounted() {
this.player = videojs(this.$refs.videoPlayer, this.videoOptions, () => {
this.calcAspectRatio();
this.setMaxWidth();
setTimeout( () => {
this.calcAspectRatio();
this.setMaxWidth();
});
setTimeout( () => {
this.calcAspectRatio();
this.setMaxWidth();
}, 1000 );
setTimeout( () => {
this.calcAspectRatio();
this.setMaxWidth();
}, 2000 );
});
}
methods: {
calcAspectRatio(){
if( this.player && this.player.currentDimensions( 'width' ).width ){
this.aspectRatio = this.player.currentDimensions( 'width' ).height / this.player.currentDimensions( 'width' ).width;
}
},
setMaxWidth(){
let maxWidth = 1 / this.aspectRatio * ( ( this.VIEWPORTHEIGHTWHICHISCALCULATEDELSEWHERE - 100 ) * 0.90 );
document.querySelector( '#' + this.id ).style.maxWidth = maxWidth + 'px';
},
}
当不处于全屏模式时,我可以使用 videoWidth() 和 videoHeight() 获取实际视频(不是播放器)的宽度和大小,如下所示:
var SVideo = videojs('SingularVideo').ready(function(){
resizeFunc(this.videoWidth(), this.videoHeight())
});
问题是当用户进入全屏模式时我需要检查视频大小,所以我监听 "fullscreenchange" 事件并再次检查:
SVideo.on("fullscreenchange",
function () {
resizeFunc(SVideo.videoWidth(), SVideo.videoHeight());
});
但是在fullscreenchange回调中,宽度和高度没有改变,值与视频未处于全屏模式时的值相同。 对于在全屏模式下如何获取实际视频宽度和高度的任何建议,我将不胜感激。 TIA!
由于是全屏,可以通过以下代码获取屏幕的宽高:
var width = screen.width;
var height = screen.height;
我一直在寻找视频尺寸,但不是在全屏模式下。我可以看到这是一个老问题,- 所以你可能还没有遇到这个问题。但希望它可以帮助其他人。
我确实在文档中找到了这个:currentDimensions ... However... I was hoping to get the aspect ratio of the video, - and not the size of the video-element (including the black edges/borders/fillers). I did figure out, that if I set fluid
to true
( the fluid option),那么视频将占据整个视频-HTML-元素。
请注意,流体选项是在视频呈现后稍微实现的,- 所以我不得不使用 setTimeout(uuuuuuugly!),以获得正确的 aspectRatio。
这是我的 (VueJS) 代码:
mounted() {
this.player = videojs(this.$refs.videoPlayer, this.videoOptions, () => {
this.calcAspectRatio();
this.setMaxWidth();
setTimeout( () => {
this.calcAspectRatio();
this.setMaxWidth();
});
setTimeout( () => {
this.calcAspectRatio();
this.setMaxWidth();
}, 1000 );
setTimeout( () => {
this.calcAspectRatio();
this.setMaxWidth();
}, 2000 );
});
}
methods: {
calcAspectRatio(){
if( this.player && this.player.currentDimensions( 'width' ).width ){
this.aspectRatio = this.player.currentDimensions( 'width' ).height / this.player.currentDimensions( 'width' ).width;
}
},
setMaxWidth(){
let maxWidth = 1 / this.aspectRatio * ( ( this.VIEWPORTHEIGHTWHICHISCALCULATEDELSEWHERE - 100 ) * 0.90 );
document.querySelector( '#' + this.id ).style.maxWidth = maxWidth + 'px';
},
}