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 相关文章推荐
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
php 动态执行带有参数的类方法
Apr 10 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
3种php生成唯一id的方法
Nov 23 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
php 数组随机取值的简单实例
May 23 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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
解析php5配置使用pdo
2013/07/03 PHP
PHP小教程之实现链表
2014/06/09 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
JS面向对象编程详解
2016/03/06 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
JS实现留言板功能
2017/06/17 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
前端深入理解Typescript泛型概念
2020/03/09 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
django 连接数据库 sqlite的例子
2019/08/14 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
安全检查验收制度
2014/01/12 职场文书
奶茶店创业计划书范文
2014/01/17 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
火锅店的活动方案
2014/08/15 职场文书
欢迎新生标语2015
2015/07/16 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python