如何检查ffmpeg是否使用PHP编码视频?

时间:2011-01-25 21:58:34

标签: php ffmpeg

如果使用ffmpeg对视频进行编码,我需要使用PHP检查特定代码。我只需要一个简单的真/假检查。如果编码完成则为True,如果未完成则为false。语言也是PHP,我确实安装了ffmpeg-php。

更多信息:我在Linux上。

代码低于

convertToFlv( $input, $output );

function convertToFlv( $input, $output ) {

echo "Converting $input to $output";

$command = "ffmpeg -y -i $input -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -level 41 -crf 20 -bufsize 20000k -maxrate 25000k -g 250 -r 20 -s 640x480 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +brdo+dct8x8+bpyramid -me umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 $output";

shell_exec( $command );

}

3 个答案:

答案 0 :(得分:3)

您可以在php exec()中的ffmpeg之后添加另一行代码,以在命令行中运行php页面。

用“;”结束你的ffmpeg行并键入“php”,然后键入要运行的php脚本的绝对位置。您可以添加一个get变量,其中包含您要等待转换的视频的ID:

$cmd = "ffmpeg -i[SOURCE FILE] [OUTPUT FILE]; php /public_html/etc/ffmpegComplete.php?videoID=101";

exec( $cmd );

答案 1 :(得分:1)

也许你可以告诉我们你是如何开始编码的?你正在运行什么操作系统?

假设您在Unix / POSIX / Linux系统上以正确的方式进行操作 - 即您在单独的进程组中创建了一个新进程并且无法直接读取返回值,那么为什么不呢?只需将ffmpeg二进制文件包装在一个简单的sh脚本中,例如:

#!/bin/bash

OUTDIR=/var/www/html/video

/usr/local/bin/ffmpeg -s sqcif -i $1 ${OUTDIR}/${2}.mpeg`

RETURNED=$?

echo ${RETURNED} >${OUTDIR}/${2}.completion

...然后你可以看到脚本何时完成,以及它是否成功运行。

答案 2 :(得分:1)

简单的答案是检查进程是否仍在运行,这意味着要么过滤ps的输出,要么跟踪ffmpeg进程的PID并通过pcntl_waitpid进行检查。