用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 for 循环语句使用方法详细说明
May 09 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
php获得用户ip地址的比较不错的方法
Feb 08 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
深入浅析php json 格式控制
Dec 24 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
实例讲解PHP中使用命名空间
Jan 27 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/10/23 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
php常用表单验证类用法实例
2015/06/18 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
Python实现查找系统盘中需要找的字符
2015/07/14 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
Django组件content-type使用方法详解
2019/07/19 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
python MD5加密的示例
2020/10/19 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
给女朋友的道歉信
2014/01/10 职场文书
教育技术职业规划范文
2014/03/04 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
创业计划书之美容店
2019/09/16 职场文书