zoukankan      html  css  js  c++  java
  • PHP 获取视频时长方法

    因为最近做http://www.sdfymj.com/video/ 这个视频站点,需要用到获取视频时长的方法,今天顺便分享给大家

    //获得视频文件的总长度时间和创建时间 根据视频长度判断是否失效
    public function getTime($url)
    {
      //获取视频重定向后的链接
      $location = locationUrl($url);
      //获取视频Content-Length
      $responseHead = get_data($location);
      $list1 = explode("Content-Length: ", $responseHead);
      $list2 = explode("Connection", $list1[1]);
      $list = explode("x", $list2[0]);
      return $list[0];
    }
    //获取视频重定向后的链接
    function locationUrl($url){
      $url_parts = @parse_url($url);
      if (!$url_parts) return false;
      if (!isset($url_parts['host'])) return false;
      if (!isset($url_parts['path'])) $url_parts['path'] = '/';
      $sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : '80'), $errno, $errstr, 30);
      if (!$sock) return false;
      $request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1
    ";
      $request .= 'Host: ' . $url_parts['host'] . "
    ";
      $request .= "Connection: Close
    
    ";
      fwrite($sock, $request);
      $response = '';
      while(!feof($sock)) {
        $response .= fread($sock, 8192);
      }
      fclose($sock);
      if (preg_match('/^Location: (.+?)$/m', $response, $matches)){
        if ( substr($matches[1], 0, 1) == "/" ){
          return $url_parts['scheme'] . "://" . $url_parts['host'] . trim($matches[1]);
        }
        else{
          return trim($matches[1]);
        }
      } else {
        return false;
      }
    }
    //审核视频 curl
    function get_data($url){
      $oCurl = curl_init();
      //模拟浏览器
      $header[] = "deo.com";
      $user_agent = "Mozilla/4.0 (Linux; Andro 6.0; Nexus 5 Build) AppleWeb/537.36 (KHTML, like Gecko)";
      curl_setopt($oCurl, CURLOPT_URL, $url);
      curl_setopt($oCurl, CURLOPT_HTTPHEADER,$header);
      curl_setopt($oCurl, CURLOPT_HEADER, true);
      curl_setopt($oCurl, CURLOPT_NOBODY, true);
      curl_setopt($oCurl, CURLOPT_USERAGENT,$user_agent);
      curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
      // 不用 POST 方式请求, 意思就是通过 GET 请求
      curl_setopt($oCurl, CURLOPT_POST, false);
      $sContent = curl_exec($oCurl);
      // 获得响应结果里的:头大小
      $headerSize = curl_getinfo($oCurl, CURLINFO_HEADER_SIZE);
      // 根据头大小去获取头信息内容
      $header = substr($sContent, 0, $headerSize);
      curl_close($oCurl);
      return $header;
    }
    

      

  • 相关阅读:
    还敢说你是程序员?一律师闲着没事写了个app,用户量600万
    cnentos中进行bond网卡配置,一切配置无问题,就是ping不通宿主机
    他曾被腾讯、百度、金山、遨游等联合封杀,如今他发展的却更好
    百度命不久矣?他为什么这么说?
    html实现下拉框、switch开关、复选框效果
    javascript拖拽滑动条
    行内元素默认间距的4种解决办法
    Html5 video用法详解
    npm装包时-S和-D的区别
    css3实现背景模糊的三种方式
  • 原文地址:https://www.cnblogs.com/68xi/p/13453829.html
Copyright © 2011-2022 走看看