用PHP读取flv文件的播放时间长度

 更新时间:2009年09月03日 00:20:52   作者:  
用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;
}
?>

相关文章

  • 解决微信授权回调页面域名只能设置一个的问题

    解决微信授权回调页面域名只能设置一个的问题

    在做项目集成微信登录以及微信支付的时候,都需要进行用户授权。本文主要介绍了关于网页授权回调域名的说明以及解决微信授权回调页面域名只能设置一个问题的方案。需要的朋友可以参考借鉴
    2016-12-12
  • PHP has encountered an Access Violation 错误的解决方法

    PHP has encountered an Access Violation 错误的解决方法

    一般是因为eaccelerator的问题,windows下容易出现这个问题。
    2010-01-01
  • 你真的了解PHP中的引用符号(&)吗

    你真的了解PHP中的引用符号(&)吗

    php的引用就是在变量或者函数、对象等前面加上&符号,但PHP中的&符号你真的了解吗?真的会用吗?下面随着小编来一起学习学习吧
    2021-05-05
  • PHP编程实现阳历转换为阴历的方法实例

    PHP编程实现阳历转换为阴历的方法实例

    这篇文章主要介绍了PHP编程实现阳历转换为阴历的方法,结合具体实例形式分析了php阴历操作类的定义与使用技巧,需要的朋友可以参考下
    2017-08-08
  • PHP和JS之间的数据交互并处理

    PHP和JS之间的数据交互并处理

    最近在开发Web应用程序时,经常会涉及到PHP与JS之间的数据传递,特别是传递复杂的数据结构,如数组。本文主要介绍如何使用PHP传递数组给JS,并在JS中使用这些数据
    2023-04-04
  • PHP 程序员应该使用的10个组件

    PHP 程序员应该使用的10个组件

    作为一个PHP程序员,你应该知道PHP有着最大的代码库。所以无论你想在程序中添加什么模块,肯定能找到开源解决方案。
    2009-10-10
  • php文件上传、下载和删除示例

    php文件上传、下载和删除示例

    这篇文章主要为大家详细介绍了php文件上传、下载和删除示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • PHP中VC6、VC9、TS、NTS版本的区别与用法详解

    PHP中VC6、VC9、TS、NTS版本的区别与用法详解

    ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查
    2013-10-10
  • PHP设计模式中观察者模式讲解

    PHP设计模式中观察者模式讲解

    本文实例讲述了PHP设计模式之观察者模式定义与用法。分享给大家供大家参考,观察者模式 当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新
    2022-11-11
  • 详解PHP中array_rand函数的使用方法

    详解PHP中array_rand函数的使用方法

    大家都知道array_rand是数组随机函数了,今天看到一个站长简单的介绍array_rand性能了,于是把许久没写的php再来简单的看看,我们一起来看看array_rand函数用法吧。有需要的朋友们可以参考学习。
    2016-09-09

最新评论