HTML5音频/视频标签如何确定持续时间

时间:2018-12-24 18:04:19

标签: html5 audio html5-video html5-audio

HTML5 <audio><video>标签支持duration属性。我很好奇,在不下载整个音频/视频源文件的情况下,浏览器如何确定媒体的持续时间?

我问是因为我想在我正在编写的后端服务中实现相同的功能,

  1. 接受mp3的网址
  2. 确定文件的长度(以秒为单位),而无需下载整个文件

1 个答案:

答案 0 :(得分:1)

大多数视频容器既包含视觉和音频元素,又包含描述诸如持续时间,色彩空间,使用的编解码器和每帧偏移(查找时有用)之类的元数据块。在以MP4格式编码为网络的典型视频中,该块(也称为MOOV原子)默认为文件末尾(因为直到结束时才知道帧位置),除非已执行第二遍操作将其移动到前面例如:

ffmpeg -i source.mp4 -c:a copy -c:v copy -movflags faststart destination.mp4

(不变地复制音频和视频,只需将元数据移到开头即可实现更快的访问)

您可能会遇到一些网络视频,几乎可以在其中使用MP4进行搜索,而在某些视频中,直到文件完全加载后才可以准确地进行搜索...这是因为浏览器必须做出“猜测”,它接收到元数据

对于mp3文件,您可以使用类似this的方式-请求服务器仅向您提供ID3标签和eTag数据(最后127个字节和227个字节),而不必下载整个文件