利用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中cookie的作用域
Mar 27 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
Jun 09 PHP
通达OA公共代码 php常用检测函数
Dec 14 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
PHP符合PSR编程规范的实例分享
Dec 21 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 PHP
PHP7匿名类的用法示例
Apr 05 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
Sql面试题
2013/03/20 面试题
马云的职业生涯规划之路
2014/01/01 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
python_tkinter事件类型详情
2022/03/20 Python
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技