用php 读取flv文件的播放时间长度详解

怪我咯
怪我咯 原创
2023-03-13 17:22:01 1092浏览

FLV 是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式,全称为Flash Video。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。
FLV就是随着Flash MX的推出发展而来的视频格式,目前被众多新一代视频分享网站所采用,是目前增长最快、最为广泛的视频传播格式。是在sorenson 公司的压缩算法的基础上开发出来的。FLV格式不仅可以轻松的导入Flash 中,速度极快,并且能起到保护版权的作用,并且可以不通过本地的微软或者REAL播放器播放视频。
FLV 是一种全新的流媒体视频格式,它利用了网页上广泛使用的Flash Player 平台,将视频整合到Flash 动画中。也就是说,网站的访问者只要能看Flash动画,自然也能看FLV 格式视频,而无需再额外安装其它视频插件,FLV视频的使用给视频传播带来了极大便利。

本文主要介绍用PHP读取flv文件的播放时间长度的代码,需要用的朋友可以参考下。代码如下:

<?php 
// +----------------------------------------------------------------------+ 
// | PHP version 4&5 | 
// +----------------------------------------------------------------------+ 
// | Copyright (c) 2007 JackieWangjackieit@hotmail.com | 
// +----------------------------------------------------------------------+ 
// | This source file's function is to get the time length of flv | 
// | main function getTime param:$name The flv file you want to get | 
// +----------------------------------------------------------------------+ 
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) { 
$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; 
} 
function getTime($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; 
} 
?>


以上就是用php 读取flv文件的播放时间长度详解的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。