php语言 百分网手机站

PHP实现获取FLV文件的时间

时间:2020-08-08 15:17:51 php语言 我要投稿

PHP实现获取FLV文件的时间

  主要介绍了PHP实现获取FLV文件的`时间,本文直接给出实现代码和使用方法,需要的朋友可以参考下。

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

【PHP实现获取FLV文件的时间】相关文章:

PHP中读取大文件实现方法09-05

PHP实现大文件上传源代码08-29

PHP文件锁与进程锁的实现08-17

PHP中读取大文件实现方法详解09-23

PHP文件是什么 如何打开PHP文件08-27

PHP获取MySQL数据库里所有表的实现代码08-14

PHP获取星期的方法09-02

PHP如何获取系统信息09-06

PHP文件怎么操作09-07

php获取当前url地址的方法09-02