利用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 相关文章推荐
php中实现记住密码自动登录的代码
Mar 02 PHP
php URL跳转代码 减少外链
Jun 25 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
微信支付开发告警通知实例
Jul 12 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 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
smarty模板数学运算示例
2016/12/11 PHP
Javascript----文件操作
2007/01/18 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
jquery实现拖动效果
2016/08/10 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
ES6的异步终极解决方案分享
2019/07/11 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
Python中字典的基本知识初步介绍
2015/05/21 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
python接入支付宝的实例操作
2020/07/20 Python
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
计算机毕业大学生推荐信
2013/12/01 职场文书
军训学生自我鉴定
2014/02/12 职场文书
中式结婚主持词
2014/03/14 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
SQL SERVER存储过程用法详解
2022/02/24 SQL Server
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA
python标准库ElementTree处理xml
2022/05/20 Python