从 videoJS 显示视频时长

Posted

技术标签:

【中文标题】从 videoJS 显示视频时长【英文标题】:Display video duration from videoJS 【发布时间】:2013-11-23 12:43:30 【问题描述】:

我正在使用 jQuery 开发 html5 视频播放器。现在我的视频播放器运行良好,但我想获取视频持续时间的变量并在纯 HTML 页面中显示/显示它。

因此,您可以从这里获取有关此 Jquery 视频播放器的更多信息: http://www.videojs.com/docs/api/

我认为视频时长的变量是:myPlayer.duration();

如何在 HTML 中显示这个值?

这是显示播放器的 HTML 代码:

  <video id="vemvo-player" class="video-js vjs-default-skin" controls autoplay="true"  
      data-setup="">
    <source src="[var.base_url]/uploads/[var.video_play]" type='video/flv' />
  </video>

这是我试图显示此变量的内容,但它说它是 =“0”,而在视频播放器上它说它是 4 分钟:

  <video id="vemvo-player" class="video-js vjs-default-skin" controls autoplay="true"  
      data-setup="">
    <source src="[var.base_url]/uploads/[var.video_play]" type='video/flv' />
  </video>
<div id="duration"></div>
<script type="text/javascript">
    _V_("vemvo-player").ready(function()
        var myPlayer = this;
        var howLongIsThis = myPlayer.duration();
        $('#duration').html('Duration: ' + howLongIsThis);
    );
</script>

我的错误在哪里?

【问题讨论】:

你能在网上创建一个你的问题的演示,也许在jsFiddle,所以我们可以看到它? How to display Javascript/Jquery value in HTML page? VideoJs Display durration of the video 的可能副本 精确与How to print one specific Javascript variable in HTML? 重复。请避免多次问同一个问题。另见***.com/questions/19915141/… 【参考方案1】:

你可以试试这个。它对我有用。

var myPlayer = videojs('vemvo-player');

    if (myPlayer.readyState() < 1) 
        // wait for loadedmetdata event
        myPlayer.one("loadedmetadata", onLoadedMetadata);
    
    else 
        // metadata already loaded
        onLoadedMetadata();
    
    
    function onLoadedMetadata() 
        alert(myPlayer.duration());
        $('#duration').html("Duration: " + myPlayer.duration());
    

【讨论】:

【参考方案2】:
var player = videojs('my-video', 
    fluid:false, // videojs settings
    controls:true,
    height: '300'          
  );
$(document).ready(function()
  console.log(player.duration()); 
 // will return video duration. Can't be used while page is loading.

  console.log(player.currentTime()); 
 // will return current time if video paused at some time. Intially it would be 0.

);

【讨论】:

你的答案应该有解释。 希望这些 cmets 对您有所帮助。谢谢【参考方案3】:

那些可能来到这里并在 Vue 3 中使用 videojs 的人,也可能使用类似的框架,如 React。

参考此代码和组件用法-https://docs.videojs.com/tutorial-vue.html您可以进行以下更改以获取持续时间、高度和宽度。

// New Code here
this.player = videojs(
  this.$refs.videoPlayer,
  this.options,
  function onPlayerReady() 
    console.log("onPlayerReady", this);
  
);
this.player.one("loadedmetadata", () => 
  var duration = this.player.duration();
  console.log(`Duration of Video $duration`);
  console.log(`Original Width of Video $this.player.videoWidth()`);
);

【讨论】:

【参考方案4】:

当您使用 jQuery 时,可以更轻松地完成 :) 您可以使用 $.html 编辑 dom 元素的 html 内容。您的代码将如下所示:

<div id="duration"></div>

<script type="text/javascript">
    _V_("vemvo-player").ready(function()
        var myPlayer = this;
        var howLongIsThis = myPlayer.duration();
        $('#duration').html('Duration: ' + howLongIsThis);
    );
</script>

【讨论】:

它仍然说持续时间为0。我怎样才能显示真实的持续时间? 在执行记录howLongIsThis var 时,您在控制台中看到了什么? 你在控制台是什么意思?我不明白。 为什么它是 = 0 问题出在哪里? 我如何在控制台中执行这个?

以上是关于从 videoJS 显示视频时长的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VideoJS 在 Angular App 上显示 360 度视频

显示视频的当前时间,而不是 videojs 上的剩余时间

如何使用 Play Framework 和 videojs 流式传输视频?

使用 videojs 播放视频,视频获取失败

使用 videojs-record 和 videojs 进行直播

无法在 Videojs 播放器中显示字幕