PHP 获取视频时长的实例代码

具体代码如下所示:

/*
* 获得视频文件的缩略图和视频长度
* @date 2018-05-16
* @copyright
*/
//获得视频文件的总长度时间和创建时间 根据视频长度判断是否失效
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\r\n";
  $request .= 'Host: ' . $url_parts['host'] . "\r\n";
  $request .= "Connection: Close\r\n\r\n";
  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;
}

总结

以上所述是小编给大家介绍的PHP 获取视频时长的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • PHP多维数组指定多字段排序的示例代码

    介绍array_multisort方法 array_multisort - 对多个数组或多维数组进行排序.其php 手册中的说明如下: 复制代码 代码如下: bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $... ]]] ) 参数 arr 要排序的一个 array. arg 接下来的每个参数可以是另一个 array 或者是为之前 array 排序标

  • PHP 计算两个特别大的整数实例代码

    废话不多说了,具体代码如下所示: function getIntAdd($a,$b){ $c = ''; $bCount = strlen($b); $aCount = strlen($a); $count = max($bCount,$aCount); $aDiff = $count - $aCount; $bDiff = $count - $bCount; for($i = $count - 1;$i >= 0;$i--){ $aVal = $count - $i <= $aCount ?

  • PHP生成(支持多模板)二维码海报代码

    增加模板: 1.qrcode.*** 开头的 文件夹,比如:qrcode.demoABC 2.在第一步创建的文件夹中配置文件config.php,以上面的例子为:qrcode.demoABC/config.php <?php return array( //二维码部分 'level' => "L", //二维码校正级别,可选:L.M.Q.H 'matrix' => 6, //矩阵的大小, 1-10 'type' => 'png', //二维码 输出类型 /**

  • php无限级评论嵌套实现代码

    我在设计BB的过程中,也一直在思考是否可以不通过递归来实现无限级分类的结构展现和父子结构查找,因为如果不对这里的算法进行优化后果可能是致命的!试想一下,一篇文章如果评论数为300,按正常的递归算法,至少就得查询数据库301次,而且还是在没有任何嵌套的情况下,如果有过一两级嵌套或者评论数过1000,那数据库不是直接宕掉? 而实际上,PHP强大的数组处理能力已经能帮助我们快速方便的解决这个问题.下图为一个无限级分类的 数据库结构: IDparentID newsID commts 108文章ID为8

  • PHP实现Huffman编码/解码的示例代码

    Huffman 编码是一种数据压缩算法.我们常用的 zip 压缩,其核心就是 Huffman 编码,还有在 HTTP/2 中,Huffman 编码被用于 HTTP 头部的压缩. 本文就来用 PHP 来实践一下 Huffman 编码和解码. 1. 编码 字数统计 Huffman编码的第一步就是要统计文档中每个字符出现的次数,PHP的内置函数 count_chars() 就可以做到: $input = file_get_contents('input.txt'); $stat = count_cha

  • Php多进程实现代码

    php多进程实现 PHP有一组进程控制函数(编译时需要–enable-pcntl与posix扩展),使得php能在nginx系统中实现跟c一样的创建子进程.使用exec函数执行程序.处理信号等功能. CentOS 6 下yum安装php的,默认是不安装pcntl的,因此需要单独编译安装,首先下载对应版本的php,解压后 cd php-version/ext/pcntl phpize ./configure && make && make install cp /usr/li

  • 如何避免PHP实例代码中的一些坏代码

    做PHP开发已经有快一年的时间了,在这一年的时间中,学习了很多生产环境中的技巧,学习了很多东西,期间也阅读了一些优秀的源码和关于代码的书,对写代码这一块有了一定的思考,也看过很多别人写的好的代码和坏的代码,这里说说自己的感悟和改进吧. 本篇博客直说自己的感悟,在写代码时,我给自己立下的规则,这样可以让代码清晰可读并少走一些坑.这些简单的规则虽然没有设计模式看起来那么激动人心,但是,平常注意可以让代码看起来很清爽. 1. 不要在对象外使用未声明的变量 这个问题其实表述起来可能不容易理解.这个问题是

  • PHP实现数据库的增删查改功能及完整代码

    本文用到:jquery.tp框架 TP_3.2.2/Application/Home/Controller/StuController.class.php <?php /** * Created by PhpStorm. * User: root * Date: 2018/4/17 * Time: 16:32 */ namespace Home\Controller; use Think\Controller; class StuController extends Controller { p

  • PHP 获取视频时长的实例代码

    具体代码如下所示: /* * 获得视频文件的缩略图和视频长度 * @date 2018-05-16 * @copyright */ //获得视频文件的总长度时间和创建时间 根据视频长度判断是否失效 public function getTime($url) { //获取视频重定向后的链接 $location = locationUrl($url); //获取视频Content-Length $responseHead = get_data($location); $list1 = explode

  • vue 获取视频时长的实例代码

    直接通过element-ui自带的上传组件结合js即可,代码如下: HTML: <el-upload class="upload-demo" :action="actionUrl" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"> <button cl

  • Python实现获取视频时长功能

    目录 前言 环境依赖 代码 验证一下 补充 前言 本文提供获取视频时长的python代码,精确到毫秒,一如既往的实用主义. 环境依赖  ffmpeg环境安装,可以参考:windows ffmpeg安装部署 本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中. 代码 不废话,上代码. #!/user/bin/env python # coding=utf-8 """ @project : csdn @author : 剑客阿良_ALiang @f

  • Java获取视频时长及截取帧截图详解

    前言 只是最近碰到有这方面的项目需求,所以简单 Mark 下本文.下面的示例是参考过他人分享的文章,之后本人再自行实践.调整和测试过的,希望对有这方面需求的人有所帮助. 示例 添加依赖 <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.4.4</version> </depe

  • Java获取视频时长、大小的示例

    项目中有这样一个需求,网页上上传了一个视频,需要获取此视频的时长.大小,把这两个数据返回给前台在页面显示.后台使用的是springboot框架,项目部署在linux上面.下面是核心代码:     1.pom文件中需要导入的jar包依赖 (分为两部分:核心包.ffmpeg包两部分,ffmpeg包又分为Windows环境以及Linux环境,同时又区分32位系统以及64位系统.针对于不同的运行环境要导入不同的包,这一点对于开发.测试环境为Window而生产环境为Linux的情况,尤其要注意需要导入所有

  • Java通过调用FFMPEG获取视频时长

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的. 由此看来FFmpeg很强大,很多主流的音频.视频处理软件都使用了FFmpeg. FFmpeg下载下来解压,cmd进入到FFmpeg.exe目录中,即可在命令行下进行各种操作,查看视频信息命令:f

  • js获取视频时长代码

    网上找的,因为最近要用,但还没试过  复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">      <html xmlns="http://www.w3.org/1999/xhtml">      <hea

  • Python爬取视频时长场景实践示例

    目录 简介: 获取视频时长的方式 安装 获取视频时长的3种方式对比 简介: 在视频相关测试场景下,例如:有时需要知道全部视频的汇总时长,显然一个个打开并且手工计算耗时耗力,我们可以通过编写脚本进行快速汇总. 获取视频时长的方式 1.通过subprocess进行获取. 2.通过moviepy库中VideoFileClip获取. 3.通过cv2库获取. 安装 1.subprocess:无需安装,Python内置. 2.moviepy:pip install moviepy. 3.cv2:pip in

  • Java编程实现获取mp3时长及播放mp3文件的方法

    本文实例讲述了Java编程实现获取mp3时长及播放mp3文件的方法.分享给大家供大家参考,具体如下: 所需包为jaudiotagger-2.2.6-SNAPSHOT.jar 和jl1.0.1.jar . import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import org.jaudiotagger.audio.AudioFileIO; import org.jaudi

  • vue+node 实现视频在线播放的实例代码

    1.node服务端 数据流传输,可在线缓存 //获取参数 var params=urldeal.parse(req.url,true).query const ROOT_PATH = process.cwd();//必须使用绝对路径,使用相对路径会直接下载文件 let path =ROOT_PATH+params.url; let stat = fs.statSync(path); //获取文件信息 let fileSize = stat.size; let range = req.header

随机推荐