我们建立了一个类似于 youtube 的服务。使用此处另一篇文章中的此脚本,使用 ffmpeg 进行转换也可以正常运行:
#!/bin/bash
pipe=/tmp/ffmpeg
trap "rm -f $pipe" EXIT
# creating the FIFO
[[ -p $pipe ]] || mkfifo $pipe
while true; do
# can't just use "while read line" if we
# want this script to continue running.
read line < $pipe
# now implementing a bit of security,
# feel free to improve it.
# we ensure that the command is a ffmpeg one.
[[ $line =~ ^ffmpeg ]] && bash <<< "$line"
done
当我一一发送到命名管道时,这非常有效。当我同时发送多个时,第二个将终端排队到第一个完成的点。如果尝试超过 2 次,则第三次将不会被转码。
因此,我尝试使用后台发送解决方法以释放终端(只需删除 echo 命令并关闭 ssh 连接)但这不起作用,然后我使用 screen -X 但也没有运气。也许有人有一个好主意来处理这个问题。
我想做的是:每个需要转码的上传视频都会向命名管道发送回声。FIFO 应该匹配但不阻塞终端。所以我认为我需要一些东西来真正排队 ffmpeg 输入。
最亲切的问候弗朗索瓦