用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 相关文章推荐
input file获得文件根目录简单实现
Apr 26 PHP
php中字符串和正则表达式详解
Oct 23 PHP
PHP调用Linux命令权限不足问题解决方法
Feb 07 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
PHP时间和日期函数详解
May 08 PHP
PHP中each与list用法分析
Jan 08 PHP
php代码架构的八点注意事项
Jan 25 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
php png失真的原因及解决办法
Nov 17 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使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
JS启动应用程序的一个简单例子
2008/05/11 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
django删除表重建的实现方法
2019/08/28 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
大学生如何写自荐信
2014/01/08 职场文书
入股协议书
2014/04/14 职场文书
白莲教口号
2014/06/18 职场文书
班级文化标语
2014/06/23 职场文书
社区综治工作汇报
2014/10/27 职场文书
督导岗位职责
2015/02/04 职场文书
计划生育责任书
2015/05/09 职场文书
党员心得体会范文2016
2016/01/23 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python