HTML5 <audio>
和<video>
标签支持duration
属性。我很好奇,在不下载整个音频/视频源文件的情况下,浏览器如何确定媒体的持续时间?
我问是因为我想在我正在编写的后端服务中实现相同的功能,
答案 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个字节),而不必下载整个文件