用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的explode和implode的使用说明
Jul 17 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
PHP 解决session死锁的方法
Jun 20 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
PHP文件缓存类示例分享
Jan 30 PHP
codeigniter发送邮件并打印调试信息的方法
Mar 21 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
10款实用的PHP开源工具
Oct 23 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
Apr 21 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 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下将XML转换为数组
2010/01/01 PHP
组合算法的PHP解答方法
2012/02/04 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
js实现简单计算器
2015/11/22 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
在Python中定义和使用抽象类的方法
2016/06/30 Python
python图像常规操作
2017/11/11 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
C#面试题
2016/05/06 面试题
extern是什么意思
2016/03/10 面试题
办公文员的工作岗位职责
2013/11/12 职场文书
建筑施工员岗位职责
2013/11/26 职场文书
现金会计岗位职责
2013/12/05 职场文书
人事档案接收函
2014/01/12 职场文书
经典商业广告词
2014/03/13 职场文书
学习经验演讲稿
2014/05/10 职场文书
python析构函数用法及注意事项
2021/06/22 Python
把77A收信机改造成收音机
2022/04/05 无线电