• 注册
    • 今日签到
    • 连续签到
  • 游骑兵
    今天 00:00
    连续13
    关注
  • huiwu
    今天 01:56
    连续1
    关注
  • hanaicc
    今天 02:43
    连续3
    关注
  • xinle
    今天 04:54
    连续14
    关注
  • xinle
    很开心曾经在水晶之家与大家寻梦
    连续14
    关注
  • 连续13
    关注
  • 连续3
    关注
  • 连续1
    关注
  • 网站维护 关注:2 内容:14

    通过FFmpeg获取视频相关信息,需要在服务器端安装FFmpeg

  • 查看作者
  • 打赏作者
  • 拉黑名单
    • 怎么安装ffmpeg自行百度吧~

      define('FFMPEG_CMD', '/usr/local/bin/ffmpeg -i "%s" 2>&1');
      /**
      * 使用ffmpeg获取视频信息
      * @param String $file 视频文件
      * @return Array
      */
      function getVideoInfo($file){
      ob_start();
      passthru(sprintf(FFMPEG_CMD, $file));
      $video_info = ob_get_contents();
      ob_end_clean();
      // 使用输出缓冲,获取ffmpeg所有输出内容
      $ret = array();
      // Duration: 00:33:42.64, start: 0.000000, bitrate: 152 kb/s
      if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/", $video_info, $matches)){
      $ret['duration'] = $matches[1]; // 视频长度
      $duration = explode(':', $matches[1]);
      $ret['seconds'] = $duration[0]*3600 + $duration[1]*60 + $duration[2]; // 转为秒数
      $ret['start'] = $matches[2]; // 开始时间
      $ret['bitrate'] = $matches[3]/8; // bitrate 码率 单位kb
      $ret['bitrater'] = $ret['bitrate']*$ret['seconds']/1024; // bitrate 码率 单位kb
      $ret['bitraterr'] = $ret['bitrater']*0.9765625; // bitrate 码率 单位kb
      }
      // Stream #0:1: Video: rv20 (RV20 / 0x30325652), yuv420p, 352x288, 117 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
      if(preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $video_info, $matches)){
      $ret['vcodec'] = $matches[1]; // 编码格式
      $ret['vformat'] = $matches[2]; // 视频格式
      $ret['resolution'] = $matches[3]; // 分辨率
      list($width, $height) = explode('x', $matches[3]);
      $ret['width'] = $width;
      $ret['height'] = $height;
      }
      // Stream #0:0: Audio: cook (cook / 0x6B6F6F63), 22050 Hz, stereo, fltp, 32 kb/s
      if(preg_match("/Audio: (.*), (\d*) Hz/", $video_info, $matches)){
      $ret['acodec'] = $matches[1]; // 音频编码
      $ret['asamplerate'] = $matches[2]; // 音频采样频率
      }
      if(isset($ret['seconds']) && isset($ret['start'])){
      $ret['play_time'] = $ret['seconds'] + $ret['start']; // 实际播放时间
      }
      $ret['size'] = filesize($file); // 视频文件大小
      $video_info = iconv('gbk','utf8', $video_info);
      return array($ret, $video_info);
      }
      $video_info = getVideoInfo('http://cdn.babylyf.com/'. get_post_meta($post->ID, 'video_name', true) .'.mp4');?>
      <blockquote>视频编号:<?php echo get_post_meta($post->ID, 'video_name', true) ;?>
      &nbsp;&nbsp;分辨率:<?php echo $video_info[0]['resolution']; ?>
      &nbsp;&nbsp;时长:<?php
      $video_info[0]['duration'] = str_replace('00:','',$video_info[0]['duration']);
      echo $video_info[0]['duration']; ?>
      &nbsp;&nbsp;bitrate码率:<?php echo round($video_info[0]['bitrate'],2); ?>KB/s
      &nbsp;&nbsp;采样频率:<?php echo $video_info[0]['asamplerate']; ?>Hz
      &nbsp;&nbsp;大小:<?php echo round($video_info[0]['bitraterr'],2); ?>Mb

      你需要登录,才能进行发帖操作
    • 帖子间隔 侧栏位置: