用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 相关文章推荐
一个简单的MySQL数据浏览器
Oct 09 PHP
通过文字传递创建的图形按钮
Oct 09 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
一些php技巧与注意事项分析
Feb 03 PHP
PHP session会话的安全性分析
Sep 08 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP调用其他文件中的类
Apr 02 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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
PHP开发中常用的8个小技巧
2008/08/27 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
PHP安全性漫谈
2012/06/28 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
浅谈js闭包理解
2019/03/28 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
python3 反射的四种基本方法解析
2019/08/26 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
结构工程个人自荐信范文
2013/11/30 职场文书
人事任命书格式
2014/06/05 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android