如何检查多个 HTML5 视频的音频

Posted

技术标签:

【中文标题】如何检查多个 HTML5 视频的音频【英文标题】:How to check multiple HTML5 videos for audio 【发布时间】:2017-08-01 08:53:02 【问题描述】:

我正在尝试检查多个视频是否有音频,如下所示: https://jsfiddle.net/hrd4a0c3/

但这只检查一个视频,我希望它检查多个视频。

document.getElementById("myVideo").addEventListener("loadeddata", function() 
  if (typeof this.webkitAudioDecodedByteCount || this.mozHasAudio || this.audioTracks !== "undefined") 
    if (this.webkitAudioDecodedByteCount > 0 || this.mozHasAudio || this.audioTracks && this.audioTracks.length)
      this.after("has audio");
    else
      this.after("no audio");
  
);

【问题讨论】:

【参考方案1】:

我会使用class 而不是id,因为id 应该是指一个元素。

<video class='myVideo' autoplay loop muted>
  <source src="https://vtt.tumblr.com/tumblr_ok41s7Iebh1t4fjz0_480.mp4" type="video/mp4">
</video>

<video class='myVideo' autoplay loop muted>
  <source src="https://vtt.tumblr.com/tumblr_ok44bpZZka1t4fjz0_480.mp4" type="video/mp4">
</video>

然后你可以像这样使用getElementsByClassName

var videos = document.getElementsByClassName("myVideo");

for (i = 0; i < videos.length; i++) 
  videos[i].addEventListener("loadeddata", function() 
    if (typeof this.webkitAudioDecodedByteCount || this.mozHasAudio || this.audioTracks !== "undefined") 
      if (this.webkitAudioDecodedByteCount > 0 || this.mozHasAudio || this.audioTracks && this.audioTracks.length)
        this.after("has audio");
      else
        this.after("no audio");
    
  );

更新Fiddle

【讨论】:

没问题 :) 我很高兴它有帮助。 请再次帮助我,我不能在这个“.after”中添加一些 html 或 css 不起作用 要插入 html 字符串作为 ("&lt;p&gt;no audio&lt;/p&gt;") 之类的内容,您可以使用 JQuery - Fiddle Demo - 请注意在 fiddle 中如何将 JQuery 添加到左侧栏的外部资源中。 是的,只是 $(this),对不起,我的错。我没有大脑

以上是关于如何检查多个 HTML5 视频的音频的主要内容,如果未能解决你的问题,请参考以下文章

如何从 HTML5 中的视频中提取音频?

如何从 HTML5 网络视频生成音频波形?

如何从HTML5网络视频生成音频波形?

HTML5中如何显示视频HTML5视频播放

如何使用 HTML 5 仅播放 Youtube 视频的音频?

如何以编程方式将多个源添加到 HTML5 音频标签?