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 プロセスは、認識されていない、またはロックされていないファイル、または同じスクリプトのゴースト ファイルを生成します (ただし、コマンドがスクリプトの外部で起動された場合は認識されます)。小さなエンコーディング、それはうまくいきます。
残念ながら、デバッグやテストが困難です。毎回何時間も待つ必要があるため、助けてください!
アップデート
この問題は、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出力がバッファメモリをいっぱいにすることはなく、すべてがうまくいきます