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 プロセスは、認識されていない、またはロックされていないファイル、または同じスクリプトのゴースト ファイルを生成します (ただし、コマンドがスクリプトの外部で起動された場合は認識されます)。小さなエンコーディング、それはうまくいきます。

残念ながら、デバッグやテストが困難です。毎回何時間も待つ必要があるため、助けてください!

アップデート

この問題は、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