用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开发工具之vs2005图解
Jan 12 PHP
一些 PHP 管理系统程序中的后门
Aug 05 PHP
模板引擎正则表达式调试小技巧
Jul 20 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
php preg_replace替换实例讲解
Nov 04 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 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学习笔记 类的声明与对象实例化
2011/06/13 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
Python列表append和+的区别浅析
2015/02/02 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Unicode和Python的中文处理
2017/03/19 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
浅谈python常用程序算法
2019/03/22 Python
python如何实现数据的线性拟合
2019/07/19 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
我们的节日清明节活动方案
2014/03/05 职场文书
学校募捐倡议书
2014/05/14 职场文书
2015年度女工工作总结
2015/10/22 职场文书
听课评课活动心得体会
2016/01/15 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python