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 数组二分法查找函数代码
Feb 16 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
神盾加密解密教程(三)PHP 神盾解密工具
Jun 08 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
Joomla数据库操作之JFactory::getDBO用法
May 05 PHP
PHP单态模式简单用法示例
Nov 16 PHP
CakePHP框架Model关联对象用法分析
Aug 04 PHP
php变量与字符串的增删改查操作示例
May 07 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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之第八天
2006/10/09 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
jquery validate poshytip 自定义样式
2012/11/26 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
vue实现全匹配搜索列表内容
2019/09/26 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
跟老齐学Python之开始真正编程
2014/09/12 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
python 线程的五个状态
2020/09/22 Python
python try...finally...的实现方法
2020/11/25 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
运动会通讯稿500字
2014/02/20 职场文书
安全保证书范文
2014/04/29 职场文书
师范生见习总结范文
2015/06/23 职场文书
关于使用Redisson订阅数问题
2022/01/18 Redis