利用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
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
discuz安全提问算法
Jun 06 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
Jun 18 PHP
php导出excel格式数据问题
Mar 11 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
浅析PHP开发规范
Feb 05 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
php 中文和编码判断代码
2010/05/16 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
JS画线(实例代码)
2013/11/20 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
Javascript操作select控件代码实例
2020/02/14 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python 的 Socket 编程
2015/03/24 Python
Python中有趣在__call__函数
2015/06/21 Python
python开发之thread线程基础实例入门
2015/11/11 Python
django文档学习之applications使用详解
2018/01/29 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
python标准库os库的函数介绍
2020/02/12 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
Noon埃及:埃及在线购物
2019/11/26 全球购物
商务英语专业求职信范文
2014/01/28 职场文书
小学生环保演讲稿
2014/04/25 职场文书
专题组织生活会方案
2014/06/15 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
处罚决定书范文
2015/06/24 职场文书