0

在 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输出都没有填满缓冲内存,一切顺利

4

0 回答 0