当命令等待ffmpeg完成时,bash脚本失败

时间:2013-11-05 17:00:50

标签: python node.js bash ffmpeg avconv

在ubuntu 13.04中有一个为某些事件启动的node.js服务器,这样的脚本:

#! /bin/bash
...
...

avconv -i "$dir$video" -ss "$ss.000" -t $tt -threads 0 "$folder/$dif.webm"

y_uid=$(/app/youtube-uploader "$folder/$dif.webm" "$label" "$desc" | grep 'watch' | sed 's/v=/ /g' | awk '{print$2}')

echo "$y_uid" >> ~/log/yt.log
...
...

如果avconv(ffmpeg)处理一个小文件(编码少于30分钟),脚本工作正常,但如果avconv运行了几个小时,则下一个命令“... youtube-uploader ...”(即一个基于python的应用程序)不起作用(但如果我尝试手动启动它,它会很好)。

我还尝试在循环中启动下一个命令,检查变量“$ y_uid”是否为空,因此它会尝试重复youtube-uploader,直到找到正确的值,但它会继续保持在背景,并将永远尝试..(这很奇怪,因为如果我尝试手动启动命令,它工作正常..)。

总结一下,如果avconv运行了几个小时,avconv进程将生成一个无法识别或锁定的文件或同一脚本的ghost文件(但如果命令在脚本外部启动,则会被识别),如果它是一个小编码,它会正常工作。

不幸的是很难调试或测试,因为我每次都要等几个小时,请帮忙!

更新

我认为问题与node.js的缓冲区大小或存储ffmpeg标准输出的其他缓冲区有关。只是纠正

avconv -i "$dir$video" -ss "$ss.000" -t $tt -threads 0 "$folder/$dif.webm"

avconv -i "$dir$video" -ss "$ss.000" -t $tt -threads 0 "$folder/$dif.webm" &> /dev/null

因此所有ffmpeg输出都没有填满缓冲存​​储器并且每件事情都顺利

0 个答案:

没有答案