zoukankan      html  css  js  c++  java
  • FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制

    转载:http://blog.csdn.net/zm2714/article/details/7916440

    给朋友做的一个项目中,涉及到上传视频、转换视频、自动截取已上传视频内容中的一帧做为缩略图片。本篇记录在完成这篇项目过程中的所掌握的一些知识以及经验教训。

    上传视频这块暂时不说了,在项目中关于上传这一块涉及进度条的问题,总觉得的不够完美。虽然目前已解决这一块内容,但上传大文件来说,在某些方面仍不够100%的符合要求。有时间在整理这一块。在这篇文章中,由于是在整理这个项目内容,所以有关上传方面就一带而过。

    自动转换已上传的视频

    在这个项目中,一开始我是将判断进度这一块放在服务器端,理想状态是上传时显示上传进度,上传成功后,进度条内容改为:正在转换视频,请稍后...。但有时候进度条没有到达100%时就在某一值上卡住,直到转换视频成功为止。所以,我将判断进度这一块放到本地的js中处理。总之,视频上传成功后,开始转换视频。

    转换视频部分代码

    $id=CheckNum(GetForm("id"),0,-1);
    $file=GetForm("file");
    $ext=GetForm("ext");
    if($id>0){
      $path=$_moqian_video_path.$id;
    }else{
      $path=$_moqian_video_path.$_SESSION['MM']['sid'];
    }
    $path=rtnRealPath($path);//返回绝对路径,如D:/wwwroot/test/upload/...../
    if($ext!='flv'){
      exec('..cmdffmpeg.exe -i '.$path.$file.'.'.$ext.' -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 '.$path.$file.'.flv',$out,$status);
      unlink($path.$file.'.'.$ext);//删除原文件
      if($status==0){
        echo "success";
      }else{
        echo "0";//失败
      }
    }else{
      echo 'success';
    }

    转换视频的命令

    exec('..cmdffmpeg.exe -i '.$path.$file.'.'.$ext.' -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 '.$path.$file.'.flv',$out,$status);
    $status是执行的结果状态。值为0表示转换成功,否则转换失败。

    ffmpeg.exe转换视频的参数命令请百度。

    这里有几个问题得说一下

    1、网上有很多版本的ffmpeg.exe,经过测试,好多都不能使用。我这里提供我正在使用的ffmpeg.exe及相关文件下载。
    2、ffmpeg转换视频参数的注意事项

    //经过多次测试发现
    $a='../aaa/ffmpeg.exe';//这种方式错误!不能用“/”
    $a='D:wwwrootdingjiflvffmpeg.exe';//这种方式错误!不能用“绝对的物理路径”
    $a='apiffmpeg.exe';//错误 不能以开头
    对于ffmpeg.exe文件的调用不能用上述路径,正确用法如下:
    $a='aaaffmpeg.exe';//成功(当前目录的下级目录)
    $a='..apiffmpeg.exe';//成功(当前目录的上级目录或其它目录)
    $b='D:wwwrootdingjiflv1.flv';//绝对路径
    $cmd=$a.' -i ../api/a.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240../1f.flv';
    exec($cmd);

    上面蓝色部分可以用绝对路径,也可以用相对路径。在windows上测试“正斜线”和“反斜线”都可以。

    未完待续...

  • 相关阅读:
    Yii CGridView 之 SQL 语句
    Yii的srbac拓展中“用户已经获授权项”无法查看
    MyBatis通过注解实现映射中的嵌套语句和嵌套结果
    MyBatis一对多映射简单查询案例(嵌套结果)
    MyBatis绑定Mapper接口参数到Mapper映射文件sql语句参数
    将前端请求中的数据绑定到Spring MVC响应方法中参数的四种方法
    MyBatis一对多映射简单查询案例(嵌套Mapper映射文件中的sql语句)
    Spring MVC与html页面的交互(以传递json数据为例)
    使用Spring JDBC连接数据库(以SQL Server为例)
    spring mvc访问html页面404报错解决
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/5175611.html
Copyright © 2011-2022 走看看