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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
php调用新浪短链接API的方法
Nov 08 PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
Jan 05 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 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实现小型站点广告管理
2006/10/09 PHP
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php四种定界符详解
2017/02/16 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
环境工程大学生自荐信
2013/10/21 职场文书
酒店保洁主管岗位职责
2013/11/28 职场文书
2014年高考决心书
2014/03/11 职场文书
同学会演讲稿
2019/04/02 职场文书
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers