利用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
Phpbean路由转发的php代码
Jan 10 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
php简单压缩css样式示例
Sep 22 PHP
PHP实现百度人脸识别
May 06 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
中国收音机工业发展史
2021/03/02 无线电
什么是MVC,好东西啊
2007/05/03 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
推荐一款jQuery插件模板
2015/01/09 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
python重试装饰器的简单实现方法
2019/01/31 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
python使用smtplib模块发送邮件
2020/12/17 Python
销售心得体会
2014/01/02 职场文书
群众路线教育实践活动方案
2014/02/02 职场文书
商场中秋节活动方案
2014/02/07 职场文书
一年级学生评语大全
2014/04/21 职场文书
银行求职信范文
2014/05/26 职场文书
建筑节能汇报材料
2014/08/22 职场文书
社区文明倡议书
2015/04/28 职场文书
公司员工培训管理制度
2015/08/04 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL