当前位置:Gxlcms > PHP教程 > 用php读取flv文件的播放时间长度详解

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

时间:2021-07-01 10:21:17 帮助过:4人阅读

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

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

  1. <?php
  2. // +----------------------------------------------------------------------+
  3. // | PHP version 4&5 |
  4. // +----------------------------------------------------------------------+
  5. // | Copyright (c) 2007 JackieWangjackieit@hotmail.com |
  6. // +----------------------------------------------------------------------+
  7. // | This source file's function is to get the time length of flv |
  8. // | main function getTime param:$name The flv file you want to get |
  9. // +----------------------------------------------------------------------+
  10. function BigEndian2Int($byte_word, $signed = false) {
  11. $int_value = 0;
  12. $byte_wordlen = strlen($byte_word);
  13. for ($i = 0; $i < $byte_wordlen; $i++) {
  14. $int_value += ord($byte_word{$i}) * pow(256, ($byte_wordlen - 1 - $i));
  15. }
  16. if ($signed) {
  17. $sign_mask_bit = 0x80 << (8 * ($byte_wordlen - 1));
  18. if ($int_value & $sign_mask_bit) {
  19. $int_value = 0 - ($int_value & ($sign_mask_bit - 1));
  20. }
  21. }
  22. return $int_value;
  23. }
  24. function getTime($name){
  25. if(!file_exists($name)){
  26. return;
  27. }
  28. $flv_data_length=filesize($name);
  29. $fp = @fopen($name, 'rb');
  30. $flv_header = fread($fp, 5);
  31. fseek($fp, 5, SEEK_SET);
  32. $frame_size_data_length =BigEndian2Int(fread($fp, 4));
  33. $flv_header_frame_length = 9;
  34. if ($frame_size_data_length > $flv_header_frame_length) {
  35. fseek($fp, $frame_size_data_length - $flv_header_frame_length, SEEK_CUR);
  36. }
  37. $duration = 0;
  38. while ((ftell($fp) + 1) < $flv_data_length) {
  39. $this_tag_header = fread($fp, 16);
  40. $data_length = BigEndian2Int(substr($this_tag_header, 5, 3));
  41. $timestamp = BigEndian2Int(substr($this_tag_header, 8, 3));
  42. $next_offset = ftell($fp) - 1 + $data_length;
  43. if ($timestamp > $duration) {
  44. $duration = $timestamp;
  45. }
  46. fseek($fp, $next_offset, SEEK_SET);
  47. }
  48. fclose($fp);
  49. return $duration;
  50. }
  51. ?>

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

人气教程排行