用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常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
详解js异步文件加载器
Jan 24 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
如何使用PHP给图片加水印
Oct 12 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
php读取本地json文件的实例
Mar 07 PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 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
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
PHP Document 代码注释规范
2009/04/13 PHP
提高php编程效率技巧
2015/08/13 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
玩转python爬虫之正则表达式
2016/02/17 Python
python求最大连续子数组的和
2018/07/07 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
如何在Django项目中引入静态文件
2019/07/26 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
python小白学习包管理器pip安装
2020/06/09 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
MySQL面试题
2014/01/12 面试题
构造方法和其他方法的区别
2016/04/26 面试题
浙大毕业生自荐信
2014/01/26 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
房地产项目建议书
2014/03/12 职场文书
文案策划求职信
2014/04/14 职场文书
信息管理专业自荐书
2014/06/05 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书