如何使用纯ecmascript从MP4 URL获取视频高度和宽度,并且没有h.264的浏览器支持?

use*_*570 5 javascript ajax file-structure userscripts h.264

我正在编写用于下载视频的用户脚本.该网站的Flash播放器使用JSON文件.
我的脚本的目的是通过根据网页下载和解析视频来获取视频的URL.目前,它可以成功下载提取视频的URL.

JSON文件的重要部分如下所示:

    {
        "ammProfile": "AMM-HBBTV",
        "version": "VF",
        "versionProg": "1",
        "VFO": "HBBTV",
        "VMT": "mp4",
        "VUR": "http://vo.llnwd.net/v2/am/HBBTV/051332-074-A_SQ_2_VF_01464306_MP4-2200_AMM-HBBTV.mp4"
    }, {
        "ammProfile": "AMM-HBBTV",
        "version": "VF",
        "versionProg": "1",
        "VFO": "HBBTV",
        "VMT": "mp4",
        "VUR": "http://vo.llnwd.net/v2/am/HBBTV/051332-074-A_EQ_2_VF_01464315_MP4-1500_AMM-HBBTV.mp4"
    }
Run Code Online (Sandbox Code Playgroud)

这里的两个URL都是关于相同的视频,这只是改变的分辨率.

那么,如何在不下载整个文件的情况下解析相关元数据呢?H.264视频编解码器的标准很难阅读.

dan*_*vis 7

你不需要加载整个视频来获得高度:

function getVideoHeight(url, fnCallback){

var video=document.createElement("video");
  video.autoplay=true;
  video.oncanplay=function(){
     fnCallback(this.offsetWidth, this.offsetHeight);
     this.src="about:blank";
     document.body.removeChild(video);   
  };

  document.body.appendChild(video);
  video.src=url;

}


//test:

getVideoHeight(
  "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4", 
  function(w,h){ alert( w+"X"+h); }
); // shows: "640X360"
Run Code Online (Sandbox Code Playgroud)


Aga*_*nus 3

您可以通过 XMLHttpRequest 使用 Range HTTP 标头来仅获取文件的一部分:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

例如:

xhr.setRequestHeader ('Range', 'bytes=0-' + (fragment_size - 1))
xhr.setRequestHeader ('Content-Length', fragment_size) // This part isn't absolutely required on most (all?) browsers.
Run Code Online (Sandbox Code Playgroud)