利用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的安全策略
Oct 09 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
一次因composer错误使用引发的问题与解决
Mar 06 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
Laravel创建数据库表结构的例子
Oct 09 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默认安装产生系统漏洞
2006/10/09 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
基于keras中的回调函数用法说明
2020/06/17 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
应届生求职自荐信
2014/07/04 职场文书
护士节慰问信
2015/02/15 职场文书