Exec()为FFMPEG创建两个不同的进程

时间:2018-05-23 20:57:01

标签: php shell ffmpeg

我在exec ()中运行此命令,它与另一个同时创建两个FFMPEG进程但具有不同的PID。这种行为是否正常?当我直接在shell中运行代码时,这不会发生。

$ffmpeg = "/home/user/bin/ffmpeg -hide_banner -loglevel verbose -n -i https://sitelink/list.m3u8 -map 0:4 -map 0:5 -acodec copy -bsf:a aac_adtstoasc -vcodec copy video.mp4 1> log.txt  2>&1";

    exec($ffmpeg, $output, $var);

创建的两个进程的示例

user+ 24414 24413  0 13:42 pts/2    00:00:00 sh -c /home/user/bin/ffmpeg -hide_banner -loglevel verbose -n -i https://sitelink/list.m3u8 -map 0:4 -map 0:5 -acodec copy -bsf:a aac_adtstoasc -vcodec copy video.mp4 1> log.txt  2>&1
user+ 24415 24414  1 13:42 pts/2    00:00:00 /home/user/bin/ffmpeg -hide_banner -loglevel verbose -n -i https://sitelink/list.m3u8 -map 0:4 -map 0:5 -acodec copy -bsf:a aac_adtstoasc -vcodec copy video.mp4

1 个答案:

答案 0 :(得分:3)

是的,这是正常的。 exec()以shell命令的形式执行命令,因此必须创建sh进程。 shell然后分叉子进程来运行程序。

有些shell会在退出之前为最后一个命令重用自己的进程,但显然系统上的shell不会这样做。这个额外过程的开销通常可以忽略不计,所以这不是什么大问题。

相关问题