时间:2021-05-26
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”)即可。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了PHP从FLV文件获取视频预览图的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:希望本文所述对大家的php程序设计有所帮助。
文章摘要本文简单说明了FLV文件的格式,以此为出发点,使用Python实现FLV视频的拼接。一.FLV文件格式关于FLV文件格式的解析网上有诸多文章,在这里就简
本文实例讲述了PHP实现获取毫秒时间戳的方法。分享给大家供大家参考,具体如下:PHP获取毫秒时间戳,利用microtime()函数php本身没有提供返回毫秒数的
php获取文件创建时间、修改时间常用代码?123456789101112filemtime(stringfilename)返回文件上次被修改的时间,出错时返回F
flash文件的格式:.FLV和.SWFflash视频格式有两种扩展名可以使用:.flv和.swf。他们有什么不同呢?(1)一个.flv文件(flash视频)是