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 和 COM
Oct 09 PHP
一些常用的php函数
Dec 06 PHP
Snoopy类使用小例子
Apr 15 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
php session劫持和防范的方法
Nov 12 PHP
javascript some()函数用法详解
Nov 13 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
使用ThinkPHP生成缩略图及显示
Apr 27 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 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
Phpbean路由转发的php代码
2008/01/10 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
js jquery数组介绍
2012/07/15 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
什么是Web Service?
2012/07/25 面试题
单位在职证明范本
2014/01/09 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
超市促销活动方案
2014/03/05 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
2015年司法局工作总结
2015/05/22 职场文书
画展观后感
2015/06/17 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle