用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 输出简单动态WAP页面
Jun 09 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 PHP
PHP设计模式之调解者模式的深入解析
Jun 13 PHP
关于svn冲突的解决方法
Jun 21 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
php 过滤英文标点符号及过滤中文标点符号代码
Jun 12 PHP
php实现utf-8转unicode函数分享
Jan 06 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 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
再次研究下cache_lite
2007/02/14 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
php二维码生成以及下载实现
2017/09/28 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
基于jquery的多功能软键盘插件
2012/07/25 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
Python下的subprocess模块的入门指引
2015/04/16 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
python如何支持并发方法详解
2020/07/25 Python
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
财务出纳岗位职责
2014/02/03 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2014年应急工作总结
2014/12/11 职场文书
孔庙导游词
2015/02/04 职场文书