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 相关文章推荐
在线增减.htpasswd内的用户
Oct 09 PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 PHP
基于php设计模式中工厂模式详细介绍
May 15 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
关于php中一些字符串总结
May 05 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
YII框架页面缓存操作示例
Apr 29 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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
ADODB的数据库封包程序库
2006/12/31 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
Javascript的构造函数和constructor属性
2010/01/09 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
Python运用于数据分析的简单教程
2015/03/27 Python
极简的Python入门指引
2015/04/01 Python
python 远程统计文件代码分享
2015/05/14 Python
python 队列详解及实例代码
2016/10/18 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python callable内置函数原理解析
2020/03/05 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
小学生自我评价范例
2013/09/24 职场文书
公务员年总结的自我评价
2013/10/25 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
故意杀人案辩护词
2015/05/21 职场文书
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技