利用php获得flv视频长度的实例代码


Posted in PHP onOctober 26, 2017

废话不多说了,直接给大家贴代码了,具体代码如下所示:

function BigEndian2Int($byte_word, $signed = false) { 
  $int_value = 0; 
  $byte_wordlen = strlen($byte_word); 
  for ($i = 0; $i < $byte_wordlen; $i++) { 
    $int_value += ord($byte_word{$i}) * pow(256, ($byte_wordlen - 1 - $i)); 
  } 
  if ($signed) { 
    $sign_mask_bit = 0x80 << (8 * ($byte_wordlen - 1)); 
    if ($int_value & $sign_mask_bit) { 
      $int_value = 0 - ($int_value & ($sign_mask_bit - 1)); 
    } 
  } 
  return $int_value; 
} 
//获得视频的数字时间 
function getFlvDuration($name){ 
  if(!file_exists($name)){ 
    return; 
  } 
  $flv_data_length=filesize($name); 
  $fp = @fopen($name, 'r'); 
  $flv_header = fread($fp, 5); 
  fseek($fp, 5, SEEK_SET); 
  $frame_size_data_length = $this->BigEndian2Int(fread($fp, 4)); 
  $flv_header_frame_length = 9; 
  if ($frame_size_data_length > $flv_header_frame_length) { 
    fseek($fp, $frame_size_data_length - $flv_header_frame_length, SEEK_CUR); 
  } 
  $duration = 0; 
  while ((ftell($fp) + 1) < $flv_data_length) { 
     $this_tag_header   = fread($fp, 16); 
     $data_length     = $this->BigEndian2Int(substr($this_tag_header, 5, 3)); 
     $timestamp      = $this->BigEndian2Int(substr($this_tag_header, 8, 3)); 
     $next_offset     = ftell($fp) - 1 + $data_length; 
     if ($timestamp > $duration) { 
     $duration = $timestamp; 
     } 
     fseek($fp, $next_offset, SEEK_SET); 
  } 
  fclose($fp); 
  return $duration; 
} 
//转化为0:03:56的时间格式 
function getFlvTime($time){ 
  $num = $time; 
  $sec = intval($num/1000); 
  $h = intval($sec/3600); 
  $m = intval(($sec%3600)/60); 
  $s = intval(($sec%60)); 
  $tm = $h.':'.$m.':'.$s; 
  return $tm; 
}

总结

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

PHP 相关文章推荐
杏林同学录(五)
Oct 09 PHP
使用 MySQL Date/Time 类型
Mar 26 PHP
基于PHP读取csv文件内容的详解
Jun 18 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
PHP isset()及empty()用法区别详解
Aug 29 PHP
如何理解PHP核心特性命名空间
May 28 PHP
PHP 中魔术常量的实例详解
Oct 26 #PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 #PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 #PHP
PHP中的浅复制与深复制的实例详解
Oct 26 #PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 #PHP
thinkPHP5分页功能实现方法分析
Oct 25 #PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 #PHP
You might like
30个php操作redis常用方法代码例子
2014/07/05 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
python人人网登录应用实例
2014/09/26 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
python3.x实现发送邮件功能
2018/05/22 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
在python里从协程返回一个值的示例
2019/02/19 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
python实现梯度法 python最速下降法
2020/03/24 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
数控技术专科生自我评价
2014/01/08 职场文书
集体婚礼策划方案
2014/02/22 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
设计大赛策划方案
2014/06/13 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL