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
php foreach、while性能比较
Oct 15 PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 PHP
zend framework多模块多布局配置
Feb 26 PHP
浅析PHP原理之变量(Variables inside PHP)
Aug 09 PHP
CI框架安全类Security.php源码分析
Nov 04 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
利用PHP将图片转换成base64编码的实现方法
Sep 13 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 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
linux php mysql数据库备份实现代码
2009/03/10 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
Python三元运算实现方法
2015/01/12 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
pandas通过loc生成新的列方法
2018/11/28 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
法学专业个人求职信
2013/09/26 职场文书
工商企业管理应届生求职信
2013/11/03 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
综合测评自我评价
2015/03/06 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
让生命充满爱观后感
2015/06/08 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
netty 实现tomcat的示例代码
2022/06/05 Servers