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 相关文章推荐
递归列出所有文件和目录
Oct 09 PHP
PHP安装攻略:常见问题解答(三)
Oct 09 PHP
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
php将时间差转换为字符串提示
Sep 07 PHP
ThinkPHP中U方法的使用浅析
Jun 13 PHP
微信支付PHP SDK ―― 公众号支付代码详解
Sep 13 PHP
PHP使用Redis替代文件存储Session的方法
Feb 15 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
七种PHP开发环境搭建工具
Jun 28 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简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
用js重建星际争霸
2006/12/22 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
js图片预加载示例
2014/04/30 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
Python3中的bytes和str类型详解
2019/05/02 Python
python系列 文件操作的代码
2019/10/06 Python
python实现电子词典
2020/03/03 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
丧事答谢词大全
2015/09/30 职场文书