用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 相关文章推荐
php5 mysql分页实例代码
Apr 10 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
php+xml结合Ajax实现点赞功能完整实例
Jan 30 PHP
Laravel5中contracts详解
Mar 02 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
PHP 实现重载
Mar 09 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
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
Javascript实现的分页函数
2006/12/22 Javascript
javascript编程起步(第四课)
2007/01/10 Javascript
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
IE 当eval遇上function的处理
2011/08/09 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
Python聊天室实例程序分享
2016/01/05 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
python有几个版本
2020/06/17 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
三方合作协议书范本
2014/04/18 职场文书
优质服务活动实施方案
2014/05/02 职场文书
微笑服务标语
2014/06/24 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
2015年公司工作总结
2015/04/25 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS
Java Redisson多策略注解限流
2022/09/23 Java/Android