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 ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
PHP 读取和修改大文件的某行内容的代码
Oct 30 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
php创建sprite
Feb 11 PHP
php中动态修改ini配置
Oct 14 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
php递归函数怎么用才有效
Feb 24 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 PHP
laravel框架邮箱认证实现方法详解
Nov 22 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
建立动态的WML站点(一)
2006/10/09 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
PHP重定向的3种方式
2013/03/07 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
jQuery为某个div加入行样式
2017/06/09 jQuery
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
python实现图片批量剪切示例
2014/03/25 Python
python正则表达式的使用
2017/06/12 Python
python3中zip()函数使用详解
2018/06/29 Python
python计算两个数的百分比方法
2018/06/29 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
2015仓库保管员年终工作总结
2015/05/13 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery