PHP实现获取FLV文件的时间

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”)即可。

(0)

相关推荐

  • PHP获取youku视频真实flv文件地址的方法

    本文实例讲述了PHP获取youku视频真实flv文件地址的方法.分享给大家供大家参考.具体分析如下: 有一站长要我帮助它做一个可以自动测试出youku视频网站的flv真实地址,下面我整理了一下午解决了此问题非常的不错,大家可参考一下. 这个是借力打力,只是抓去朋友网的内容,不过相当好用,代码如下: 复制代码 代码如下: <?php $videourl='http://v.youku.com/v_show/id_XMjA5MjQ0OTQ0.html'; function get_content($

  • php中获得视频时间总长度的另一种方法

    当时获得视频长度是采用网上的通用的获得flv视频文件长度的方法,但是这个方法只对flv视频支持,其他格式的视频获取到的值就很差了, 下面在介绍一种:利用ffmpeg返回值Duration的方法,原来也想过用,但是没有解决,现在可以了,由于ffmpeg支持很多种格式的视频,所以这个具体一定的通用性. ffmpeg获得视频时间长度的Duration的linux命令: ffmpeg -i test.flv 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed

  • 用php将任何格式视频转为flv的代码

    复制代码 代码如下: <? define("ROOT_DIR",dirname(__FILE__)); class EcodeFlv { var $fromFile; //上传来的文件 var $toFilePath; //保存文件路径 var $toPicPath; //保存图片路径 var $mpeg; //ffmpeg.exe文件的路径 var $mencode; //mencode.exe文件的路径 var $cmdToFile; //转换文件命令 var $cmdToP

  • php flv视频时间获取函数

    复制代码 代码如下: <?php function BigEndian2Int($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

  • 用PHP读取flv文件的播放时间长度

    复制代码 代码如下: <?php // +----------------------------------------------------------------------+ // | PHP version 4&5 | // +----------------------------------------------------------------------+ // | Copyright (c) 2007 JackieWangjackieit@hotmail.com |

  • 利用php获得flv视频长度的实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: function BigEndian2Int($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

  • PHP实现获取FLV文件的时间

    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_wo

  • PHP从FLV文件获取视频预览图的方法

    本文实例讲述了PHP从FLV文件获取视频预览图的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php // references http://www.longtailvideo.com/support/forum/Modules/12661/External-PHP-with-FFmpeg-using-readfile- // generate a preview image from an FLV file on-the-fly, or to save // ca

  • Python获取指定文件夹下的文件名的方法

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, topdown=Ture, onerror=None, followlinks=False) 该函数可以得到一个三元tupple(dirpath, dirnames, filenames). 参数含义: dirpath:string,代表目录的路径: dirnames:list,包含了当前dirpat

  • python3获取当前文件的上一级目录实例

    因为使用python+selenium有时候需要获取当前文件的上一级目录,找了一段时间找到了,在此记录下来: os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 这个是获取当前文件的上一级目录 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  这个是把路径添加到系统的环境变量 os.path.abspath(os.path.

  • Python3 获取文件属性的方式(时间、大小等)

    os.stat(path) : 用于在给定的路径上执行一个系统 stat 的调用. path: 指定路径 返回值: st_mode: inode 保护模式 -File mode: file type and file mode bits (permissions). st_ino: inode 节点号. -Platform dependent, but if non-zero, uniquely identifies the file for a given value of st_dev. -

  • PHP获取系统毫秒数时间方法

    目录 前言 一.获取当前时间戳 二.获取当前时间 三.获取当前毫秒数 前言 php中获取时间方法是date(),在php中获取时间戳方法有time().strtotime(): date() :date(format, timestamp),format为格式.timestamp为时间戳(可选).time():返回当前时间的 Unix 时间戳,没有参数.strtotime(time, now) :将英文文本格式的时间字符串解析为 Unix 时间戳.time 为必填,规定要解析的时间字符串:now

  • python os.stat()如何获取相关文件的系统状态信息

    目录 python os.stat()获取相关文件的系统状态信息 下面直接以一个具体示例来进行简要说明 python os模块的常用操作 python os.stat()获取相关文件的系统状态信息 stat 系统调用时用来返回相关文件的系统状态信息的. 下面直接以一个具体示例来进行简要说明 os.stat() 形参接收一个包含路径的文件名,其返回值有10个 列表如下: 返回属性 解释 st_mode inode 保护模式 st_ino inode 节点号 st_dev inode 驻留的设备 s

  • PHP 获取远程文件内容的函数代码

    如下函数: 复制代码 代码如下: <? /** 获取远程文件内容 @param $url 文件http地址 */ function fopen_url($url) { if (function_exists('file_get_contents')) { $file_content = @file_get_contents($url); } elseif (ini_get('allow_url_fopen') && ($file = @fopen($url, 'rb'))){ $i

  • 获取当前系统本地时间,精确到毫秒的实例

    实例如下: #include <sys/timeb.h> #include <chrono> char* cur_time_c(char strDateTime[32]) { struct timeb tp_cur; ftime(&tp_cur); struct tm btm; #ifdef WIN32 localtime_s(&btm, &tp_cur.time); #else localtime_r(&tp_cur.time, &btm)

  • Java获取当地的日出日落时间代码分享

    根据经纬度和当前日期获取当地的日出日落时间,强大的Google搜索让我迅速找到了一个外国人写的一个java类,代码中的注释写得很清楚.这里直接贴出代码来: 复制代码 代码如下: /********************************************************************************       SunriseSunset.java*******************************************************

随机推荐