利用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和ACCESS写聊天室(十)
Oct 09 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
PHP使用PHPMailer发送邮件的简单使用方法
Nov 12 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
php备份数据库类分享
Apr 14 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
php微信小程序解包过程实例详解
Mar 31 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
第七节 类的静态成员 [7]
2006/10/09 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
python查看FTP是否能连接成功的方法
2015/07/30 Python
python素数筛选法浅析
2018/03/19 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
廉洁使者实施方案
2014/03/29 职场文书
旅游安全协议书
2014/04/21 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
Python 如何安装Selenium
2021/05/06 Python
基于tensorflow权重文件的解读
2021/05/26 Python
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫