用PHP读取flv文件的播放时间长度
作者:bea
代码如下: <?php // +----------------------------------------------------------------------+ // | PHP version 4&5 | // +----------------------------------------------------------------------+ // | Copyright (c) 2007 JackieWangjackie
代码如下:
<?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 日常开发小技巧
- php程序之die调试法 快速解决错误
- 火车采集器 免费版使出收费版本功能实现原理
- 使用php来实现网络服务
- Discuz 6.0+ 批量注册用户名
- PHP 分页类(模仿google)-面试题目解答
- frename PHP 灵活文件命名函数 frename
- PHPLog php 程序调试追踪工具
- php 从数据库提取二进制图片的处理代码
- PHP 数组遍历顺序理解
- PHP 裁剪图片成固定大小代码方法
- PHP 获取MSN好友列表的代码(2009-05-14测试通过)
- PHP 危险函数全解析
- php 获取远程网页内容的函数
- php 遍历数据表数据并列表横向排列的代码
- 不要轻信 PHP_SELF的安全问题
- php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
- php getsiteurl()函数
- PHP 内存缓存加速功能memcached安装与用法