用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常用开发函数解析之数组篇[未完结]
Jul 30 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
php图像处理类实例
Jul 28 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 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/12/30 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP简单遍历对象示例
2016/09/28 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
在Python中定义一个常量的方法
2018/11/10 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
直接有效的自我评价
2014/01/11 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
Python requests用法和django后台处理详解
2022/03/19 Python