PHP实现获取FLV文件的时间


Posted in PHP onFebruary 10, 2015

PHP如何获取FLV文件时间呢,答案是fopen文件后查看FLV文件是HEX数据,并转换为number。

<?php

functionBigEndian2Int($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;

}

 

functiongetTime($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;

}

 

functionget_flv_file_time($time)

{

$time=getTime($time);

    $num=$time;

    $sec=intval($num/1000);

    $h   =intval($sec/3600);

    $m   =intval(($sec%3600)/60);

    $s   =intval(($sec%60));

    $tm  =$h.':'.$m.':'.$s;

    return$tm;

}

 

?>

直接使用get_flv_file_time(“你的FLV.flv”)即可。

PHP 相关文章推荐
PHP邮件专题
Oct 09 PHP
IP138 IP地址查询小偷实现代码
Feb 15 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
PHP中redis的用法深入解析
Feb 20 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
PHP反射学习入门示例
Jun 14 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
php实现的数组转xml案例分析
Sep 28 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 #PHP
PHP实现的简单mock json脚本分享
Feb 10 #PHP
PHP实现的带超时功能get_headers函数
Feb 10 #PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 #PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 #PHP
PHP框架Laravel的小技巧两则
Feb 10 #PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
Feb 10 #PHP
You might like
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
JS之相等操作符详解
2016/09/13 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
深入解析Python中的lambda表达式的用法
2015/08/28 Python
详解Python字符串对象的实现
2015/12/24 Python
python制作mysql数据迁移脚本
2019/01/01 Python
举例讲解Python常用模块
2019/03/08 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
python程序文件扩展名知识点详解
2020/02/27 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
如何让Java程序执行效率更高
2014/06/25 面试题
武汉某公司的C#笔试题面试题
2015/12/25 面试题
医科大学毕业生自荐信
2014/02/03 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
《木笛》教学反思
2014/03/01 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
网聊搭讪开场白
2015/05/28 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android