所有视频格式转换为flv

class EncodeFlv{
 
 private static $instance;
 
 private $config;
 
 private $ffmpeg,$mdi;
 
 private $strResult = array(),$runningResult = array();
 
 private $from,$to;
 
 private $cmd = array();
 
 public static function instance($from = '',$to = ''){
  if (!function_exists('exec')){
   die('视频转换需求函数被禁用');
  }
  if (!$from){
   die('未提供来源文件');
  }elseif(!is_file($from)){
   die('无效来源文件');
  }
  if (!$to){
   $filedir = dirname($from);
   $filename = basename($from,'.'.pathinfo($from,PATHINFO_EXTENSION));
   $to = $filedir.DIRECTORY_SEPARATOR.$filename.'.flv';
  }elseif('flv' != pathinfo($to,PATHINFO_EXTENSION)){
   $to .= '.flv';
  }
  if(is_file($to)){
   die('目标同名文件已存在');
  }
  
  self::$instance = new self;
  list(self::$instance->from,self::$instance->to) = array($from,$to);
  return self::$instance;
 }
 
 public function config(array $config){
  //var_dump($config);
  //echo is_file($config['ffmpeg']);
  if (isset($config['ffmpeg']) && is_file($config['ffmpeg'])){
   $this->ffmpeg = $config['ffmpeg'];
  }else{
   die('请传入正确的ffmpeg.exe工具路径');
  }
  if (isset($config['mdi']) && is_file($config['mdi'])){
   $this->mdi = $config['mdi'];
  }else{
   die('请传入正确的mdi.exe工具路径');
  }
  $this->config = $config;
  return $this;
 }
 
 public function encode($del = true){
  set_time_limit(0);
  
  if (!is_array($this->config)){
   $config = array(
    'ffmpeg'=>'exec'.DIRECTORY_SEPARATOR.'ffmpeg.exe',
    'mdi'=>'exec'.DIRECTORY_SEPARATOR.'flvmdi.exe'
   );
   $this->config($config);
  }
  
  $this->cmd['ffmpeg'] = $this->ffmpeg.' -i '.$this->from.' '.$this->to;
  $this->cmd['mdi'] = $this->mdi.' '.$this->to;
  
  $strResult[] = exec($this->cmd['ffmpeg'],$runningResul[]);
  if (!is_file($this->to)){
   die(var_dump($strResult,$runningResul));
  }
  $strResult[] = exec($this->cmd['mdi'],$runningResul[]);
  
  if ($del){
   @unlink($this->from);
  }
  
  return $this->to;
 }
}

 

用法:

$content = EncodeFlv::instance(源文件路径)->config(array(

'ffmpeg'=>ffmpeg.exe的路径,

'mdi'=>flvmdi.exe的路径

))->encode();

 

ffmpeg.exe和flvmdi.exe另请下载,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值