PHP 使用 FFMpeg 怎么监控视频转化完成了呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yao978318542
V2EX    问与答

PHP 使用 FFMpeg 怎么监控视频转化完成了呢?

  •  
  •   yao978318542 2017 年 2 月 25 日 3720 次点击
    这是一个创建于 3251 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言    2017 年 2 月 25 日
    解决了 获取原始视频的时长 然后获取转码后视频的时长 对比一下就 OK
    19 条回复    2018-02-20 05:35:53 +08:00
    bdbai
        1
    bdbai  
       2017 年 2 月 25 日 via Android
    怎么执行的 FFmpeg ?
    yao978318542
        2
    yao978318542  
    OP
       2017 年 2 月 25 日
    @bdbai #1 exec("FFmpeg 命令")
    isCyan
        3
    isCyan  
       2017 年 2 月 25 日
    我想是把 ffmpeg 的日志输出到文件里,然后读取文件,每个任务一个日志文件
    YanwenSun
        4
    YanwenSun  
       2017 年 2 月 25 日 via Android
    可以用返回值吧
    yao978318542
        5
    yao978318542  
    OP
       2017 年 2 月 25 日
    @isCyan #3 太麻烦了
    xiaoz
        6
    xiaoz  
       2017 年 2 月 25 日
    @yao978318542 启用了 exec 函数会不会有风险?
    yao978318542
        7
    yao978318542  
    OP
       2017 年 2 月 25 日
    @xiaoz #6 会 但是我不会安装 php-FFMpeg 啊 哎你会安装吗?
    qiayue
        8
    qiayue  
    PRO
       2017 年 2 月 25 日
    yao978318542
        9
    yao978318542  
    OP
       2017 年 2 月 25 日
    @qiayue #8 直接下载下来 放到项目里面引用就行吗? 还是要怎么安装呢?求指点
    herozzm
        10
    herozzm  
       2017 年 2 月 25 日
    既然都 exec 了,在执行完 FFmpeg 后,再接着用一个命令将该视频转换状态改成已经完成即可
    FFmpeg xxx.mp4 && 修改完成的状态的命令
    CoderRunner
        11
    CoderRunner  
       2017 年 2 月 25 日
    string exec ( string $command [, array &$output [, int &$return_var ]] )
    可以用$return_val 判断吧
    yao978318542
        12
    yao978318542  
    OP
       2017 年 2 月 25 日
    @CoderRunner #11 然而他不会返回任何东西
    gouchaoer
        13
    gouchaoer  
       2017 年 2 月 25 日 via Android
    首先不能在 php-fpm 里面做这事,你需要另开 php-cli 完成这件事,通知通过 redis 最简单
    isCyan
        14
    isCyan  
       2017 年 2 月 25 日
    @yao978318542 #7 composer 大法好同志你为什么不上 composer 呢
    8 楼那个是 node.js 的
    yao978318542
        15
    yao978318542  
    OP
       2017 年 2 月 25 日
    @isCyan #14 关服务器的哥们不在啊 我也想啊 哎
    CoderRunner
        16
    CoderRunner  
       2017 年 2 月 25 日
    @yao978318542
    $return_val 的说明, 这个并不是命令执行的返回值的, 正常结束$return_val 是 0

    If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.
    fuxiaopang
        17
    fuxiaopang  
       2017 年 2 月 25 日
    ```
    cmd = "/root/bin/ffmpeg -i /data/origin/{$uploadVideo->id}_.mp4 " .
    "-filter:v \"scale=iw*min(1920/iw\\,1080/ih):ih*min(1920/iw\\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\\,1080/ih))/2:(1080-ih*min(1920/iw\\,1080/ih))/2\" " .
    "-b:v 4000k -minrate 3500k -maxrate 10000k -bufsize 4000k " .
    "-r 25 -g 25 -c:v libx264 -ar 48000 -b:a 192k -strict -2 /data/origin/{$uploadVideo->id}_o.mp4 -y";
    exec($cmd." 2>&1", $out, $ret);

    if ($ret) { // Error
    $uploadVideo->status = Video::STATUS_FINISH_DOWN;
    $uploadVideo->save();
    $cmd = "rm -rf /data/encode/{$uploadVideo->id}_*";
    shell_exec($cmd);
    Email::report('ENCODE VIDEO ERR', print_r($out, true));
    return false;
    }
    ```

    这个是我写的用来转换自动加遮幅到 1080P 4M H264 的代码,这样上传到 youku 刚好是 1080
    yao978318542
        18
    yao978318542  
    OP
       2017 年 2 月 27 日
    @fuxiaopang #17 会返回进度吗?
    3IOhG7M0knRu5UlC
        19
    3IOhG7M0knRu5UlC  
       2018 年 2 月 20 日 via Android
    命令行束就行了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1028 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 18:59 PVG 02:59 LAX 10:59 JFK 13:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86