1

mmsストリームを聞いて録音するためのアプリケーションに取り組んでいます。現在、bash スクリプトで上司の概念実証を行っています。記録するには、mimms を使用したいと思います。

mimms <mms://url> download_to_file

mimms からの出力は次のとおりです。

connecting
<mms://url> <=> download_to_file
1MB / 10 MB (20 kB/s, 00:01:30 remaining)

最後の行は、約 1 秒に 1 回更新されるステータス メッセージです。

この問題は、不安定なネットワークを扱うときに発生します。ネットワークが切断されると、mimms がハングします。download_to_file に新しいデータが追加されることはありません (ファイル サイズは一定で、増加しません) が、mimms は終了せず、ネットワーク接続が再確立されたときにダウンロードを再開することさえしません。ハングするだけで、ステータス メッセージの新しい行も出力しません。

mimms から新しい行が出力されないときにそれを検出し、mimms を強制終了して、ダウンロードを再開したいと思います。

mimms -r mms://url download_to_file

しかし、これらの条件をテストする方法がわかりません。これを処理する方法についてアドバイスをいただければ幸いです。

4

2 に答える 2

2

バックグラウンドで mimms を起動し (&コマンドに a を追加することにより)、スクリプトをループで待機させ、ダウンロード ファイルのサイズを定期的にチェックすることができます。mimms がまだ実行されているが、ファイル サイズが変わらない場合は、mimms がハングしていると想定して強制終了します。

于 2012-04-18T22:22:35.253 に答える
0

私は、mimmsが生成するファイルのサイズではなく、mimmsからの出力に依存する解決策を自分で思いつきました。

  1. プログラムをバックグラウンドで起動し、出力をmimmsからログファイルにリダイレクトします
  2. そのファイルの最後の行を定期的に読み取る
  3. 同じ行が2回続けて表示される場合は、mimmを強制終了して再起動します
  4. mimmsが「ダウンロードが完了しました!」と出力するまでこれを繰り返します。

    LAST1="a"
    LAST2="b"
    MSG="Starting download of $PATH1"
    until [ "$LAST1" = "Download complete!" ]; do
        echo $MSG
        mimms -r $URL "$PATH1" >> log 2>&1 &
        PID=$!
        echo $PID
    
        until [ "$LAST1" = "$LAST2" ]; do
            LAST2="$LAST1"
            sleep 60
            LAST1=$(tail -1 log)
            echo "$LAST1"
        done
        kill $PID
        MSG="Download incomplete. Retry..."
    done
    
于 2012-05-01T22:43:02.207 に答える