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 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
PHP的基本常识小结
Jul 05 PHP
PHP图片上传代码
Nov 04 PHP
让PHP显示Facebook的粉丝数量方法
Jan 08 PHP
php检查页面是否被百度收录
Oct 28 PHP
ThinkPHP静态缓存简单配置和使用方法详解
Mar 23 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
php版微信自定义回复功能示例
Dec 05 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
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
php自定义函数之递归删除文件及目录
2010/08/08 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
短信提示使用 特效
2007/01/19 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
深入理解vue Render函数
2017/07/19 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
js尾调用优化的实现
2019/05/23 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
python修改操作系统时间的方法
2015/05/18 Python
详解Django中的过滤器
2015/07/16 Python
Python 12306抢火车票脚本
2018/02/07 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Python eval函数介绍及用法
2020/11/09 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
计算机大学生的自我评价
2013/10/15 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
上班旷工检讨书
2015/08/15 职场文书
Python 制作自动化翻译工具
2021/04/25 Python