go - 在 Golang exec 中使用管道运行命令

标签 go ffmpeg

我正在尝试从 here 中获取示例正在使用 phantomjs 录制网页并将标准输出(图像)通过管道传输到 ffmpeg 命令以创建视频。声明您需要运行的命令是:

phantomjs runner.js | ffmpeg -y -c:v png -f image2pipe -r 25 -t 10  -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart dragon.mp4

如果我直接在终端中运行该命令的类似版本,我可以让它正常工作。问题是我需要通过 Golang os/exec 运行上面的命令包裹。随着:

cmd := exec.Command(parts[0], parts[1:]...)

方法,第一个参数是正在执行的命令的基本可执行文件,它不支持管道。我想让它在一个命令中工作,这样我就不必将所有图像写入文件,然后运行第二个 ffmpeg 命令来读取所有这些图像。有什么建议么?

最佳答案

我想这对你有帮助。

     cmd := "phantomjs runner.js | ffmpeg -y -c:v png -f image2pipe -r 25 -t 10  -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart dragon.mp4"
     output, err := exec.Command("bash","-c",cmd).Output()
     if err != nil {
            return fmt.Sprintf("Failed to execute command: %s", cmd)
     }
     fmt.Println(string(output))

关于go - 在 Golang exec 中使用管道运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39496572/

相关文章:

go - GCP发布/订阅:使用goroutines使多个订户在一个应用程序中运行

http - 如何从中间件设置日志记录上下文?

opencv - 视频文件打不开?(opencv 3.1.0 windows)

go - Go语言保存Json数据

memory-management - 使用 `make` 并发内存分配?

go - 如何在golang中将字节附加到字节数组?不是字节数组到字节数组 slice 等

linux - Linux 中的 Ffmpeg 错误

python - 一个接一个地运行两个ffmpeg命令

c++ - 为什么只有在使用 ffmpeg 关闭输入文件时有时才会崩溃

ffmpeg - 一个关于ffmpeg输入文件列表的问题