gpt4 book ai didi

php - 使用子流程传递时不接受两个输入

转载 作者:行者123 更新时间:2023-12-04 22:52:50 25 4
gpt4 key购买 nike

我试图让两个子流程合二为一并通过直通输出。我的目标是可以下载 2 个文件(一个视频和一个音频)并将它们与 ffmpeg 结合起来。

header('Content-Description: File Transfer');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header("Content-Disposition: attachment; filename=\"ok.mp4\"");
header("Content-Type: application/octet-stream");

$cmd = "<(youtube-dl -f bestvideo[ext=mp4] --no-part --no-cache-dir --no-warnings --no-progress -o - https://www.youtube.com/watch?v=6Dh-RL__uN4) <(youtube-dl -f bestaudio[ext=m4a] --no-part --no-cache-dir --no-warnings --no-progress -o - https://www.youtube.com/watch?v=6Dh-RL__uN4) | ffmpeg -i - -i pipe:3 -movflags frag_keyframe+empty_moov+faststart -frag_duration 3600 -c:v copy -c:a copy -f mp4 -";

$cmd = passthru($cmd, $status);
我的错误是:-bash:/dev/fd/63: Permission denied

最佳答案

当你使用

 <(command) 
您在括号内执行命令,整个内容被文件描述符替换
它连接到标准输出。/dev/fd/63 是包含 youtube-dl 输出的管道 command在您的情况下被管道替换为/dev/fd/63 并尝试将/dev/fd/63 作为可执行文件调用,但不是。
它是 youtube-dl 命令的实际输出
所以我建议要么保存到 2 个文件,然后将它们通过管道传输到 ffmpep,或者使用 cat下载的文件并将其通过管道传输到 ffmpeg,然后对第二个文件执行相同的操作

关于php - 使用子流程传递时不接受两个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65820232/

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