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 什么是PEAR?(第三篇)
Mar 19 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
浅谈PHP的反射机制
Dec 15 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
PHP开发实现快递查询功能详解
Apr 08 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 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 生成随机验证码图片代码
2010/02/08 PHP
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
深入理解PHP中的global
2014/08/19 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
JS 文件大小判断的实现代码
2010/04/07 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python中装饰器的一个妙用
2015/02/08 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
详解Python核心对象类型字符串
2018/02/11 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
python线程的几种创建方式详解
2019/08/29 Python
python的json包位置及用法总结
2020/06/21 Python
酒店行政人事部经理职务说明书
2014/02/26 职场文书
网络管理员岗位职责
2014/03/17 职场文书
小学生操行评语大全
2014/04/22 职场文书
农业生产宣传标语
2014/10/08 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
2014年部门工作总结
2014/11/12 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
学习保证书100字
2015/02/26 职场文书
单方投资意向书
2015/05/11 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python