当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现获取FLV文件的时间

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-11 10:30:17 浏览: 评论:0 

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

PHP如何获取FLV文件时间呢,答案是fopen文件后查看FLV文件是HEX数据,并转换为number,代码如下:

  1. <?php 
  2. functionBigEndian2Int($byte_word,$signed=false) 
  3.     $int_value    =0; 
  4.     $byte_wordlen=strlen($byte_word); 
  5.     for($i=0;$i<$byte_wordlen;$i++){ 
  6.         $int_value+=ord($byte_word{$i})*pow(256,($byte_wordlen-1-$i)); 
  7.     } 
  8.     if($signed){ 
  9.         $sign_mask_bit=0x80<<(8*($byte_wordlen-1)); 
  10.         if($int_value&$sign_mask_bit){ 
  11.             $int_value=0-($int_value&($sign_mask_bit-1)); 
  12.         } 
  13.     } 
  14.     return$int_value
  15.  
  16. functiongetTime($name
  17.     if(!file_exists($name)){ 
  18.         return
  19.     } 
  20.     $flv_data_length=filesize($name); 
  21.     $fp              =@fopen($name,'rb'); 
  22.     $flv_header      =fread($fp,5); 
  23.     fseek($fp,5,SEEK_SET); 
  24.     $frame_size_data_length  =BigEndian2Int(fread($fp,4)); 
  25.     $flv_header_frame_length=9; 
  26.     if($frame_size_data_length>$flv_header_frame_length){ 
  27.         fseek($fp,$frame_size_data_length-$flv_header_frame_length,SEEK_CUR); 
  28.     } 
  29.     $duration=0; 
  30.     while((ftell($fp)+1)<$flv_data_length){ 
  31.         $this_tag_header=fread($fp,16); 
  32.         $data_length     =BigEndian2Int(substr($this_tag_header,5,3)); 
  33.         $timestamp       =BigEndian2Int(substr($this_tag_header,8,3)); 
  34.         $next_offset     =ftell($fp)-1+$data_length
  35.         if($timestamp>$duration){ 
  36.             $duration=$timestamp
  37.         } 
  38.         fseek($fp,$next_offset,SEEK_SET); 
  39.     } 
  40.     fclose($fp); 
  41.     return$duration
  42.  
  43. functionget_flv_file_time($time
  44. $time=getTime($time); 
  45.     $num=$time
  46.     $sec=intval($num/1000); 
  47.     $h   =intval($sec/3600); 
  48.     $m   =intval(($sec%3600)/60); 
  49.     $s   =intval(($sec%60)); 
  50.     $tm  =$h.':'.$m.':'.$s
  51.     return$tm
  52.  
  53. ?> 

直接使用get_flv_file_time(“你的FLV.flv”)即可。

Tags: PHP获取FLV文件时间

分享到: