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;
    }
    

      

  • 相关阅读:
    Asp.NET 4.0 ajax实例DataView 模板编程1
    ASP.NET 4.0 Ajax 实例DataView模板编程 DEMO 下载
    部分东北话、北京话
    .NET 培训课程解析(一)
    ASP.NET 4.0 Ajax 实例DataView模板编程2
    ASP.NET Web Game 架构设计1服务器基本结构
    ASP.NET Web Game 构架设计2数据库设计
    TFS2008 基本安装
    Linux上Oracle 11g安装步骤图解
    plsql developer远程连接oracle数据库
  • 原文地址:https://www.cnblogs.com/68xi/p/13453829.html
Copyright © 2011-2022 走看看