用PHP读取flv文件的播放时间长度


Posted in PHP onSeptember 03, 2009
<?php 
// +----------------------------------------------------------------------+ 
// | PHP version 4&5 | 
// +----------------------------------------------------------------------+ 
// | Copyright (c) 2007 JackieWangjackieit@hotmail.com | 
// +----------------------------------------------------------------------+ 
// | This source file's function is to get the time length of flv | 
// | main function getTime param:$name The flv file you want to get | 
// +----------------------------------------------------------------------+ 
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; 
} 
?>
PHP 相关文章推荐
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
基于initPHP的框架介绍
Apr 18 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
php检查页面是否被百度收录
Oct 28 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
PHP crc32()函数讲解
Feb 14 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 PHP
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
Apr 11 PHP
用php将任何格式视频转为flv的代码
Sep 03 #PHP
ajax php 实现写入数据库
Sep 02 #PHP
php 正则表达式小结
Aug 31 #PHP
自动把纯文本转换成Web页面的php代码
Aug 27 #PHP
PHP高级OOP技术演示
Aug 27 #PHP
php 获取可变函数参数的函数
Aug 26 #PHP
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 #PHP
You might like
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
input的focus方法使用
2010/03/13 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
树莓派升级python的具体步骤
2020/07/05 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
编写strcpy函数
2014/06/24 面试题
数控个人求职信范文
2014/02/03 职场文书
趣味比赛活动方案
2014/02/15 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
档案管理员岗位职责
2015/02/12 职场文书
初中军训感想
2015/08/07 职场文书
学习经验交流会总结
2015/11/02 职场文书