php flv视频时间获取函数


Posted in PHP onJune 29, 2010
<?php 
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 getTime($name){ 

if(!file_exists($name)){ 

return; 

} 

$flv_data_length=filesize($name); 

$fp = @fopen($name, 'rb'); 

$flv_header = fread($fp, 5); 

fseek($fp, 5, SEEK_SET); 

$frame_size_data_length =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 = BigEndian2Int(substr($this_tag_header, 5, 3)); 

$timestamp = 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; 

} 

function fn($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; 

} 

echo getTime("27729.flv");//显示数字时间如236722 

echo fn(236722); //显示时间格式0:03:56 

?>
PHP 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php cookie的操作实现代码(登录)
Dec 29 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
PHP实现货币换算的方法
Nov 29 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
PHP常用代码大全(新手入门必备)
Jun 29 #PHP
PHP print类函数使用总结
Jun 25 #PHP
php url地址栏传中文乱码解决方法集合
Jun 25 #PHP
PHP+ACCESS 文章管理程序代码
Jun 21 #PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 #PHP
php自动加载的两种实现方法
Jun 21 #PHP
PHP定时自动生成静态HTML的实现代码
Jun 20 #PHP
You might like
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
js实现随机抽奖
2020/03/19 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
Python 中 Meta Classes详解
2016/02/13 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
中青班党性分析材料
2014/02/16 职场文书
个人合作协议书范本
2014/04/18 职场文书
生活部的活动方案
2014/08/19 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
2015年党小组工作总结
2015/05/26 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis