dongliao2241
2018-05-23 20:57
浏览 289
已采纳

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

I run this command in exec () and it creates two FFMPEG processes one at the same time as the other but with different PID. Is this behavior normal? When I run the code directly in the shell this does not happen.

$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);

Example of the two processes created

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

图片转代码服务由CSDN问答提供 功能建议

我在 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: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: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:aac_adtstoasc -vcodec copy video.mp4 
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douweng3564 2018-05-23 21:06
    已采纳

    Yes, it's normal. exec() executes the command as a shell command, so it has to create a sh process. The shell then forks a child process to run the program.

    Some shells will reuse their own process for the last command before exiting, but apparently the shell on your system doesn't do this. The overhead of that extra process is generally negligible, so it's not a big deal.

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题