用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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
优化PHP代码技巧的小结
Jun 02 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
CI框架中cookie的操作方法分析
Dec 12 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 PHP
PHP实现的mysql读写分离操作示例
May 22 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 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面向对象编程快速入门
2006/12/14 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
微信小程序自定义组件
2017/08/16 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
实现vuex原理的示例
2020/10/21 Javascript
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
Python实现搜索算法的实例代码
2020/01/02 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
python如何安装下载后的模块
2020/07/03 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
会计毕业生求职简历的自我评价
2013/10/20 职场文书
2014年国培研修感言
2014/03/09 职场文书
卖房协议书
2014/04/11 职场文书
调查研究项目计划书
2014/04/29 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
服务员岗位职责范本
2015/04/09 职场文书
车位出租协议书范本
2016/03/19 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书