gpt4 book ai didi

php - 你如何在ffmpeg中进行两次转换?

转载 作者:行者123 更新时间:2023-12-04 23:30:56 25 4
gpt4 key购买 nike

我尝试了以下方法:

$ffmpeg = "/path/to/ffmpeg";
$source = "/path/to/video/source.mp4";
$dest = "/path/to/video/dest.mp4";
$format = "%s > %s 2>&1 & echo $! >> %s";
$a_rate = "44100";
$a_bitrate = "96k";
$v_bitrate = "3000k";
$resolution = "1280x720";
$outputfile = "/path/to/output.txt";
$pidfile = "/path/to/pid.txt";

exec(sprintf($format, $ffmpeg . " -i " . $source . " -vcodec libx264 -s " . $resolution . " -b " . $v_bitrate . " -pass 1 /dev/null && \ " . $ffmpeg . " -i " . $source . " -acodec libfaac -ar " . $a_rate . " -ab " . $a_bitrate . " -vcodec libx264 -s " . $resolution . " -b " . $v_bitrate . " -pass 2 " . $dest, $outputfile, $pidfile));

如果我做一次传球,一切都会完美,但尝试做两次这样的传球是行不通的。正确的方法是什么?

更新:
exec(sprintf($format, $ffmpeg . " -i " . $source . " -pass 1 -vcodec libx264 -s " . $resolution . " -b " . $v_bitrate . " -passlogfile " . $pass . " -f rawvideo -y /dev/null", $outputfile, $pidfile));
exec(sprintf($format, $ffmpeg . " -y -i " . $source . " -pass 2 -acodec libfaac -ar " . $a_rate . " -ab " . $a_bitrate . " -vcodec libx264 -s " . $resolution . " -b " . $v_bitrate . " -passlogfile " . $pass . " " . $dest, $outputfile, $pidfile));

最佳答案

问题是使用 $format = "%s > %s 2>&1 & echo $! >> %s"; 将 ffmpeg 命令置于后台。导致它们同时运行,并且当时没有完成第二遍使用的日志文件。后台处理可以很好地使用单次传递,因为它没有依赖项,但我认为需要更复杂的解决方案来后台处理两次传递转换。我打算使用排队系统。

关于php - 你如何在ffmpeg中进行两次转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com